Commit Graph

25 Commits

Author SHA1 Message Date
Ian Lance Taylor
a5ccdad1fc * elfcode.h (elf_object_p): Rather than looking through an array
of architectures, get the ELF EM_xxx code from the backend
	information.  Let the generic ELF target match any EM_xxx code not
	matched by another ELF target.  Call elf_backend_object_p to let
	the backend do more checks and set global information.
	* libelf.h (struct elf_backend_data): Added elf_machine_code and
	elf_backend_object_p fields.
	(struct bfd_elf_arch_map): Removed.
	(bfd_elf_arch_map, bfd_elf_arch_map_size): Don't declare.
	* elf32-target.h, elf64-target.h: Initialize elf_machine_code
	field with ELF_MACHINE_CODE.  Initialize elf_backend_object_p
	field with elf_backend_object_p (if it is defined).
	* elf32-gen.c, elf32-hppa.c, elf32-i386.c, elf32-i860.c,
	elf32-m68k.c, elf32-m88k.c, elf32-mips.c, elf32-sparc.c,
	elf64-gen.c (ELF_MACHINE_CODE): Defined.
	* elf32-mips.c: Include ecoffswap.h to get ECOFF swapping
	routines.
	(mips_elf_object_p): Set the right machine number.
	(mips_elf_ecoff_debug_swap): Defined.
	(elf_backend_object_p): Defined to be mips_elf_object_p.
	(elf_backend_ecoff_debug_swap): Defined to be
	mips_elf_ecoff_debug_swap.
	* elf.c (bfd_elf_arch_map, bfd_elf_arch_map_size): Removed.

	* elf32-mips.c (elf_mips_howto_table): Don't complain on overflow
	for R_MIPS_26.  Correct overflow detection requires matching the
	upper four bits of the destination against the PC.  From Ted Lemon
	<mellon@pepper.ncd.com>.

	* elf32-hppa.c (elf_hppa_reloc_type_lookup): Return type
	should point to const data.
1993-11-09 21:08:58 +00:00
Ian Lance Taylor
95469b0290 * libelf.h: Added some comments.
(struct elf_backend_data): Added elf_backend_ecoff_debug_swap
	field.  Removed unused write_relocs field.
	* elf32-target.h: Adjusted elf_backend_data initialization
	accordingly.
	* elf64-target.h: Corrected elf_backend_data initialization to
	fill in all fields and to set elf_64_p to 1.
1993-11-09 16:33:28 +00:00
Ian Lance Taylor
d5a30a0879 * elf32-mips.c: Extensive additions to do relocations and to
handle MIPS specific sections.
	* libelf.h (elf_backend_data): Pass fourth argument to
	elf_backend_section_from_bfd_section to permit it to control the
	section index to use.
	(elf_obj_tdata): Add gp and gp_size fields.
	(elf_gp, elf_gp_size): New accessor macros.
	* elfcode.h: Removed a number of unused local variables.
	(elf_fake_sections): Clear section header before calling
	elf_backend_fake_sections, not after.
	(prep_headers): Return true at end.
	(elf_section_from_bfd_section): Pass retval argument to
	elf_backend_section_from_bfd_section.
	* elf32-hppa.c (elf32_hppa_backend_section_from_bfd_section):
	Accept and ignore new retval argument.
	* bfd.c: Include libelf.h.
	(bfd_set_gp_size): Handle ELF targets.
	* Makefile.in (bfd.o): Depends upon libelf.h.
	(elf32-mips.o): Depends upon $(INCDIR)/elf/mips.h.
1993-10-12 21:16:14 +00:00
Ian Lance Taylor
207f85b54b * elf32-i386.c (elf_howto_table): Add bfd_elf_generic_reloc
special function for all reloc entries.
	* elf32-target.h (TARGET_LITTLE_SYM): Add SEC_CODE to
	section_flags.
	* libelf.h (elf_symbol_type): Remove desc, type and other fields.
	* Makefile.in (elf32-*.o): These depend upon elf32-target.h.
1993-09-14 22:29:26 +00:00
Ken Raeburn
ee8cb54804 Deleted some fields of elf*_symbol_type and elf_obj_tdata that were getting
set but not used.  Merged elf*_symbol_type into a single elf_symbol_type.
1993-09-03 20:12:05 +00:00
Ken Raeburn
78e1e6d95a removed some "#if 0" code 1993-08-27 23:59:37 +00:00
Ken Raeburn
e2a422b84c Merged in changes from Jeff Law and Pete Hoogenboom at Utah for PA ELF
support.  Compiles, not particularly well tested.  See ChangeLog for details.
1993-08-25 01:15:07 +00:00
Ken Raeburn
d24928c05b * elfcode.h (elf_build_phdrs): Unused function deleted.
(bfd_shdr_from_section): Ditto.
(write_relocs): Don't change section contents for addend.
(elf_locate_sh): Return type is now always elf_internal_shdr, since the other
types were really aliases for this type anyways.  Don't compile this function,
since it is static and doesn't appear to be used in this file.
(sym_is_global): Return non-zero for weak symbols.  Abort if sec ptr is null.
(swap_out_syms): Reorder tests so function symbols can be weak.
(elf_slurp_symbol_table): Don't use BSF_EXPORT.
(elf_slurp_reloca_table): Make RELOC_PROCESSING section smaller by
extracting out some common code.  Abort if BFD section symbol has null name.
(elf_slurp_reloc_table): Translate ELF section symbols into BFD section
symbols.  Don't read section contents to fill in addend field.

* Merged from OSF:

Tue Jun 15 14:38:32 1993  Michael Meissner  (meissner@osf.org)

* libelf.h (struct Elf_Sym_Extra): New structure to contain ELF
specific information for a symbol.  Put in elf_sym_num, which
gives the external symbol number in the elf object file, since
local symbols must come before global symbols.
(elf_sym_extra): New macro.
(elf_symtab_map): Delete, in favor of using Elf_Sym_Extra.
* elfcode.h (elf_map_symbols): Use Elf_Sym_Extra to map internal
symbol number to external number.  Store the address of the
Elf_Sym_Extra field for the symbol in the udata field.
(elf_write_object_contents): Use Elf_Sym_Extra to map out symbols.

Sun Jun 20 16:30:11 1993  Michael Meissner  (meissner@osf.org)

* elfcode.h (elf_obj_tdata): Add field to count the size of the
array of pointers to section symbols.
(elf_map_symbols): Bump the max index of the section symbols so
that we don't overwrite memory.  Store the max index into the
elf_obj_tdata field.

Sat Jun 19 10:12:27 1993  Michael Meissner  (meissner@osf.org)

* elfcode.h (elf_obj_tdata): Add pointer to an array of pointers
to the section symbols we created.  Remove unused field internal_syms.
(elf_map_symbols): Fill in array of pointers to section symbols.  Only create
section symbols for sections that have SEC_ALLOC set, and have non-zero size.
(elf_symbol_from_bfd_symbol): If udata is NULL, and this is a section symbol,
look up the section in the list of section symbols, and set the udata pointer
appropriately.  Otherwise, if udata is still NULL, fail an assertion, and use
0, instead of dropping core.
1993-08-20 22:21:49 +00:00
Ken Raeburn
153cb9ade3 * libelf.h (NAME): Provide a default definition, that's neither
for 32 bits nor for 64.

Tue Jun 15 14:38:32 1993  Michael Meissner  (meissner@osf.org)

* libelf.h (elf_hash): Change declaration to bfd_elf_hash, since
that is what is in elf.c.
1993-08-06 19:29:57 +00:00
Ken Raeburn
d79ab07c4a * libelf.h (struct elf_backend_data): New field, maxpagesize.
(struct elf_obj_tdata): New field, phdr.
1993-07-26 18:44:03 +00:00
Fred Fish
c3e964b955 * configure.in (*-*-netware, i[34]86-*-netware): New configs.
* Makefile.in (BFD32_BACKENDS):  Add nlm.o, nlm32.o, nlm32-gen.o.
	* Makefile.in (BFD64_BACKENDS):  Add nlm64.o, nlm64-gen.o.
	* Makefile.in (CFILES):  Add nlm{32,64}.c, nlm{32,64}-gen.c.
	* Makefile.in (nlm.o, nlm{32,64}.o, nlm{32,64}-gen.o:  New targets.
	* bfd-in2.h (INLINE):  Defines moved here.
	* {aoutx.h, elf.c, elfcode.h}:  Move INLINE defines to bfd-in2.h.
	* libelf.h (CAT4):  Move define to bfd-in2.h.
	* bfd-in2.h (CAT4):  Merge CAT4 macro with other CAT macros.
	* bfd-in2.h (union tdata):  Add nlm_obj_data.
	* bfd-in2.h (enum target_flavour):  Add bfd_target_nlm_flavour.
	* targets.c (bfd_nlm{32,64}_{big,little}_vec):  Add prototypes.
	* targets.c (target_vector):  Add bfd_nlm{32,64}_{big,little}_vec.
	* (libnlm.h, nlm.c, nlmcode.h, nlm{32,64}-gen.c,
	nlm{32,64}-target.h, nlm{32,64}.c, config/i386-nlm.mt):  New files
	for NLM support.
1993-07-20 04:45:13 +00:00
Ken Raeburn
32090b8e4f * elf.c, elfcode.h, libelf.h: Serious reorganization.
Deleted `thunk' structure, merged into tdata, duplicate data eliminated.
Rearranged functions, grouping by function.
Broke up many functions in elfcode.h, re-ordered many parts of file writing
to handle unpredictable state of section relocation table as provided by
various applications.
Still needs cleanup: Merge functions back together, split out data structure
with only data that is used only when writing out object file.

* elf.c (bfd_elf_generic_reloc): New function, taken from coff-mips.c.
* elf32-sparc.c (elf_sparc_howto_table): Use it, to work around
bfd_perform_relocation lossage.
1993-07-19 19:12:59 +00:00
Ken Raeburn
cb6d724fb9 (struct elf_obj_tdata): Add field `thunk'. 1993-07-12 14:46:20 +00:00
Ken Raeburn
7e37f9ff25 more prototypes, in libelf.h 1993-07-06 21:14:36 +00:00
Ken Raeburn
7d9bb6dab4 (CAT4): Added Saber-C (ANSI mode) version.
(bfd_elf64_*): New decls.
1993-06-30 10:04:58 +00:00
Ken Raeburn
998ce1e0c7 Thu Jun 24 17:25:51 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
* elfcode.h (elf_new_section_hook): Do nothing for now.
	(elf_write_object_contents): Output common symbols the way ELF
	wants them.

Wed Jun 23 16:20:07 1993  Ken Raeburn  (raeburn@poseidon.cygnus.com)

	* libelf.h (struct elf_obj_tdata and associated macros): Moved
	here from elfcode.h.  A couple of size-specific structure pointers
	were changed to PTR; uses fixed appropriately.
	(elf32_symbol_type, elf64_symbol_type): Separated definitions.
	(bfd_elf_mkobject): Renamed from bfd_elf32_mkobject.
	(bfd_elf32_mkobject, bfd_elf64_mkobject, elf_mkobject): New
	temporary macros to ease name change.
	* elf.c (elf_read, elf_mkobject, elf_get_str_section,
	elf_string_from_elf_section, bfd_elf_find_section): Moved here
	from elfcode.h.
	* doc/Makefile.in (libbfd.h): Process elf.c too.
	* Makefile.in (elf.o): Note new dependencies.

	* elfcode.h: Lots of stuff moved elsewhere.  Deleted some unused
	code, tweaked some debug hooks.
	(elf_slurp_reloca_table): Translate ELF section symbols into BFD
	section symbols.
1993-06-24 21:30:26 +00:00
Ken Raeburn
268f94aca3 Use new size-independent versions of elf internal data structures. 1993-06-22 03:06:29 +00:00
Ken Raeburn
638616cafb Second try at getting elfNAME macros right.
Under ANSI C, "32_" is not a valid pp-token...
1993-06-15 23:29:48 +00:00
Ken Raeburn
e6858d1b68 (elfNAME, ElfNAME): Use CAT directly rather than going through NAME.
(bfd_elf32_new_section_hook): Declare.
1993-06-15 21:44:03 +00:00
Ken Raeburn
7050286db6 elfcode.h 1993-06-02 21:24:35 +00:00
Ken Raeburn
9942e68438 Updated for new macro, type, and structure names.
Cleaned up some namespace pollution; renamed elf vectors.
1993-05-25 20:11:26 +00:00
David MacKenzie
93b4f01814 Move printing from bfd to nm and add POSIX and SysV formats. 1993-05-21 21:06:25 +00:00
Ken Raeburn
8e40bcd8ec expand comment about "global_sym" complaint 1993-05-14 09:43:28 +00:00
Ken Raeburn
db232882e0 copyright; gas changes 1993-04-29 15:36:54 +00:00
Ken Raeburn
81187b5475 revised elf support 1993-02-27 07:05:09 +00:00