* objcopy.c (add_strip_symbol): New function, adds a name to an
explicit list of symbols to strip.
(is_strip_symbol): New function, reports whether the name argument
is in the explicit list.
(filter_symbols): Check against is_strip_symbol above all.
(strip_main): Recognize -N option. If used, don't default to
strip_all.
(copy_main): Recognize -N option.
(strip_usage): Document -N and --strip-symbol options.
(copy_usage): Ditto.
* objcopy.1, strip.1, binutils.texi: Document -N and
--strip-symbol options.
* Makefile.in (install-info): Install info files from whatever directory they
were found in.
Patch from DJ Delorie:
* configure.bat: do c++filt -> cxxfilt right
* sysinfo.y: Include system header files early, so any potential declaration of
abort() occurs before its use.
* strings.c (strings_file): Try opening the file in binary mode first.
(pad_to_set, pad_to): New static variables.
(copy_options): Accept --pad-to.
(copy_usage): Mention --pad-to.
(copy_object): Support --pad-to.
(compare_section_vma): Sort non loadable sections to the front.
Sort sections with the same VMA by size.
(copy_main): Handle --pad-to.
* binutils.texi, objcopy.1: Document --pad-to.
and the start address was not set using --set-start, default the
start address to zero. This hack is because the `binary' output
file format uses the start address to set the virtual address of
the first byte in the file.
* binutils.texi, objcopy.1: Add some notes on generating S-records
and binary files.
(adjust_start, set_start_set, set_start): New static variables.
(adjust_section_vma, adjust_sections): New static variables.
(copy_options): Add --adjust-start, --adjust-vma,
--adjust-section-vma, --adjust-warnings, --no-adjust-warnings,
--set-start.
(parse_vma): New static function.
(copy_usage): Mention new options.
(copy_object): Handle --set-start and --adjust-start.
(setup_section): Correct type of last argument to PTR. Set used
field if section is removed. Handle --adjust-vma and
--adjust-section-vma.
(copy_section): Correct type of last argument to PTR.
(mark_symbols_used_in_relocations): Likewise.
(strip_main): Clear used field when handling -R.
(copy_main): Handle new options.
* binutils.texi (objcopy): Document new options.
* objcopy.1: Document new options.
(sysinfo.c): Likewise. Also, depend upon arparse.c, to prevent a
parallel make from trying to build both arparse.c and sysinfo.c
simultaneously.
(nlmheader.c): Similar change.
(arparse.h): Separate target from arparse.c, so that a parallel
make does not try to build both at once. Depend upon arparse.c.
(sysinfo.h): Similar change.
(objdump_print_address): If aux->require_sec, require that the
symbol be in aux->sec even if HAS_RELOC is not set.
(disassemble_data): Set aux.require_sec around the
objdump_print_address call for the instruction address.
PR 3441.
(output_filename, output_file, output_bfd): New static variables.
(remove_output): New static function.
(main): Call xatexit (remove_output). Call xexit rather than
returning.
(extract_file): Set output_filename and output_file while output
file is open.
(write_archive): Likewise, but use output_bfd, not output_file.
* arsup.c: Include libiberty.h. Call xexit rather than exit.
* bucomm.c: Likewise.
PR 2474.
(usage): Document --disassemble-all.
(long_options): Add disassemble-all as a synonym for -D.
(compare_symbols): Make pointers const.
(compare_relocs): New static function.
(disassemble_data): Rename disassemble to disassemble_fn to avoid
shadowing. If dump_reloc_info, print relocs along with
disassembly. Skip sections which are not SEC_CODE unless
disassemble_all or only is set.
(display_bfd): Don't call dump_relocs if disassemble is set.
(main): Accept and handle -D.
* binutils.texi: Document -D/--disassemble-all.
* objdump.1: Likewise.
PR 5059.
(inarch): Remove variable.
(map_over_members): Make static. Add arch argument, and use it
instead of inarch. Change all callers.
(main): Treat --version as -v. Accept -t argument. Accept any
number of archive arguments. Catch and use open_inarch return
value, rather than using inarch.
(open_inarch): Return newly opened BFD, rather than using inarch.
(do_quick_append): Make archive_filename const.
(write_archive): Add iarch argument, and use it instead of inarch.
Change all callers.
(delete_members, move_members, replace_members): Likewise.
(ranlib_only): Don't exit on success. Catch and use open_inarch
return value.
(ranlib_touch): New function.
* arsup.h (map_over_members): Don't declare.
(ar_end, ar_extract): Declare.
(open_inarch): Change return value in declaration to bfd *.
* arsup.c (map_over_list): Make static. Always pass two arguments
to function. Add arch argument, and use it instead of inarch.
Change all callers.
(ar_directory_doer): Make static. Add ignored second argument.
Change all callers.
(ar_directory): Use open_inarch return value rather than inarch.
(ar_addlib_doer): Make static.
(ar_addlib): Use open_inarch return value rather than inarch.
(ar_extract): Remove unused local variable abfd.
symbols with zero values. If numeric values are equal, or both symbols are
undefined, sort alphabetically. Don't assume that the difference of two
bfd_vma values will truncate to "int" and still have the same sign.
(numeric_reverse): Call numeric_forward and negate the result.
(print_symbol_info_bsd): For undefined symbols, print leading spaces equivalent
to the width of a printed bfd_vma, rather than assuming that 8 will look right.
(do_define): Keep info on source file of a symbol.
* coffgrok.h (coff_symbol): New field.
* srconv.c (PROGRAM_VERSION): Now 1.3
(wr_rl): Use external ref number for symbol.
(wr_dus): Only keep one source file per debug unit.
(wr_dln): Always emit line numbers for first source file,
(wr_globals): Emit globals in the du of their owning source file.
NetWare custom header; no longer needed.
(powerpc_mangle_relocs): Convert relocs against the uninitialized
data section into relocs against the data section.
netware targets. Write it into Makefile as NLMCONV_DEFS.
* Makefile.in (nlmconv.o): Pass $(NLMCONV_DEFS) to $(CC).
* nlmconv.c: Only compile code for specific CPU types if
NLMCONV_cputype is defined.
invoking config.bfd with a second argument of ``_''.
* Makefile.in (underscore.c): Depend upon Makefile. Don't try to
run $(CC) and $(NM), just use $(UNDERSCORE). Create via temporary
file.
(demangle.o): Remove target.
($(NM_PROG)): Don't depend upon demangle.o, and don't link against
demangle.o. It's in libiberty anyhow.
(cplus-dem.o): Don't depend upon demangle.o.
* binutils.texi: Mention -n and --no-strip-underscores arguments
to c++filt.
same directory as the output BFD, since we may not have write
permission on the current directory. Set the permissions of the
new directory to 0700, not 0777.
* configure.in: Don't bother building ARCHDEFS variable for Makefile.
* objdump.c (ARCH_*): Deleted handling.
(disassemble_data): Call `disassembler' from opcodes library.
(display_target_list): If a format fails, just go on to the next
one. Check return value of bfd_set_format.
(display_info_table): Likewise. Don't increment loop variable in
for loop test, since that skips the first element.
(display_target_tables): Rewrite loop for clarity. Ensure that it
always prints at least one element.
(main): Create .nlmsections section in output BFD. Store
information about it in sections header.
(setup_sections): Allocate space in sections header.
(copy_sections): Copy zero sized sections. Put information about
each section in the sections header.
* nlmconv.c (powerpc_build_stubs): Take new outbfd argument.
Change caller. Create custom header for new PowerPC NetWare
format.
end-sanitize-powerpc-netware
* Makefile.in (nlmheader.o, nlmconv.o): Update dependencies.
* nlmconv.c: Include bfd.h and libiberty.h with "", not <>.
* nlmheader.y: Include bfd.h with "", not <>.
* config/unix.exp: Use nm.new, not nm, from newly built tree.
* binutils.all/objdump.exp: Add more wildcards to list of
single-letter options in pattern for usage message.
* binutils.all/nm.exp: Deleted debug-symbols test, since it only
works for a.out/stabs systems. Fixed regexps to make underscores
optional, since some C compilers don't prepend them. Deleted
check for foo.o symbol, since again some systems don't generate
it.
(--dynamic-reloc) arguments to objdump.
* nm.c (dynamic): New static variable.
(long_options): Added "dynamic".
(usage): Mention -D and --dynamic.
(main): Add D to getopt string. Handle -D by setting dynamic.
(display_rel_file): If dynamic is non-zero, read dynamic symbols
rather than normal symbols.
* nm.1: Updated for -D (--dynamic) option.
* objdump.c (dump_dynamic_symtab): New global variable.
(dump_dynamic_reloc_info): New global variable.
(dynsyms, dynsymcount): New global variables.
(usage): Mention -R, -T, --dynamic-syms and --dynamic-reloc.
(long_options): Added "dynamic-reloc" and "dynamic-syms".
(slurp_symtab): If no symbols, return rather than exit.
(slurp_dynamic_symtab): New function.
(display_bfd): Handle dump_dynamic_symtab and
dump_dynamic_reloc_info.
(dump_symbols): Take new dynamic argument, indicating whether to
display dynamic symbols.
(dump_relocs): Move most printing into dump_reloc_set.
(dump_dynamic_relocs): New function.
(dump_reloc_set): New function, extracted from dump_relocs.
(main): Add R and T to getopt string. Handle -T by setting
dump_dynamic_symtab and -R by setting dump_dynamic_reloc_info.
* objdump.1: Updated for -R (--dynamic-reloc) and -T
(--dynamic-syms) options.
* binutils.texi: Updated for new nm and objdump options.
all uses of get_symtab_upper_bound to bfd_get_symtab_upper_bound.
Also:
* coffgrok.c (symcount): Change to long.
(do_sections_p1): Check for error return from
bfd_get_reloc_upper_bound. Change relcount to long, and check for
error from bfd_canonicalize_reloc.
(coff_grok): Change storage to long. Check for error from
bfd_get_symtab_upper_bound and bfd_canonicalize_symtab.
* nlmconv.c (main): Change symcount, newsymalloc, newsymcount, and
i to long. Check for error from bfd_get_symtab_upper_bound and
bfd_canonicalize_symtab.
(copy_sections): Change reloc_size and reloc_count to long. Check
for error from bfd_get_reloc_upper_bound and
bfd_canonicalize_reloc.
(mangle_relocs, i386_mangle_relocs, alpha_mangle_relocs): Change
reloc_count_ptr argument to long *. Make corresponding changes to
variables loaded from *reloc_count_ptr.
* nm.c (display_rel_file): Change storage and symcount to long.
Check for errors from bfd_get_symtab_upper_bound and
bfd_canonicalize_symtab.
* objcopy.c (filter_symbols): Change symcount, src_count and
dst_count to long.
(copy_object): Change symcount to long. Pass another argument to
fprintf. Check for errors from bfd_get_symtab_upper_bound and
bfd_canonicalize_symtab.
(copy_section): Change relcount to long. Check for errors from
bfd_get_reloc_upper_bound and bfd_canonicalize_reloc.
(mark_symbols_used_in_relocations): Change relcount and i to long.
Check for errors form bfd_get_reloc_upper_bound and
bfd_canonicalize_reloc.
* objdump.c (storage): Remove global variable.
(symcount): Changed to long.
(slurp_symtab): New local variable storage. Check for errors from
bfd_get_symtab_upper_bound and bfd_canonicalize_symtab.
(remove_useless_symbols): Change return value and count to long.
(objdump_print_address): Change min, max, thisplace and i to long.
(disassemble_data): Change i to long.
(dump_symbols): Change count to long.
(dump_relocs): Change relcount to long. Check for errors from
bfd_ret_reloc_upper_bound and bfd_canonicalize_reloc.
(display_info_table): Add casts when passing LONGEST_ARCH for
printf %* argument.
with the same name:
* objcopy.c (setup_section): Make a new output section even if
one already exists with the given name.
(copy_section): Use isection->output_section rather than trying
to look the output section up by its (possibly non-unique) name.
prototype. Change vardiff from int to bfd_signed_vma. Correct
binary search termination condition. When looking for same
section symbol in relocatable file, handle final symbol correctly.
in output relocations.
(mark_symbols_used_in_relocations): New function. Mark symbols
used in output relocations with BSF_KEEP.
(filter_symbols): Do not strip symbols marked with BSF_KEEP.
(copy_object): Reorder actions. First setup sections, then
build the output symbol table, then copy the section contents.
collect when . is in PATH.
(STRIP_PROG): Change from strip to strip.new.
(NM_PROG): Change from nm to nm.new.
(install): Remove the .new when installing.
if a symbol represents a compiler-generated local label.
(copy_object): Give the BFD backends a chance to copy any private
bfd data from the input BFD to the output BFD.
(setup_section): Give the BFD backends a chance to copy any private
section data from the input section to the output section.
powerpc_resolve_stubs. Use __GOT0, not __toc_start. Handle it if
the start and end symbols are not in the text section.
(struct powerpc_stub): New struct definition.
(powerpc_stubs, powerpc_stub_insns): New static variables.
(powerpc_initial_got_size): New static variable.
(powerpc_build_stubs): New function.
(powerpc_resolve_stubs): New function.
(powerpc_mangle_relocs): Clear extraneous data in .got section.
Rearrange reloc handling to handle ELF relocs that are not
partial_inplace. Resolve PC relative relocs.
* coffdump.c: Uses coffgrok to dump out the debug info of a coff
file.
* sysroff.info: Description of a SYSROFF object file.
* sysinfo.y, syslex.l: Parse info file, generate a reader, writer,
header files and a printer.
* srconv.c: Uses coffgrok.c and sysroff.info to convert a coff
file to a SYSROFF file.
start-sanitize-powerpc-netware
Support for PowerPC NetWare.
* nlmconv.c (main): For PowerPC NetWare, automatically define the
special symbols __toc_start.
(select_output_format): Handle bfd_arch_powerpc.
(mangle_relocs): Likewise.
(powerpc_mangle_relocs): New function.
end-sanitize-powerpc-netware
* ar.c (print_contents, extract_file), size.c
(print_berkeley_format): Use bfd_get_filename and
bfd_my_archive instead of dereferencing the structs directly.
if ambiguous match.
* nm.c (display_file), size.c (display_bfd): Eliminate gotos.
Print matching formats if there is an ambiguous match. Use
bfd_nonfatal instead of hardcoded error message if nothing matches.
* arsup.c, ar.c, objdump.c: Use bfd_get_filename instead of
abfd->filename.
* nm.c (display_archive): New function, from code in display_file.
(display_rel_file): Renamed from do_one_rel_file.
* size.c: Indent.
(display_archive): New function from code in display_file.
(display_file): Check bfd_close error return.
* strings.c (strings_object_file): Check bfd_check_format
error return.
* strings.c, objdump.c, size.c: Use bfd_nonfatal instead of bfd_perror.
* bucomm.c: Delete references to exit_handler. It wasn't set
anywhere, and now that we're using the libiberty xmalloc, it
wouldn't always get called before exiting.
(list_matching_formats): Function moved from objdump.c.
* bucomm.h: Declare it.
* objdump.c (disassemble_data): Move some variable decls closer to
their use. Add some comments. Replace a nested block with a
return.