Age | Commit message (Collapse) | Author | Files | Lines |
|
* NEWS: Mention --insn-width.
* objdump.c (insn_width): New.
(usage): Display --insn-width.
(option_values): Add OPTION_INSN_WIDTH.
(long_options): Add --insn-width.
(disassemble_bytes): Handle insn_width.
(main): Handle OPTION_INSN_WIDTH.
* doc/binutils.texi: Document --insn-width.
|
|
section in warning message.
(struct debug_display): Enable reloc processing for .debug_line
and .debug_ranges sections.
* readelf.c: Add --relocated-dump command line option to dump the
relocated contents of a specified section.
(request_dump): New function.
(parse_args): Use it.
(dump_section_as_bytes): Add parameter to indicate whether the
contents should be relocated.
(target_specific_reloc_handling): Add code for a R_MN10300_16
reloc found after a R_MN10300_SYM_DIFF reloc.
(debug_apply_relocations): Rename to apply_relocations.
(get_section_contents): New function. Replaces common code found
in dump_section_as_strings and dump_section_as_bytes.
* doc/binutils.texi: Document new command line option.
* NEWS: Mention the new feature.
|
|
of symbols in a given file.
(core_create_syms_from): New function - populates a symbol table
from the symbols found in a specified file.
* corefile.h: Prototype core_create_syms_from.
* gprof.c (long_options): Add --external-symbol-table.
(usage): Mention it.
(main): Initiailize external_symbol_table from
--external-symbol-table option. If set use it.
* gprof.texi: Document the new option.
* NEWS: Mention new feature added to gprof.
|
|
(AM_CPPFLAGS): New.
(LIBDL): New.
(ALL_MACHINES): Add cpu-plugin.lo.
(ALL_MACHINES_CFILES): Add cpu-plugin.c.
(BFD32_BACKENDS): Add plugin.lo.
(BFD32_BACKENDS_CFILES): Add plugin.c.
(libbfd_la_LIBADD): Add LIBDL
* archures.c (bfd_architecture): Add bfd_arch_plugin.
(bfd_plugin_arch): Declare.
* bfd-in.h (BFD_SUPPORTS_PLUGINS): New.
* bfd.c (bfd): Add plugin_data.
* config.bfd: Handle the plugin target.
* configure.in: Check for --enable-plugins.
(LT_INIT): Use the dlopen option.
* cpu-plugin.c: New.
* plugin.c: New.
* plugin.h: New.
* targets.c (plugin_vec): Declare.
(_bfd_target_vector): Add plugin_vec.
* Makefile.in: Regenerate.
* bfd-in2.h: Regenerate.
* configure: Regenerate.
* ar.c: Include plugin.h.
(main): Handle the --plugin option.
* nm.c: Include plugin.h.
(OPTION_PLUGIN): New.
(long_options): Add plugin.
(main): Handle OPTION_PLUGIN.
* NEWS: Mention the new feature.
* doc/binutils: Documement the new command line options.
* configure.in: Check for --enable-plugins.
* configure: Regenerate.
|
|
|
|
* Makefile.am (BFD32_LIBS): Add verilog.c.
(BFD32_LIBS_CFILES): Add verilog.c.
(verilog.lo): New build rule.
* Makefile.in: Rebuilt.
* targets.c: Add verilog support.
* bfd.c (tdata union): Add Verilog private data field.
* bfd-in2.h: Regenerate.
* bfdint.texi (BFD target vector miscellaneous): Mention verilog
flavour.
* NEWS: Mention verilog support added to bfd.
|
|
2009-04-17 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/10074
* coffcode.h (bfd_pei_p): New.
* config.bfd: Remove bfd_efi_bsdrv_ia32_vec,
bfd_efi_rtdrv_ia32_vec, bfd_efi_bsdrv_x86_64_vec,
bfd_efi_rtdrv_x86_64_vec, bfd_efi_bsdrv_ia64_vec and
bfd_efi_rtdrv_ia64_vec. Replace bfd_efi_app_ia32_vec,
bfd_efi_app_x86_64_vec and bfd_efi_app_ia64_vec with
i386pei_vec, x86_64pei_vec and bfd_pei_ia64_vec, respectively.
* configure.in: Remove bfd_efi_bsdrv_ia32_vec,
bfd_efi_rtdrv_ia32_vec, bfd_efi_bsdrv_x86_64_vec,
bfd_efi_rtdrv_x86_64_vec,
bfd_efi_bsdrv_ia64_vec and bfd_efi_rtdrv_ia64_vec. Replace
bfd_efi_ia64_vec with bfd_pei_ia64_vec.
* targets.c: Likewise.
* configure: Regenerated.
* libcoff.h: Likewise.
* Makefile.in: Likewise.
* efi-app-ia32.c: Removed.
* efi-app-x86_64.c: Likewise.
* efi-bsdrv-ia32.c: Likewise.
* efi-bsdrv-ia64.c: Likewise.
* efi-bsdrv-x86_64.c: Likewise.
* efi-rtdrv-ia32.c: Likewise.
* efi-rtdrv-ia64.c: Likewise.
* efi-rtdrv-x86_64.c: Likewise.
* efi-rtdrv-ia32.c: Likewise.
* efi-app-ia64.c: Moved to ...
* pei-ia64.c: This.
(TARGET_SYM): Set to bfd_pei_ia64_vec.
(TARGET_NAME): Set to pei-ia64.
* libpei.h (bfd_target_pei_p): Removed.
(bfd_target_pei_arch): Likewise.
(bfd_target_efi_app_p): Likewise.
(bfd_target_efi_app_arch): Likewise.
(bfd_target_efi_bsdrv_p): Likewise.
(bfd_target_efi_bsdrv_arch): Likewise.
(bfd_target_efi_rtdrv_p): Likewise.
(bfd_target_efi_rtdrv_arch): Likewise.
(bfd_pe_executable_p): Likewise.
* Makefile.am (BFD32_BACKENDS): Remove efi-app-ia32.lo,
efi-bsdrv-ia32.lo and efi-rtdrv-ia32.lo.
(BFD32_BACKENDS_CFILES): Remove efi-app-ia32.c, efi-bsdrv-ia32.c
and efi-rtdrv-ia32.c.
(BFD64_BACKENDS): Remove efi-app-ia64.lo, efi-bsdrv-ia64.lo,
efi-rtdrv-ia64.lo, efi-app-x86_64.lo, efi-bsdrv-x86_64.lo and
efi-rtdrv-x86_64.lo. Add pei-ia64.lo.
(BFD64_BACKENDS_CFILES): Remove efi-app-ia64.c, efi-bsdrv-ia64.c,
efi-rtdrv-ia64.c, efi-app-x86_64.c, efi-bsdrv-x86_64.c and
efi-rtdrv-x86_64.c. Add pei-ia64.c.
(efi-app-ia64.lo): Removed.
(efi-bsdrv-ia32.lo): Likewise.
(efi-rtdrv-ia32.lo): Likewise.
(efi-app-ia64.lo): Likewise.
(efi-bsdrv-ia64.lo): Likewise.
(efi-rtdrv-ia64.lo): Likewise.
(efi-app-x86_64.lo): Likewise.
(efi-bsdrv-x86_64.lo): Likewise.
(efi-rtdrv-x86_64.lo): Likewise.
(pei-ia64.lo): New.
* peicode.h (coff_swap_scnhdr_in): Replace bfd_pe_executable_p
with bfd_pei_p.
(arch_type): Removed.
(pe_arch): Likewise.
(pe_bfd_object_p): Just return coff_object_p.
* peXXigen.c (_bfd_XXi_swap_scnhdr_out): Replace
bfd_pe_executable_p with bfd_pei_p.
binutils/
2009-04-17 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/10074
* objcopy.c: Include coff/i386.h and coff/pe.h.
(pe_file_alignment): New.
(pe_heap_commit): Likewise.
(pe_heap_reserve): Likewise.
(pe_image_base): Likewise.
(pe_section_alignment): Likewise.
(pe_stack_commit): Likewise.
(pe_stack_reserve): Likewise.
(pe_subsystem): Likewise.
(pe_major_subsystem_version): Likewise.
(pe_minor_subsystem_version): Likewise.
(set_pe_subsystem): Likewise.
(convert_efi_target): Likewise.
(command_line_switch): Add OPTION_FILE_ALIGNMENT,
OPTION_HEAP, OPTION_IMAGE_BASE, OPTION_SECTION_ALIGNMENT,
OPTION_STACK and OPTION_SUBSYSTEM.
(copy_options): Likewise.
(copy_usage): Add --file-alignment, --heap, --image-base,
--section-alignment, --stack and --subsystem.
(copy_object): Set up PE parameters.
(copy_main): Process Add OPTION_FILE_ALIGNMENT,
OPTION_HEAP, OPTION_IMAGE_BASE, OPTION_SECTION_ALIGNMENT,
OPTION_STACK and OPTION_SUBSYSTEM. Convert EFI target to
PEI target.
* NEWS: Mention --file-alignment, --heap, --image-base,
--section-alignment, --stack and --subsystem command line
options for objcopy.
* doc/binutils.texi: Document --file-alignment, --heap,
--image-base, --section-alignment, --stack and --subsystem
command line options for objcopy.
|
|
* NEWS: Mention feature match between objdump and readelf for dumping
dwarf info.
* doc/binutils.texi (objdump): Document -W/--dwarf improvments to
objdump.
* objdump.c (usage): Update documentation for -W/--dwarf.
(enum option_values): Add OPTION_DWARF.
(long_options): --dwarf can accept arguments.
(dump_dwarf_section): Also check enabled field.
(main): Option -W can accept arguments, code moved to
dwarf.c and call dwarf_select_sections_all instead.
* readelf.c (process_section_headers): Remove do_debug_lines_decoded.
(parse_args): Move code to...
* dwarf.c (dwarf_select_sections_by_letters,
dwarf_select_sections_by_names): : ...here (new functions).
(do_debug_lines_decoded): Remove and replaced by ...
(FLAG_DEBUG_LINES_RAW, FLAG_DEBUG_LINES_DECODED): ... new macros.
(display_debug_lines): Adjust for previous change.
(dwarf_select_sections_all): New function.
(debug_displays): Add initializer for enabled field.
* dwarf.h (do_debug_lines_decoded): Remove.
Add prototypes for the new functions.
(struct dwarf_section_display): Add enabled field.
|
|
2009-02-03 H.J. Lu <hongjiu.lu@intel.com>
* NEWS: Move --as-needed change to ...
* ../ld/NEWS: Here.
ld/
2009-02-03 Alan Modra <amodra@bigpond.net.au>
* NEWS: Mention --as-needed change.
|
|
PR binutils/9784
* NEWS: Mention --prefix=PREFIX and --prefix-strip=LEVEL.
* doc/binutils.texi: Document --prefix=PREFIX and
--prefix-strip=LEVEL.
* objdump.c: Include "filenames.h".
(prefix): New.
(prefix_strip): Likewise.
(prefix_length): Likewise.
(usage): Add --prefix=PREFIX and --prefix-strip=LEVEL.
(option_values): Add OPTION_PREFIX and OPTION_PREFIX_STRIP.
(long_options): Likewise.
(show_line): Handle prefix and prefix_strip.
(main): Handle OPTION_PREFIX and OPTION_PREFIX_STRIP.
* readelf.c (PATH_MAX): Moved to ...
* sysdep.h: Here.
|
|
* NEWS: Mention --as-needed change.
ld/
* ld.texinfo (--as-needed): Update.
bfd/
* elflink.c (on_needed_list): New function.
(elf_link_add_object_symbols): Link in --as-needed libs if they
satisfy undefined symbols in other libs.
|
|
* dlltool.c (file scope): Added new globals identify_ms and
identify_strict. New typedef dll_name_list_type, and globals
identify_dll_name_list_head and identify_dll_name_list_tail. Added
new global identify_member_contains_symname_result.
(identify_append_dll_name_to_list): New function.
(identify_count_dll_name_list): New function.
(identify_print_dll_name_list): New function.
(identify_free_dll_name_list): New function.
(identify_search_archive): Changed signature to take function
pointer to operation to apply to each member, and data to pass on
to that function.
(identify_search_member): Changed signature to accept user data
from caller.
(identify_member_contains_symname): New function.
(identify_dll_for_implib): Rewrite. Now determines whether implib
is ms- or binutils- style, before searching sections for
dllname. Allows multiple dllnames.
(identify_process_section_p): Search alternate section for dllname
when implib is ms-style.
(identify_search_section): Add additional conditions to excludes
candidate sections from consideration.
(usage): Added --identify-strict.
(long_options): Added --identify-strict.
(main): Handle --identify-strict option.
* doc/binutils.texi: Document --identify-strict option.
* NEWS: Document --identify and --identify-strict options.
|
|
* dlltool.c (use_nul_prefixed_import_tables): New.
(make_head): Make prefix leading zero prefix element for
idata$4 and idata$5 dependent to new flag.
(usage): Add new option --use-nul-prefixed-import-tables.
(OPTION_USE_NUL_PREFIXED_IMPORT_TABLES): New.
(long_options): Add --use-nul-prefixed-import-tables.
(main): Likewise.
* doc/binutils.texi: Add new option documentation for
--use-nul-prefixed-import-tables.
* NEWS: Add new option.
|
|
* ppc-dis.c (powerpc_init_dialect): Do not set PPC_OPCODE_BOOKE
for -Mbooke.
(print_ppc_disassembler_options): Update usage.
* ppc-opc.c (DE, DES, DEO, DE_MASK): Remove.
(BOOKE64): Remove.
(PPCCHLK64): Likewise.
(powerpc_opcodes): Remove all BOOKE64 instructions.
gas/
* config/tc-ppc.c (parse_cpu): Remove booke64 support. Update
usage strings.
(ppc_setup_opcodes): Likewise, remove booke64 support.
* doc/c-ppc.texi (PowerPC-Opts): Remove -mbooke32 and -mbooke64.
* doc/as.texinfo (Overview): Likewise.
binutils/
* doc/binutils.texi (objdump): Update booke documentation.
* NEWS: Document user-visible changes to command line options.
|
|
2008-09-08 Tristan Gingold <gingold@adacore.com>
* NEWS: Add a marker for the 2.19 features.
gas/
2008-09-08 Tristan Gingold <gingold@adacore.com>
* NEWS: Add a marker for the 2.19 features.
binutils/
2008-09-08 Tristan Gingold <gingold@adacore.com>
* NEWS: Add a marker for the 2.19 features.
|
|
display_debug_lines_raw.
(display_debug_lines_decoded): New function. Displays the
interpreted contents of a .debug_line section.
(display_debug_lines): New function: Selects either a raw dump or
a decoded dump (or both) as requested by the user.
* dwarf.h (do_debug_lines_decoded): New extern.
* readelf.c: Add support for -wL or --debug-dump=decodedline
option to display the decoded contents of a .debug_line section.
* doc/binutils.texi: Document the new option.
* NEWS: Mention the new feature.
|
|
* bfd/archive.c (_bfd_find_nested_archive): New function.
(get_extended_arelt_filename): Add origin parameter.
(_bfd_generic_read_ar_hdr_mag): Deal with extended name
combined with a file offset.
(append_relative_path): New function.
(_bfd_get_elt_at_filepos): Deal with external members and
nested archives.
(bfd_generic_openr_next_archived_file): Thin archives.
(bfd_generic_archive_p): Recognize new magic string.
(adjust_relative_path): New function.
(_bfd_construct_extended_name_table): Construct extended
names for thin archive members.
(_bfd_write_archive_contents): Emit new magic string, skip
copying files for thin archives.
* bfd/bfd-in.h (bfd_is_thin_archive): New macro.
* bfd/bfd.c (struct bfd): New fields for thin archives.
* bfd/libbfd-in.h (struct areltdata): New field for thin archives.
* bfd/opncls.c (bfd_close): Delete BFDs for nested archives.
* binutils/ar.c (make_thin_archive): New global flag.
(map_over_members): Deal with full pathnames in thin archives.
(usage, main): Add 'T' option for building thin archives.
(replace_members): Pass thin archive flag to ar_emul_append.
* binutils/arsup.c (ar_open): Initialize new flag.
* binutils/binemul.c (ar_emul_append): Add new parameter for
flattening nested archives.
(do_ar_emul_default_append): New function.
(ar_emul_default_append): Factored out recursive code.
* binutils/binemul.h (ar_emul_default_append): Add new parameter.
(struct bin_emulation_xfer_struct): New parameter for ar_append.
* binutils/dlltool.c (gen_lib_file): Initialize thin archive flag.
* binutils/emul_aix.c (ar_emul_aix_internal): Add new flatten
parameter, currently unimplemented.
All callers changed.
* binutils/objcopy.c (copy_archive): Preserve thin archive flag.
* binutils/doc/binutils.texi: Update ar documentation.
* binutils/testsuite/binutils-all/ar.exp: Add thin archive tests.
* include/aout/ar.h (ARMAGT): New magic string for thin archives.
|
|
(long_options): Add -F/--file-offsets.
(objdump_print_addr_with_sym): If displaying file offsets, print
the offset of the given address.
(disassemble_bytes): If displaying file offsets, tell the user how
many zeroes are skipped and the file offset of the point where
dumping resumes.
(disassemble_section): Only display the name of the section if
data is going to be dumped from it.
(main): Handle new option. Produce error messages if the start or
stop addresses do not make sense.
* doc/binutils.texi: Document the new feature.
* NEWS: Mention the new feature.
|
|
(options): Add -c and --archive-index option.
(usage): Add -c option.
(parse_args): Add c option parsing.
(process_archive): Dump archive index.
* NEWS: Mention the new feature.
* doc/binutils.texi: Document the new feature.
|
|
|
|
requested by the user.
(dump_sects, cmdline_dump_sects): Use the new type.
(options): Add --string-dump option.
(request_dump): Rename to request_dump_bynumber. Use dump_type.
(request_dump_byname): Use dump_type.
(parse_args): Parse --string-dump option.
(process_section_headers): Fix calls to request_dump.
(initialise_dumps_byname): Likewise.
(dump_section): Rename to dump_section_as_bytes.
(dump_section_as_strings): New function. Display the contents of a section as printable strings.
(process_section_contents): String dump the section if requested.
(process_object): Use dump_type.
(main): Likewise.
* Makefile.am: Add dependency for readelf.c on safe-ctype.h.
* Makefile.in: Regenerate.
* NEWS: Mention the new feature.
* doc/binutils.texi: Document the new feature.
* testsuite/binutils-all/dumptest.s: New test file.
* testsuite/binutils-all/readelf.exp: Add test of readelf's -p switch.
|
|
|
|
|
|
|
|
* Makefile.in: Regenerate.
* configure.in: Add windmc tool.
* configure: Regenerate.
* mclex.c: New.
* mcparse.y: New.
* windmc.c: New.
* windmc.h: New.
* doc/Makefile.am: Add windmc tool.
* doc/Makefile.in: Regenerate.
* doc/binutils.texi: Add windmc documentation.
* NEWS: Mention new tool.
|
|
* windres.c: (usage, long_options, main): Add new option --codepage or -c.
* winduni.c: (wind_default_codepage, wind_current_codepage): New.
(unicode_from_ascii, ascii_from_unicode): Use wind_current_codepage as codepage parameter.
(unicode_print): Print 4 characters for hexadecimal values in unicode strings.
* winduni.h: (wind_default_codepage, wind_current_codepage): Export.
* doc/binutils.texi: Document new option.
* NEWS: Mention new feature.
|
|
gprof.
|
|
200x-xx-xx Phil Edwards <phil@codesourcery.com>
Richard Sandiford <richard@codesourcery.com>
* NEWS: Mention addition of --extract-symbol.
* doc/binutils.texi: Document it.
* objcopy.c (extract_symbol): New variable.
(OPTION_EXTRACT_SYMBOLS): New command_line_switch.
(copy_options): Add an entry for --extract-symbol.
(copy_usage): Mention --extract-symbol.
(copy_object): Set the start address to zero for --extract-symbol.
Do not copy private BFD data in that case.
(setup_section): Set the size, LMA and VMA to zero for
--extract-symbol. Do not copy private BFD data in that case.
(copy_section): Do not copy section contents if --extract-symbol
is passed.
(copy_main): Set extract_symbol to TRUE if --extract-symbol
is passed.
ld/testsuite/
* ld-elf/extract-symbol-1sym.d, ld-elf/extract-symbol-1sec.d,
* ld-elf/extract-symbol-1.s, ld-elf/extract-symbol-1.ld: New tests.
* ld-elf/binutils.exp: Run them.
|
|
(initialise_dumps_byname): New.
(parse_args): Call request_dump_byname.
(process_section_contents): Call initialise_dumps_byname.
* doc/binutils.texi (readelf): Mention -x NAME.
* NEWS: Likewise.
|
|
as mangled names read from stdin.
Add -i switch to disable the display of implementation details.
Add -t switch to disable the demangling of types.
* NEWS: Mention the new switches.
* doc/binutils.texi (cxxfilt): Document the -i and -t switches.
|
|
* NEWS: Mention -W/--dwarf.
* doc/binutils.texi: Document -W/--dwarf for objdump.
|
|
* NEWS: Mention "-t/--section-details" and
"-N/--full-section-name".
* doc/binutils.texi: Document "-t/--section-details". Remove
"-N/--full-section-name".
* readelf.c (do_full_section_name): Renamed to ...
(do_section_details): This.
(option): Rename "-N/--full-section-name" to
"-t/--section-details".
(usage): Likewise.
(parse_args): Likewise.
(get_elf_section_flags): Support do_section_details.
(process_section_headers): Updated for do_section_details.
|
|
|
|
2005-05-23 Fred Fish <fnf@specifixinc.com>
* addr2line.c (unwind_inlines): New flag for 'i' option.
(usage): Document '-i' option.
(long_options): Recognize '--inlines'.
(translate_addresses): Loop, calling bfd_find_inliner_info as
necessary and printing multiple output lines.
(main): Handle 'i' option.
* doc/binutils.texi (addr2line): Document '-i' option.
* NEWS: Mention new addr2line '-i' option.
|
|
* NEWS: Mention new readelf options, "-N/--full-section-name"
and "-g/--section-groups".
* doc/binutils.texi: Document new readelf options,
"-N/--full-section-name" and "-g/--section-groups".
|
|
address, and add code to test this new option.
|
|
|
|
|
|
* NEWS: Make note of the new MIPS disassembly option "no-aliases".
* doc/binutils.texi (objdump): Document the "no-aliases"
disassembly option.
|
|
2004-12-15 Jan Beulich <jbeulich@novell.com>
* doc/binutils.texi: Document --strip-unneeded-symbol and
--strip-unneeded-symbols.
* objcopy.c (strip_unneeded_list): New.
(enum command_line_switch): Add OPTION_STRIP_UNNEEDED_SYMBOL
and OPTION_STRIP_UNNEEDED_SYMBOLS.
(copy_options): Add --strip-unneeded-symbol and
--strip-unneeded-symbols.
(copy_usage): Likewise.
(filter_symbols): Suppress copying of symbol if in strip_unneeded_list
and the symbol is not needed.
(copy_main): Handle OPTION_STRIP_UNNEEDED_SYMBOL and
OPTION_STRIP_UNNEEDED_SYMBOLS.
|
|
sections.
|
|
and objdump to skip the displaying of ARM Mapping symbols unless specifically
requested.
|
|
(make_one_lib_file): Add aliases with prefixes for external and import
definitions.
(usage): Document -p option.
(long_options): Add --ext-prefix-alias option.
(main): Handle -p.
* doc/binutils.texi: Document new switch.
* NEWS: Mention new switch.
|
|
in symbol names.
|
|
* ChangeLog-9197: Likewise.
* ChangeLog-9899: Likewise.
* NEWS: Likewise.
* ar.c: Fix comment typos.
* arsup.c: Likewise.
* coffgrok.c: Likewise.
* debug.c: Likewise.
* debug.h: Likewise.
* dlltool.c: Likewise.
* ieee.c: Likewise.
* nm.c: Likewise.
* objdump.c: Likewise.
* prdbg.c: Likewise.
* readelf.c: Likewise.
* resrc.c: Likewise.
* sysinfo.y: Likewise.
* windres.c: Likewise.
|
|
2003-09-30 Chris Demetriou <cgd@broadcom.com>
* NEWS: Add an indication of the cutoff for 2.14.
[ gas/ChangeLog ]
2003-09-30 Chris Demetriou <cgd@broadcom.com>
* NEWS: Add an indication of the cutoff for 2.14.
[ ld/ChangeLog ]
2003-09-30 Chris Demetriou <cgd@broadcom.com>
* NEWS: Add an indication of the cutoff for 2.14.
|
|
|
|
* doc/binutils.texi: Document new command line option.
* prdbg.c: Code to print the debug info as tags compatible with ctags.
* budbg.h: Adjust prototype.
* NEWS: Mention new switch
|
|
|
|
|