* 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)
|
Mon Nov 8 18:13:14 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
|
||||||
|
|
||||||
* elfcode.h (bfd_section_from_shdr): Remove duplicate assignment
|
* 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
|
#ifndef elf_backend_section_from_bfd_section
|
||||||
#define elf_backend_section_from_bfd_section 0 /* elf_backend_section_from_bfd_section */
|
#define elf_backend_section_from_bfd_section 0 /* elf_backend_section_from_bfd_section */
|
||||||
#endif
|
#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 =
|
static CONST struct elf_backend_data elf32_bed =
|
||||||
{
|
{
|
||||||
|
@ -89,16 +92,16 @@ static CONST struct elf_backend_data elf32_bed =
|
||||||
#endif
|
#endif
|
||||||
0, /* elf_64_p */
|
0, /* elf_64_p */
|
||||||
ELF_ARCH, /* arch */
|
ELF_ARCH, /* arch */
|
||||||
|
ELF_MAXPAGESIZE, /* maxpagesize */
|
||||||
elf_info_to_howto, /* elf_info_to_howto */
|
elf_info_to_howto, /* elf_info_to_howto */
|
||||||
elf_info_to_howto_rel, /* elf_info_to_howto_rel */
|
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_processing, /* elf_backend_symbol_processing */
|
||||||
elf_backend_symbol_table_processing, /* elf_backend_symbol_table_processing */
|
elf_backend_symbol_table_processing, /* elf_backend_symbol_table_processing */
|
||||||
elf_backend_section_processing, /* elf_backend_section_processing */
|
elf_backend_section_processing, /* elf_backend_section_processing */
|
||||||
elf_backend_section_from_shdr, /* elf_backend_section_from_shdr */
|
elf_backend_section_from_shdr, /* elf_backend_section_from_shdr */
|
||||||
elf_backend_fake_sections, /* elf_backend_fake_sections */
|
elf_backend_fake_sections, /* elf_backend_fake_sections */
|
||||||
elf_backend_section_from_bfd_section, /* elf_backend_section_from_bfd_section */
|
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
|
#ifdef TARGET_BIG_SYM
|
||||||
|
|
|
@ -59,6 +59,28 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||||||
#define ELF_MAXPAGESIZE 1
|
#define ELF_MAXPAGESIZE 1
|
||||||
#endif
|
#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 =
|
static CONST struct elf_backend_data elf64_bed =
|
||||||
{
|
{
|
||||||
#ifdef USE_REL
|
#ifdef USE_REL
|
||||||
|
@ -66,15 +88,18 @@ static CONST struct elf_backend_data elf64_bed =
|
||||||
#else
|
#else
|
||||||
1, /* use_rela_p */
|
1, /* use_rela_p */
|
||||||
#endif
|
#endif
|
||||||
0, /* elf_64_p */
|
1, /* elf_64_p */
|
||||||
ELF_ARCH, /* arch */
|
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_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
|
#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)
|
||||||
#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
|
typedef struct
|
||||||
{
|
{
|
||||||
|
/* The BFD symbol. */
|
||||||
asymbol symbol;
|
asymbol symbol;
|
||||||
|
/* ELF symbol information. */
|
||||||
Elf_Internal_Sym internal_elf_sym;
|
Elf_Internal_Sym internal_elf_sym;
|
||||||
|
/* Backend specific information. */
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
unsigned int hppa_arg_reloc;
|
unsigned int hppa_arg_reloc;
|
||||||
|
@ -54,24 +62,77 @@ typedef struct
|
||||||
tc_data;
|
tc_data;
|
||||||
} elf_symbol_type;
|
} elf_symbol_type;
|
||||||
|
|
||||||
|
/* Constant information held for an ELF backend. */
|
||||||
|
|
||||||
struct elf_backend_data
|
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;
|
int use_rela_p;
|
||||||
|
|
||||||
|
/* Whether this backend is 64 bits or not. FIXME: Who cares? */
|
||||||
int elf_64_p;
|
int elf_64_p;
|
||||||
|
|
||||||
|
/* The architecture for this backend. */
|
||||||
enum bfd_architecture arch;
|
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 *,
|
void (*elf_info_to_howto) PARAMS ((bfd *, arelent *,
|
||||||
Elf_Internal_Rela *));
|
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 *,
|
void (*elf_info_to_howto_rel) PARAMS ((bfd *, arelent *,
|
||||||
Elf_Internal_Rel *));
|
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 *));
|
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 *));
|
/* A function to do additional symbol processing after reading the
|
||||||
boolean (*elf_backend_section_from_shdr) PARAMS ((bfd *, Elf32_Internal_Shdr *, char *));
|
entire ELF symbol table. */
|
||||||
boolean (*elf_backend_fake_sections) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *));
|
boolean (*elf_backend_symbol_table_processing) PARAMS ((bfd *,
|
||||||
boolean (*elf_backend_section_from_bfd_section) PARAMS ((bfd *, Elf32_Internal_Shdr *, asection *, int *));
|
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
|
struct elf_sym_extra
|
||||||
|
|
Loading…
Reference in New Issue