against machine architecture stored in the ELF header, to resolve
ambiguities.
* elf32.c (bfd_section_from_shdr): Bfd_make_section can return
NULL, so only use results when non-NULL.
* targets.c (elf32_m68k_vec, elf32_i860_vec): Add extern decls
and add to vector of targets.
(ecoff_write_object_contents): Added BFD_ASSERT calls to ensure
relocs are reasonable.
* coff-msym.c: Eliminated uses of DEFUN.
(ecoff_swap_tir_out): New function.
type SHT_STRTAB. Don't alter file offset for section 0.
(reloc_type_names): Now an array instead of a macro. Still inside
"#if 0", since it's used only in debugging code also in "#if 0".
(struct elf_reloc_map_elt, struct elf_reloc_map): New types.
(sort_reloc_map): New function.
(sparc_reloc_map): New variable.
(elf_bfd_reloc_type_lookup): New function.
Now bfd-gas can create valid empty object files for sun4sol2.
bfd_make_debug_symbol; they were already in the target structure.
* Adjusted all uses of JUMP_TABLE.
* coffgen.c, libcoff-in.h (coff_bfd_make_debug_symbol): Renamed
from coff_make_debug_symbol.
* libcoff.h: Updated accordingly.
debugging symbols.
(ecoff_get_debug): Offset the fdr adr by the adr of the first pdr,
for compatibility with tools from MIPS.
* config/bigmips.mt: New file; default vector is ecoff_big_vec.
* config/irix3.mt, config/irix4.mt: Removed.
* configure.in (mips-*-ecoff): New target; uses bigmips.mt.
(mips-sgi-*, mips-big-*): Use bigmips rather than irix3.
* libecoff.h: New file. Defines ECOFF backend data for gdb.
* coff-mips.c: Now includes libecoff.h.
(ecoff_data_type): Moved to libecoff.h.
(ecoff_slurp_symbolic_info): Made globally visible so that gdb can
call it. If there is ever another ECOFF target, this and the
swapping functions should be accessed via an ECOFF specific target
vector.
Makefile.in (coff-mips.o): Depends on libecoff.h.
* coff-msym.c (ecoff_swap_fdr_in, ecoff_swap_ext_in): Set reserved
bits to 0 to make comparison test useful.
* config/irix3.mh, config/irix4.mh (HDEFINES): Set to -G 4 to
avoid overflowing GP accessible sections in binutils/objdump.
something to attach small common symbols to. Then avoid writing out
the (empty) .scommon section for the output BFD.
Tue Feb 2 11:41:06 1993 Ian Lance Taylor (ian@cygnus.com)
* coff-mips.c: Completed support for linker and binutils.
* section.c (SEC_IS_COMMON): New section flag, needed for MIPS
ECOFF which has two common sections.
(bfd_com_section): Set SEC_IS_COMMON flag.
* bfd-in.h (bfd_is_com_section): New macro to test SEC_IS_COMMON.
* aoutx.h, archive.c, bout.c, coff-a29k.c, coff-m88k.c,
coff-mips.c, coffgen.c, ieee.c, oasys.c, reloc.c, syms.: Use
bfd_is_com_section macro rather than checking for equality to
bfd_com_section.
* coffcode.h (_bfd_coff_mkobject_hook): Pass aouthdr argument.
(coff_mkobject_hook): Accept aouthdr argument.
* coffgen.c (coff_real_object_p): Pass aouthdr to mkobject_hook.
Handle NULL aouthdr argument.
(coff_object_p): If there is no aouthdr, pass it as NULL to
coff_real_object_p.
* libcoff.h: Rebuilt for mkobject_hook changes.
Fri Jan 15 18:13:17 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* coff-msym.c (ecoff_swap_hdr_out, ecoff_swap_fdr_out,
ecoff_swap_pdr_out, ecoff_swap_sym_out, ecoff_swap_ext_out,
ecoff_swap_rndx_out, ecoff_swap_rfd_out, ecoff_swap_opt_in,
ecoff_swap_opt_out, ecoff_swap_dnr_in, ecoff_swap_dnr_out): New
functions.
* coffswap.h: If NO_COFF_RELOCS is defined, don't define
bfd_swap_reloc_in or coff_swap_reloc_out.
* coff-mips.c: Added code to link and write out symbolic debugging
information, and to swap relocs in and out.
(coff_write_object_contents): coff_count_linenumbers returns the
number of line number records it found.
* coffgen.c (coff_write_linenumbers): only write out line numbers
in the section they belong to.
debug info. Setup info about linker symbols only, and use
standard bfd fields to hold the info.
* (hppa_object_p): Remove unneeded decls.
* (hppa_new_section_hook): Get rid of most of this.
* libhppa.h (struct hppadata): Remove ten pounds of useless ugly
fat. Remove all knowledge of stabs, remove redundant knowledge of
linker symbols.
* Remove macros for accessing fields which are now gone.
Fri Jan 8 15:47:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* bfd.c (struct _bfd): Added ecoff_tdata to tdata union.
* targets.c (enum target_flavour): Added bfd_target_ecoff_flavour.
* coff-msym.c: Use DEFUN for function definitons.
* coff-mips.c: Added code to read and print symbols, and to find
line numbers.
Somewhat more could be done.
Fri Jan 8 15:47:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* coffcode.h: Moved many generic functions into coffgen.c. Moved
swapping functions into coffswap.h for ECOFF use. Moved
relocation functions, only used by h8300 and z8k, into reloc16.c.
Added hooks for coffgen.c functions to backend data structure, and
added hook functions. Still more could be done.
* coffswap.h: New file to hold COFF swapping routines.
* coffgen.c: New file to hold generic COFF functions.
* reloc16.c: New file to hold h8300 and z8k specific relocation
functions.
* libcoff-in.h: Added declarations for functions in coffgen.c.
* libcoff.h: Rebuilt to incorporate changes.
* coff-h8300.c: Function name changes.
* coff-z8k.c: Function name changes. Use coff_reloc16_extra_cases
hook rather than defining EXTRA_CASES.
* Makefile.in: Build new files coffgen and reloc16. Added
dependencies of coff-*.o on coffswap.h and seclet.h.
* coffcode.h (coff_real_object_p): use name I386AIXMAGIC rather
than I386SVMAGIC.
(coff_pointerize_aux): don't pointerize a negative tagndx
(sometimes generated by SCO 3.2v4 cc).
* bout.c (calljx_callback, callj_callback,
b_out_get_relocated_section_contents): warn if relocating against
an undefined symbol.
Make a bunch more routines be static.
* hppa.c (fill_spaces): Get rid of this, replace with much better
written setup_sections().
* (setup_sections): New routine to create BFD sections for each
space and subspace in SOM files.
* (hppa_object_setup): Use BFD sections created by
setup_sections() to locate GDB symbol table info.
* (make_unique_section): New routine to create a BFD section. It
ensures that the given name is unique, and will generate a unique
one if necessary.
* (hppa_object_p): Become much more paranoid about file header.
* (make_bfd_asection): Call bfd_make_section to do the dirty
work. Simplify code somewhat.
* (hppa_core_file_p): Use proper name for stack section.
* libhppa.h: Remove millicode_start, millicode_end decls.
on the possible size of any object in a bfd.
* elf.c (bfd_elf_find_section, elf_get_str_section,
elf_get_symtab_upper_bound): Rewrite to avoid NULL pointer
dereferences.
* elf.c (elf_big_vec, elf_little_vec): Document last three
members initialized to NULL.
perhaps we can later remove the the_bfd field from each symbol.
* syms.c (struct symbol_cache_entry): Remove unused field
app_data. Add comment noting that the_bfd is almost redundant,
but not quite.
* aoutx.h, coff-a29k.c, coff-i386.c, coff-i960.c, coffcode.h:
Use new macros bfd_asymbol_bfd and bfd_asymbol_flavour.
* hppa.c (fill_spaces): Make slightly more rebust.
* configure.in: Allow std-host as the "default" host.
Get rid of HPPA/BSD specific code. That will go somewhere else
someday.
* (fill_spaces): Don't spin forever and die if you don't find
$MILLICODE$ subspace.
* (hppa_object_p): Make sure that we have a real honest-to-cthulu
exec file!
* (hppa_core_file_failing_signal, hppa_core_file_failing_command):
Make these work for HPUX.
* (make_bfd_asection): New routine to make section creation a
little easier.
* (hppa_core_file_p): Completely rewrite, leave out bugs.
* libhppa.h: #include the right system files. Redefine all of
the structs/macros for hacking core files to use more sensible
HPUX core file structures.
* targets.c (target_vector): Conditionalize hppa_vec on
HOST_HPPAHPUX, not hp9000s800.
* hosts/hppahpux.h: #include stdlib.h to get correct decls for
malloc and realloc. #define HOST_HPPAHPUX.
Get rid of HPPA/BSD specific code. That will go somewhere else
someday.
* (fill_spaces): Don't spin forever and die if you don't find
$MILLICODE$ subspace.
* (hppa_object_p): Make sure that we have a real honest-to-cthulu
exec file!
* (hppa_core_file_failing_signal, hppa_core_file_failing_command):
Make these work for HPUX.
* (make_bfd_asection): New routine to make section creation a
little easier.
* (hppa_core_file_p): Completely rewrite, leave out bugs.
* libhppa.h: #include the right system files. Redefine all of
the structs/macros for hacking core files to use more sensible
HPUX core file structures.
* targets.c (target_vector): Conditionalize hppa_vec on
HOST_HPPAHPUX, not hp9000s800.
* hosts/hppahpux.h: #include stdlib.h to get correct decls for
malloc and realloc. #define HOST_HPPAHPUX.
* Patches from Minh Tran-le <mtranle@paris.intellicorp.com>.
* configure.in (i386-*-isc*, i386-*-aix*): New targets.
* configure.host (i386-*-isc*, i386-*-aix*): New hosts.
* hosts/i386isc.h, config/i386isc.mh: New files for Interactive
Unix.
* hosts/i386aix.h, config/i386aix.mh: New files for AIX on PS/2.
* aix386-core.c: New file for handling core files on AIX on PS/2.
* targets.c: if AIX386_CORE, use aix386_core_vec.
* coffcode.h (coff_real_object_p): check for I386SVMAGIC as well
as I386MAGIC.
* tekhex.c: Insert leading_char (0) into bfd_target struct. Style.
* libcoff.h: Updated to get spacing change from coffcode.h.
* trad-core.c: leading_char is 0 (no symbols!), not '_'.
* coff-i386.c (CALC_ADDEND): if reloc is PC relative, add the
vaddr of the section to the addend.
* targets.c: if MINIMIZE is 1, and SCO_CORE is defined, add
SCO_CORE to SELECT_VECS.
(target_vector): add sco_core_vec.
* sco-core.c (sco_core_vec): add leading underscore initializer.
* configure.in (i[34]86-*-sco*): use target i386-sco.
* config/i386-sco.mt: new file; define SCO_CORE.
application. Some of the linker flags ought to get moved to this field
someday.
archures.c (bfd_default_scan): Recognize a few more numbers: 80486, 80960,
and 960.
bfd-in.h, bfd.c, targets.c, coffcode.h, coff-mips.c, other targets: Moved COFF
swap table to backend data.
hosts/i386linux.h: Include unistd.h.
aoutx.h, libaout.h, stab-syms.c: stab names are now in constant storage.
trad-core.c: Fixed some `PARAMS' uses that were missing parentheses.
aoutx.h, archive.c, archures.c, coffcode.h, ctor.c, reloc.c, syms.c: Doc fixes.
Eliminate all PROTO calls, replace with PARAMS for readability.
* aoutx.h: Add type to callback parameter.
* coff-mips.c: Don't call trad-core.h, not needed.
* trad-core.c: Incorporate trad-core.h declarations. Fix comments.
* trad-core.h: Eliminate, unused.
* section.c: New section bit SEC_SHARED_LIBRARY.
coffcode.h (styp_to_sec_flags): if STYP_NOLOAD && (STYP_TEXT ||
STYP_DATA), set SEC_SHARED_LIBRARY. This seems to be correct for
i386-sysv.
* archures.c, reloc.c, section.c, tekhex.c: Use PARAMS in
declaring pointers to functions.
* cache.c, elf.c: Move static function decls to top, use PARAMS.
* seclet.h: Declare external function with PARAMS.
* libbfd.h: Update, based on changes in source code and chew.
the wrong place to edit this file.
* Makefile.in (install): Install ansidecl.h and obstack.h in the
same places where we install bfd.h.
* libieee.h: Add FIXME about removing limit on number of sections.
binutils, bfd or opcodes uses it.
Mon Nov 2 12:36:14 1992 Ian Lance Taylor (ian@cygnus.com)
* config/delta88.mh, config/hp300.mh, config/hppahpux.mh,
config/i386v.mh: removed -DUSG from HDEFINES.
hosts/delta88.h, hosts/hp300.h, hosts/hppahpux.h, hosts/i386v.h:
defined USE_UTIME.
hosts/i386v.h: don't define POSIX_UTIME.
* ieee.c (get_symbol): can now cope when two symbols of a
different class, but the same index number occur consecutively.
(get_section_entry): nicer name for sections being forward
referenced. (ieee_archive_p): don't free the filename string,
since it was never malloced.
Tue Oct 27 12:24:34 1992 Ian Lance Taylor (ian@cygnus.com)
* coffcode.h (coff_swap_aux_out): set the fcnary info before
optionally setting the dimen info, since they are in the same
memory locations. Also zero out external auxent.
(coff_write_symbol): don't zero external auxent; now done in
coff_swap_aux_out.
* seclet.c (rel): don't load sections without the SEC_LOAD bit.
Thu Oct 15 10:16:35 1992 Steve Chamberlain (sac@thepub.cygnus.com)
* coff-m68k.c (m68k_howto2type, SELECT_RELOC): new function to
work out a coff relocation type from a howto's attributes rather
than using the input r_type field. This fixes PR1677 and allows
conversion of a.out relocs to coff relocs.
* coffcode.h (coff_write_relocs): if supplied a relocation
relative to an absolute symbol, use the right symbol index.
* reloc.c (bfd_perform_relocation): do a partial link for coff
relocs right.
* changes to support i386-sysv with shared libraries:
* coffcode.h (sec_to_styp_flags): if TWO_DATA_SECS is defined,
check for .data2; if _LIB is defined, check for it; map
SEC_NEVER_LOAD to STYP_NOLOAD.
(styp_to_sec_flags): map STYP_NOLOAD to SEC_NEVER_LOAD.
(make_a_section_from_file): if TWO_DATA_SECS, accept .data2.
(coff_write_object_contents): force vaddr of .lib to 0; set scnptr
if section has contents, not just if it is loadable; if
TWO_DATA_SECS, check for .data2
(coff_set_section_contents): set vma of .lib section to number of
.lib sections.
* coff-i386.c: define TWO_DATA_SECS; use a special CALC_ADDEND;
don't define coff_write_armap to bsd_write_armap.
* hosts/i386v.h: don't include <utime.h>, since it is not provided
by SVR3.2.
coffcode.h, elf.c, ieee.c, libaout.h, libbfd.c, oasys.c,
sco-core.c: Lint: Second argument of bfd_seek is always file_ptr.
Third argument is SEEK_SET or SEEK_CUR. Result is always 0 or -1.
to host support file names for bfd, binutils, opcodes.
* configure.in: Use it.
* i386aout.c: Cleanup, dump TARGET_IS_LITTLE_ENDIAN_P.
* i386bsd.c: Cleanup, reformat.
* config/i386-bsd.mt: Comment changes.
* config/i386bsd.mh: New file for core file support.
* hosts/i386bsd.h: Merge changes from Peter Schauer.
* bout.c (ALIGN): Rename to ALIGNER, since system header files
on BSD 4.4 define ALIGN (sigh!).
* aoutx.h (some_aout_object_p): Restore old aout_data value if this type
doesn't match. Don't lose if file sections have already been created.
(set_arch_mach): Set reloc_entry_size.
(slurp_symbol_table): Use bfd_h_get_{16,8} for reaeding symbol data.
* hosts/i386bsd.h: New file.
* configure.in: Recognize i[34]86-*-bsd host.
* aout-target.h (callback, write_object_contents): Delete unused variables.
* aoutx.h (reloc_type_lookup): New function.
* aout-target.h (MY_reloc_howto_type_lookup): Use it as default.
* aoutf1.h (sunos4_reloc_type_lookup): Deleted.
(MY_reloc_howto_type_lookup): Don't define it.
* aoutx.h (adjust_sizes_and_vmas): Don't bother with padding for OMAGIC files.
(slurp_symbol_table): Use header byte order, not target byte order, for reading
symbol data.
Thu Oct 8 08:52:48 1992 Steve Chamberlain (sac@thepub.cygnus.com)
Now a bfd knows whether underscores are normally prepended
to symbols in its file format. Helps with error messages.
* aout-adobe.c, aout-target.h, bout.c, coff-a29k.c, coff-h8300.c,
coff-z8k.c: targets set so they have leading underscore
* coff-i386.c, coff-i960.c, coff-m68k.c, coff-mips.c, coff-m88k.c,
coff-rs6000.c, coff-we32k.c, elf.c, ieee.c, srec.c: targets set
without leading underscore flag
* targets.c: add symbol leading char to xvec description
* bfd-in.h (bfd_get_symbol_leading_char): new macro.
* Portability fixes from p3:
coffcode.h (coff_write_relocs): removed sanity check until it
works on all targets (per advice from sac).
config/hp9000.mh: new file to define USG.
hppa.c: #undef hppa before the JUMP_TABLE.
hosts/hppahpux.h: #define NATIVE_HPPAHPUX_COMPILER if not
__STDC__.
targets.c (bfd_target_list): if NATIVE_HPPAHPUX_COMPILER, make
local variable target volatile to avoid mysterious bug in
HP9000/700 cc.
* aout-adobe.c: New file. So far, only reads a.out.adobe. FIXME.
* config/adobe.mt: Add.
* configure.in (*-adobe-* target): Add.
* targets.c (a_out_adobe_vec): Add.
* Makefile.in: add aout-adobe.c.
* configure.in: Put two dashes in all entries to be matched.
Add comments to remind people to do this.
Reorder all entries that match manufacturer names, to occur
last, so they will only be matched if no more specific match
occurs. Remove manufacturers `aout', `bout', `coff', and `elf'.
* coff-z8k.c: getting closer
* coffcode.h (coff_get_relocated_section_contents): allow
EXTRA_CASES hooks for different arches to provide different reloc
types.
* seclet.h: #ifndef around it to allow multiple inclusion
* srec.c: minor doc fix
* coffcode.h (coff_renumber_symbols): set the last renumbered
symbol pointer to NULL, as expected by coff_write_linenumbers.
(coff_write_relocs): apparently a non-zero addend is OK for reloc
type R_IHCONST used on the 29k.
update, based on how the underlying file was opened. Obsoletes
FASCIST_FDOPEN.
* hosts/rs6000.h, hosts/tahoe.h, hosts/vaxbsd.h: Remove
all FASCIST_FDOPEN config defines.
* archive.c (bfd_slurp_bsd_armap): if the symdef_count is too
large, assume we're using a swapped byte order and fail with
wrong_format rather than dumping core.
* targets.c, config/i960-bout.mt, hosts/*: added
HOST_BIG_ENDIAN_DEFAULT_VECTOR and
HOST_LITTLE_ENDIAN_DEFAULT_VECTOR because bout archive format
depends on the endianness of the host. Added #define
HOST_BIG_ENDIAN_P and #undef HOST_BIG_ENDIAN_P to a number of
configuration files in hosts/ (it was already in some).
from a coff file (csym is null), dont deref them
* ieee.c (parse_expression): get the answer right when adding an
abs+(sec+off), (ieee_generic_stat_arch_elt): call ieee_object_p
on elts so that filename is filled in.
Tue Aug 18 12:57:45 1992 Ian Lance Taylor (ian@cygnus.com)
* Makefile.in: added FLAGS_TO_PASS, and used it for all recursive
invocations of make. Also, always create installation
directories.
* config/apollov68.mh: removed -g from CC definition.
* libaout.h (struct aout_backend_data): New callback "set_sizes".
* aout-target.h (callback): Don't set page/seg sizes.
(mkobject): Ditto.
(set_sizes): New routine.
(backend_data): Point to it.
* aoutf1.h (sunos4_set_sizes): Heed architecture when setting sizes.
(sunos4_aout_backend): Point to it.
* aoutx.h (set_arch_mach): Call set_sizes callback.
the default. Given that we *write* the suckers (for long
archive member names), we really ought to be able to read them!
* trad-core.c: Don't include <machine/reg.h>. It doesn't
seem to be needed, and many machines don't have it.
pointers to bfd_byte* before performing arithmetic on them. Such
use with bare void* pointers is a gcc extension.
* cache.c (bfd_cache_delete): Forward decl with prototype form.
* archive (normalize): Add to CONST to match actual usages with
CONST.
* elf.c (bfd_section_from_shdr, elf_section_from_bfd_section,
section_from_elf_index): Add SHT_BEPROGBITS case for i860 in
big endian mode.
* elf.c (bfd_section_from_shdr): Test for the possibility that
section_from_elf_index returns NULL and don't dereference it.
* bout.c (bout_swap_exec_header_[in_out]): new field in exec
header e_relaxable, major hackery in callbacks
* libaout.h : add space for a_relaxable.
* seclet.c (rel): don't relax empty sections
Lints for bfd_reloc_code_type->bfd_reloc_code_real_type, and
correct calling of howto special functions and fixes from Raeburn
for gas<>bfdness
* archures.c: nuke bfd_reloc_code_type
* bout.c, cpu-h8300.c, coff-i960.c, coff-m88k.c: special function lint
* coffcode.h (styp_to_sec_flags): STYP_INFO is marked as
SEC_NEVER_LOAD, various other bfdgas newness
* reloc.c->libbfd.h: change protype of bfd_default_reloc_type_lookup
* targets.c: change jump table vector to above
its prototype will be included in libbfd.h. Change result type
to struct * (rather than equivalent typedef) so it can be used in
the prototype, where they typedef won't be known.
* libbfd.h: Updated version.
Correct misconception that there can be only one symbol table.
Only call elf_slurp_symbol_table on the full symbol table, not
the dynamic one which is only a subset of the full one.
(The bfd library was slurping in the first ELF symbol table it
found and then ignoring any others. For dynamically linked
executables, this happened to be the dynamic symbol table, which
is a subset of the full symbol table and only contains the
symbols that need to be used in dynamic linking.)
Various changes to get linker working again for a.out:
* don't set/adjust section file positions or vmas more than once
* use correct page size and segment size when calculating them
* deal with some variations in a.out implementations
Tested on sun4 and sun4->sun3 so far, will be testing further but
needed to get wider exposure&testing. See ChangeLog for details.
Also:
* coffcode.h (coff_write_relocs): Write out swapped reloc, not
pre-swapped version.
* hosts/sparc.h (abort, exit): Hide these names if compiling with
gcc version 2, to avoid warnings.
* don't set/adjust section file positions or vmas more than once
* use correct page size and segment size when calculating them
* deal with some variations in a.out implementations
Tested on sun4 and sun4->sun3 so far, will be testing further but
needed to get wider exposure&testing. See ChangeLog for details.
Also:
* coffcode.h (coff_write_relocs): Write out swapped reloc, not
pre-swapped version.
* hosts/sparc.h (abort, exit): Hide these names if compiling with
gcc version 2, to avoid warnings.
* configure.in: Rewrite target parsing to use simple format.
Handle sparc-sun-solaris2 configuration.
* aout64.h: Avoid ANSI C brain death warning.
* elf.c: Avoid trigraph (???) or /* in comments.