* 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:
parent
7420b02b8d
commit
95469b0290
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
75
bfd/libelf.h
75
bfd/libelf.h
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user