replacing a member, and 'a' when adding one.
* ar.c (truncate): New static variable.
(normalize): Change return type to const char *. Add abfd
argument. Change all callers. If truncate, chop the filename to
abfd->ar_max_namelen.
(main): For the 'f' modifier, set truncate to true. Don't change
quick_append to replace to truncate is true.
(do_quick_append): If truncate, set BFD_TRADITIONAL_FORMAT.
(write_archive): Likewise.
* binutils.texi, ar.1: Document 'f' modifier.
PR 6888.
Malloc buffers rather than allocate on stack (so it works
on NT).
* deflex.l: Names can have an @ in them.
* dlltool.c: Loads of stuff. Can now generate .imp files which
work with NT .dlls.
* deflex.l, defparse.y, dlltool.c: New files.
* Makefile.in, configure.in: Support for them.
Mon Jun 12 11:27:54 1995 Steve Chamberlain <sac@slash.cygnus.com>
* sysdump.c: Include sysdep.h
(main): Open input with FOPEN_RB. binutils/7137
PA assembly code.
* binutils-all/nm.exp: Enable these tests on the PA.
* binutils-all/objcopy.exp: Enable these tests on the PA. Expect
simple copy to fail.
* binutils-all/objdump.exp: Enable these tests on the PA. Handle
"CODE" as a section name.
* binutils-all/size.exp: Enable these tests on the PA.
* lib/utils-lib.exp (default_binutils_assemble): For "hppa*-*-*",
run the assembly through a sed script before passing it to the
assembler.
(copy_options): Likewise.
(copy_usage): Mention --keep-symbol and -K.
(strip_usage): Likewise.
(keep_symbols): New static variable.
(is_strip_symbol): Adjust the return value according to
keep_symbols.
(strip_main): Handle -K. For -N, check that -K was not given.
(copy_main): Likewise.
* binutils.texi, objcopy.1, strip.1: Document -K.
and flags. Change adjust from boolean to enum.
(remove_sections): Remove static variable.
(sections_removed): New static variable.
(copy_options): Add --set-section-flags.
(copy_usage): Mention --set-section-flags.
(parse_flags): New static function.
(find_section_list): New static function.
(is_strip_symbol): Change return type from int to boolean.
(is_strip_section): New static function.
(filter_symbols): Call is_strip_section.
(copy_object): When adding sections, check for specified flags or
VMA. Call filter_symbols if any sections are being removed.
(setup_section): Use find_section_list function rather than
looking through remove_sections and adjust_sections. Handle
--set-section-flags.
(copy_section): Use find_section_list rather than looking through
remove_sections.
(strip_main): Use find_section_list instead of adding items to
sections_removed.
(copy_main): Use find_section_list instead of adding items to
sections_removed and adjust_sections. Handle --set-section-flags.
* binutils.texi, objcopy.1: Document --set-section-flags.
* coffdump.c (dump_coff_scope): Cast pointer to unsigned long for
printf.
* coffgrok.c: Include bucomm.h. Don't declare xmalloc.
(push_scope): Declare type of parameter link.
* size.c: Include libiberty.h.
* srconv.c: Include bucomm.h.
(find_base): Declare at top of file.
(wr_hd): Add default case to architecture switch.
(wr_dps_start): Declare type of parameter nest.
(wr_du): Comment out variables used only in commented out blocks.
(wr_dus): Remove unused variable i.
(wr_sc): Remove unused variables myinfo, low, and high.
* strings.c: Include libiberty.h.
* sysdump.c: Include <ctype.h>.
* 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.
(copy_section): Call it.
(copy_options, copy_usage, copy_main): Add --byte option to
activate it. Appropriate the -b option (which was an undocumented
synonym for -F) for it, also. Add --interleave, -i option for
additional control.
(setup_section, copy_section, mangle_section): Renamed with no `s'
on the end.
* objcopy.1, binutils.texi: Document the new options.
* objdump.c (display_target_tables, display_target_list):
New functions broken out of display_info.
Eliminate some magic constants. Use more meaningful variable names.
(dump_bfd_header): New function broken out of display_bfd.
(dump_section_header): New function broken out of dump_headers.
(remove_useless_symbols): Don't shadow global variable name with
parameter.
(objdump_print_address): Fix backward test.
It would never be called.
(list_matching_formats): Take an arg giving the list of matching
formats.
(display_bfd): Pass the arg, and get it filled in by calling
bfd_check_format_matches instead of bfd_check_format.
(display_info, display_info_table): target_vector was renamed to
bfd_target_vector.
It would never be called.
(list_matching_formats): Take an arg giving the list of matching
formats.
(display_bfd): Pass the arg, and get it filled in by calling
bfd_check_format_matches instead of bfd_check_format.
* binutils.texi (objdump): Note some limitations of -h section
address printing.
* mpw-build.in: New file, build script fragment for MPW make.
* mpw-make.in: New file, MPW makefile fragment for binutils.
(Normally automatically generated from Makefile.in.)
* objdump.c (stab_name): Allocate dynamically.
(stab_print): Use pointers to strings instead of char arrays.
(dump_stabs): Change alloc and init of arrays appropriately.
(dump_stabs_1): Always decide whether to print stab_name or
the stab's type number, if unnamed.
aspects of the target for each program.
* objdump.c (long_options, usage): Add long equivalents for all
remaining short options that lacked them.
* binutils.texi objdump.1: Document them.
* size.c (usage): Tweak usage message.
* size.1: Add missing `=' in examples.
* binutils.texi strip.1 objcopy.1 nlmconv.1 objcopy.c nlmconv.c:
Use "--target=bfdname" as the option to select the BFD target,
like nm and size already do.
Reserve "--format=format" for textual output selection options, but
for now keep old option names as obsolete for backward compatibility.
* strings.c (main, strings_object_file, usage): Add --target option.
* binutils.texi strings.1: Document it.
* ar.c (main): Put parens around assignment used as truth value.
* objdump.c (display_bfd): Declare return value as void.
(stab_print): Use "" instead of 0 to initialize array.
(dump_stabs_1): Print vma using printf_vma.
(display_info): Put parens around assignment used as truth value.
* strings.c (print_strings): Cast printf arguments.
(long_options): Add "debug" and "linker".
(main): Handle -d and -l arguments. Make command line input and
output files optional. Parse the command file before opening the
BFD's, which requires storing more information in local variables.
If INPUT names multiple files, link them together. Use OUTPUT for
the output file name if not named on command line.
(show_usage): Changed for new options.
(link_inputs): New function to automatically invoke linker to
handle multiple INPUT files.
(choose_temp_base_try, choose_temp_base, pexecute): New functions,
mostly copied from gcc/gcc.c.
* nlmconv.h (input_files, output_file): Declare.
* nlmheader.y (input_files, output_file): Define.
(command): Support INPUT with a string_list argument. Support
OUTPUT.
(string_list): Renamed from module_list.
* Makefile.in (nlmconv.o): Define LD_NAME based on
program_transform_name.
Fixes PR 3974.