* 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.
This commit is contained in:
Ian Lance Taylor 1993-11-09 16:33:28 +00:00
parent 7420b02b8d
commit 95469b0290
4 changed files with 115 additions and 16 deletions

View File

@ -1,3 +1,13 @@
Tue Nov 9 11:26:05 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* 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.
Mon Nov 8 18:13:14 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* elfcode.h (bfd_section_from_shdr): Remove duplicate assignment

View File

@ -79,6 +79,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef elf_backend_section_from_bfd_section
#define elf_backend_section_from_bfd_section 0 /* elf_backend_section_from_bfd_section */
#endif
#ifndef elf_backend_ecoff_debug_swap
#define elf_backend_ecoff_debug_swap 0 /* elf_backed_ecoff_debug_swap */
#endif
static CONST struct elf_backend_data elf32_bed =
{
@ -89,16 +92,16 @@ static CONST struct elf_backend_data elf32_bed =
#endif
0, /* elf_64_p */
ELF_ARCH, /* arch */
ELF_MAXPAGESIZE, /* maxpagesize */
elf_info_to_howto, /* elf_info_to_howto */
elf_info_to_howto_rel, /* elf_info_to_howto_rel */
ELF_MAXPAGESIZE, /* maxpagesize */
bfd_elf32__write_relocs, /* write_relocs */
elf_backend_symbol_processing, /* elf_backend_symbol_processing */
elf_backend_symbol_table_processing, /* elf_backend_symbol_table_processing */
elf_backend_section_processing, /* elf_backend_section_processing */
elf_backend_section_from_shdr, /* elf_backend_section_from_shdr */
elf_backend_fake_sections, /* elf_backend_fake_sections */
elf_backend_section_from_bfd_section, /* elf_backend_section_from_bfd_section */
elf_backend_ecoff_debug_swap /* elf_backend_ecoff_debug_swap */
};
#ifdef TARGET_BIG_SYM

View File

@ -59,6 +59,28 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#define ELF_MAXPAGESIZE 1
#endif
#ifndef elf_backend_symbol_processing
#define elf_backend_symbol_processing 0 /* elf_backend_symbol_processing */
#endif
#ifndef elf_backend_symbol_table_processing
#define elf_backend_symbol_table_processing 0 /* elf_backend_symbol_table_processing */
#endif
#ifndef elf_backend_section_processing
#define elf_backend_section_processing 0 /* elf_backend_section_processing */
#endif
#ifndef elf_backend_section_from_shdr
#define elf_backend_section_from_shdr 0 /* elf_backend_section_from_shdr */
#endif
#ifndef elf_backend_fake_sections
#define elf_backend_fake_sections 0 /* elf_backend_fake_sections */
#endif
#ifndef elf_backend_section_from_bfd_section
#define elf_backend_section_from_bfd_section 0 /* elf_backend_section_from_bfd_section */
#endif
#ifndef elf_backend_ecoff_debug_swap
#define elf_backend_ecoff_debug_swap 0 /* elf_backed_ecoff_debug_swap */
#endif
static CONST struct elf_backend_data elf64_bed =
{
#ifdef USE_REL
@ -66,15 +88,18 @@ static CONST struct elf_backend_data elf64_bed =
#else
1, /* use_rela_p */
#endif
0, /* elf_64_p */
1, /* elf_64_p */
ELF_ARCH, /* arch */
elf_info_to_howto, /* elf_info_to_howto */
#ifdef elf_info_to_howto_rel
elf_info_to_howto_rel, /* elf_info_to_howto_rel */
#else
0, /* elf_info_to_howto_rel */
#endif
ELF_MAXPAGESIZE, /* maxpagesize */
elf_info_to_howto, /* elf_info_to_howto */
elf_info_to_howto_rel, /* elf_info_to_howto_rel */
elf_backend_symbol_processing, /* elf_backend_symbol_processing */
elf_backend_symbol_table_processing, /* elf_backend_symbol_table_processing */
elf_backend_section_processing, /* elf_backend_section_processing */
elf_backend_section_from_shdr, /* elf_backend_section_from_shdr */
elf_backend_fake_sections, /* elf_backend_fake_sections */
elf_backend_section_from_bfd_section, /* elf_backend_section_from_bfd_section */
elf_backend_ecoff_debug_swap /* elf_backend_ecoff_debug_swap */
};
#ifdef TARGET_BIG_SYM

View File

@ -42,10 +42,18 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#define ElfNAME(X) NAME(Elf,X)
#define elfNAME(X) NAME(elf,X)
/* Information held for an ELF symbol. The first field is the
corresponding asymbol. Every symbol is an ELF file is actually a
pointer to this structure, although it is often handled as a
pointer to an asymbol. */
typedef struct
{
/* The BFD symbol. */
asymbol symbol;
/* ELF symbol information. */
Elf_Internal_Sym internal_elf_sym;
/* Backend specific information. */
union
{
unsigned int hppa_arg_reloc;
@ -54,24 +62,77 @@ typedef struct
tc_data;
} elf_symbol_type;
/* Constant information held for an ELF backend. */
struct elf_backend_data
{
/* Whether the backend uses REL or RELA relocations. FIXME: some
ELF backends use both. When we need to support one, this whole
approach will need to be changed. */
int use_rela_p;
/* Whether this backend is 64 bits or not. FIXME: Who cares? */
int elf_64_p;
/* The architecture for this backend. */
enum bfd_architecture arch;
/* The maximum page size for this backend. */
bfd_vma maxpagesize;
/* A function to translate an ELF RELA relocation to a BFD arelent
structure. */
void (*elf_info_to_howto) PARAMS ((bfd *, arelent *,
Elf_Internal_Rela *));
/* A function to translate an ELF REL relocation to a BFD arelent
structure. */
void (*elf_info_to_howto_rel) PARAMS ((bfd *, arelent *,
Elf_Internal_Rel *));
bfd_vma maxpagesize;
void (*write_relocs) PARAMS ((bfd *, asection *, PTR));
/* The remaining functions are hooks which are called only if they
are not NULL. */
/* A function to do additional symbol processing when reading the
ELF symbol table. This is where any processor-specific special
section indices are handled. */
void (*elf_backend_symbol_processing) PARAMS ((bfd *, asymbol *));
boolean (*elf_backend_symbol_table_processing) PARAMS ((bfd *, elf_symbol_type *, int));
boolean (*elf_backend_section_processing) PARAMS ((bfd *, Elf32_Internal_Shdr *));
boolean (*elf_backend_section_from_shdr) PARAMS ((bfd *, Elf32_Internal_Shdr *, char *));
boolean (*elf_backend_fake_sections) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *));
boolean (*elf_backend_section_from_bfd_section) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *));
/* A function to do additional symbol processing after reading the
entire ELF symbol table. */
boolean (*elf_backend_symbol_table_processing) PARAMS ((bfd *,
elf_symbol_type *,
int));
/* A function to do additional processing on the ELF section header
just before writing it out. This is used to set the flags and
type fields for some sections, or to actually write out data for
unusual sections. */
boolean (*elf_backend_section_processing) PARAMS ((bfd *,
Elf32_Internal_Shdr *));
/* A function to handle unusual section types when creating BFD
sections from ELF sections. */
boolean (*elf_backend_section_from_shdr) PARAMS ((bfd *,
Elf32_Internal_Shdr *,
char *));
/* A function to set up the ELF section header for a BFD section in
preparation for writing it out. This is where the flags and type
fields are set for unusual sections. */
boolean (*elf_backend_fake_sections) PARAMS ((bfd *, Elf32_Internal_Shdr *,
asection *));
/* A function to get the ELF section index for a BFD section. If
this returns true, the section was found. If it is a normal ELF
section, *RETVAL should be left unchanged. If it is not a normal
ELF section *RETVAL should be set to the SHN_xxxx index. */
boolean (*elf_backend_section_from_bfd_section)
PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *retval));
/* The swapping table to use when dealing with ECOFF information.
Used for the MIPS ELF .mdebug section. */
const struct ecoff_debug_swap *elf_backend_ecoff_debug_swap;
};
struct elf_sym_extra