* targets.c: Move enum target_flavour outside of struct and change
the name to enum bfd_flavour. This means bfd clients can use it. * bfd-in.h: Add macro bfd_get_flavour. * bfd-in2.h: Rebuilt.
This commit is contained in:
parent
0eed42deee
commit
9e461dac71
2 changed files with 86 additions and 40 deletions
|
@ -1,5 +1,10 @@
|
||||||
Sun Oct 31 09:35:49 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
Sun Oct 31 09:35:49 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||||
|
|
||||||
|
* targets.c: Move enum target_flavour outside of struct and change
|
||||||
|
the name to enum bfd_flavour. This means bfd clients can use it.
|
||||||
|
* bfd-in.h: Add macro bfd_get_flavour.
|
||||||
|
* bfd-in2.h: Rebuilt.
|
||||||
|
|
||||||
* som.c: Add comment about how abort() on corrupt executable is evil.
|
* som.c: Add comment about how abort() on corrupt executable is evil.
|
||||||
|
|
||||||
Fri Oct 29 16:04:33 1993 David J. Mackenzie (djm@thepub.cygnus.com)
|
Fri Oct 29 16:04:33 1993 David J. Mackenzie (djm@thepub.cygnus.com)
|
||||||
|
|
121
bfd/bfd-in2.h
121
bfd/bfd-in2.h
|
@ -160,17 +160,50 @@ typedef enum bfd_format {
|
||||||
bfd_type_end} /* marks the end; don't use it! */
|
bfd_type_end} /* marks the end; don't use it! */
|
||||||
bfd_format;
|
bfd_format;
|
||||||
|
|
||||||
/* Object file flag values */
|
/* Values that may appear in the flags field of a BFD. These also
|
||||||
|
appear in the object_flags field of the bfd_target structure, where
|
||||||
|
they indicate the set of flags used by that backend (not all flags
|
||||||
|
are meaningful for all object file formats) (FIXME: at the moment,
|
||||||
|
the object_flags values have mostly just been copied from backend
|
||||||
|
to another, and are not necessarily correct). */
|
||||||
|
|
||||||
|
/* No flags. */
|
||||||
#define NO_FLAGS 0x00
|
#define NO_FLAGS 0x00
|
||||||
|
|
||||||
|
/* BFD contains relocation entries. */
|
||||||
#define HAS_RELOC 0x01
|
#define HAS_RELOC 0x01
|
||||||
|
|
||||||
|
/* BFD is directly executable. */
|
||||||
#define EXEC_P 0x02
|
#define EXEC_P 0x02
|
||||||
|
|
||||||
|
/* BFD has line number information (basically used for F_LNNO in a
|
||||||
|
COFF header). */
|
||||||
#define HAS_LINENO 0x04
|
#define HAS_LINENO 0x04
|
||||||
|
|
||||||
|
/* BFD has debugging information. */
|
||||||
#define HAS_DEBUG 0x08
|
#define HAS_DEBUG 0x08
|
||||||
|
|
||||||
|
/* BFD has symbols. */
|
||||||
#define HAS_SYMS 0x10
|
#define HAS_SYMS 0x10
|
||||||
|
|
||||||
|
/* BFD has local symbols (basically used for F_LSYMS in a COFF
|
||||||
|
header). */
|
||||||
#define HAS_LOCALS 0x20
|
#define HAS_LOCALS 0x20
|
||||||
|
|
||||||
|
/* BFD is a dynamic object. */
|
||||||
#define DYNAMIC 0x40
|
#define DYNAMIC 0x40
|
||||||
|
|
||||||
|
/* Text section is write protected (if D_PAGED is not set, this is
|
||||||
|
like an a.out NMAGIC file) (the linker sets this by default, but
|
||||||
|
clears it for -r or -N). */
|
||||||
#define WP_TEXT 0x80
|
#define WP_TEXT 0x80
|
||||||
|
|
||||||
|
/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
|
||||||
|
linker sets this by default, but clears it for -r or -n or -N). */
|
||||||
#define D_PAGED 0x100
|
#define D_PAGED 0x100
|
||||||
|
|
||||||
|
/* BFD is relaxable (this means that bfd_relax_section may be able to
|
||||||
|
do something). */
|
||||||
#define BFD_IS_RELAXABLE 0x200
|
#define BFD_IS_RELAXABLE 0x200
|
||||||
|
|
||||||
/* symbols and relocation */
|
/* symbols and relocation */
|
||||||
|
@ -387,6 +420,7 @@ CAT(NAME,_bfd_make_debug_symbol)
|
||||||
#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
|
#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
|
||||||
#define bfd_get_format(abfd) ((abfd)->format)
|
#define bfd_get_format(abfd) ((abfd)->format)
|
||||||
#define bfd_get_target(abfd) ((abfd)->xvec->name)
|
#define bfd_get_target(abfd) ((abfd)->xvec->name)
|
||||||
|
#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
|
||||||
#define bfd_get_file_flags(abfd) ((abfd)->flags)
|
#define bfd_get_file_flags(abfd) ((abfd)->flags)
|
||||||
#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
|
#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
|
||||||
#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
|
#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
|
||||||
|
@ -1000,9 +1034,17 @@ typedef CONST struct reloc_howto_struct
|
||||||
unwanted data from the relocation. */
|
unwanted data from the relocation. */
|
||||||
unsigned int rightshift;
|
unsigned int rightshift;
|
||||||
|
|
||||||
/* The size of the item to be relocated - 0, is one byte, 1 is 2
|
/* The size of the item to be relocated. This is *not* a
|
||||||
bytes, 2 is four bytes. A negative value indicates that the
|
power-of-two measure.
|
||||||
result is to be subtracted from the data. */
|
0 : one byte
|
||||||
|
1 : two bytes
|
||||||
|
2 : four bytes
|
||||||
|
3 : nothing done (unless special_function is nonzero)
|
||||||
|
4 : eight bytes
|
||||||
|
-2 : two bytes, result should be subtracted from the
|
||||||
|
data instead of added
|
||||||
|
There is currently no trivial way to extract a "number of
|
||||||
|
bytes" from a howto pointer. */
|
||||||
int size;
|
int size;
|
||||||
|
|
||||||
/* The number of bits in the item to be relocated. This is used
|
/* The number of bits in the item to be relocated. This is used
|
||||||
|
@ -1097,47 +1139,45 @@ bfd_perform_relocation
|
||||||
bfd *output_bfd));
|
bfd *output_bfd));
|
||||||
|
|
||||||
typedef enum bfd_reloc_code_real
|
typedef enum bfd_reloc_code_real
|
||||||
|
|
||||||
{
|
{
|
||||||
/* 64 bits wide, simple reloc */
|
/* Basic absolute relocations */
|
||||||
BFD_RELOC_64,
|
BFD_RELOC_64,
|
||||||
/* 64 bits, PC-relative */
|
|
||||||
BFD_RELOC_64_PCREL,
|
|
||||||
|
|
||||||
/* 32 bits wide, simple reloc */
|
|
||||||
BFD_RELOC_32,
|
BFD_RELOC_32,
|
||||||
/* 32 bits, PC-relative */
|
|
||||||
BFD_RELOC_32_PCREL,
|
|
||||||
|
|
||||||
/* 16 bits wide, simple reloc */
|
|
||||||
BFD_RELOC_16,
|
BFD_RELOC_16,
|
||||||
/* 16 bits, PC-relative */
|
|
||||||
BFD_RELOC_16_PCREL,
|
|
||||||
|
|
||||||
/* 8 bits wide, simple */
|
|
||||||
BFD_RELOC_8,
|
BFD_RELOC_8,
|
||||||
/* 8 bits wide, pc relative */
|
|
||||||
|
/* PC-relative relocations */
|
||||||
|
BFD_RELOC_64_PCREL,
|
||||||
|
BFD_RELOC_32_PCREL,
|
||||||
|
BFD_RELOC_24_PCREL, /* used by i960 */
|
||||||
|
BFD_RELOC_16_PCREL,
|
||||||
BFD_RELOC_8_PCREL,
|
BFD_RELOC_8_PCREL,
|
||||||
/* 8 bits wide, but used to form an address like 0xffnn */
|
|
||||||
BFD_RELOC_8_FFnn,
|
/* Linkage-table relative */
|
||||||
|
BFD_RELOC_32_BASEREL,
|
||||||
|
BFD_RELOC_16_BASEREL,
|
||||||
|
BFD_RELOC_8_BASEREL,
|
||||||
|
|
||||||
/* The type of reloc used to build a contructor table - at the moment
|
/* The type of reloc used to build a contructor table - at the moment
|
||||||
probably a 32 bit wide abs address, but the cpu can choose. */
|
probably a 32 bit wide abs address, but the cpu can choose. */
|
||||||
BFD_RELOC_CTOR,
|
BFD_RELOC_CTOR,
|
||||||
|
|
||||||
/* High 22 bits of 32-bit value; simple reloc. */
|
/* 8 bits wide, but used to form an address like 0xffnn */
|
||||||
|
BFD_RELOC_8_FFnn,
|
||||||
|
|
||||||
|
/* 32-bit pc-relative, shifted right 2 bits (i.e., 30-bit
|
||||||
|
word displacement, e.g. for SPARC) */
|
||||||
|
BFD_RELOC_32_PCREL_S2,
|
||||||
|
|
||||||
|
/* High 22 bits of 32-bit value, placed into lower 22 bits of
|
||||||
|
target word; simple reloc. */
|
||||||
BFD_RELOC_HI22,
|
BFD_RELOC_HI22,
|
||||||
/* Low 10 bits. */
|
/* Low 10 bits. */
|
||||||
BFD_RELOC_LO10,
|
BFD_RELOC_LO10,
|
||||||
|
|
||||||
/* Reloc types used for i960/b.out. */
|
/* Reloc types used for i960/b.out. */
|
||||||
BFD_RELOC_24_PCREL,
|
|
||||||
BFD_RELOC_I960_CALLJ,
|
BFD_RELOC_I960_CALLJ,
|
||||||
|
|
||||||
/* 32-bit pc-relative, shifted right 2 bits (i.e., 30-bit
|
|
||||||
word displacement, e.g. for SPARC) */
|
|
||||||
BFD_RELOC_32_PCREL_S2,
|
|
||||||
|
|
||||||
/* now for the sparc/elf codes */
|
/* now for the sparc/elf codes */
|
||||||
BFD_RELOC_NONE, /* actually used */
|
BFD_RELOC_NONE, /* actually used */
|
||||||
BFD_RELOC_SPARC_WDISP22,
|
BFD_RELOC_SPARC_WDISP22,
|
||||||
|
@ -1563,7 +1603,7 @@ struct _bfd
|
||||||
struct bout_data_struct *bout_data;
|
struct bout_data_struct *bout_data;
|
||||||
struct sun_core_struct *sun_core_data;
|
struct sun_core_struct *sun_core_data;
|
||||||
struct trad_core_struct *trad_core_data;
|
struct trad_core_struct *trad_core_data;
|
||||||
struct hppa_data_struct *hppa_data;
|
struct som_data_struct *som_data;
|
||||||
struct hpux_core_struct *hpux_core_data;
|
struct hpux_core_struct *hpux_core_data;
|
||||||
struct sgi_core_struct *sgi_core_data;
|
struct sgi_core_struct *sgi_core_data;
|
||||||
struct lynx_core_struct *lynx_core_data;
|
struct lynx_core_struct *lynx_core_data;
|
||||||
|
@ -1675,21 +1715,22 @@ core_file_matches_executable_p
|
||||||
((*((bfd)->xvec->message)) arglist)
|
((*((bfd)->xvec->message)) arglist)
|
||||||
#define BFD_SEND_FMT(bfd, message, arglist) \
|
#define BFD_SEND_FMT(bfd, message, arglist) \
|
||||||
(((bfd)->xvec->message[(int)((bfd)->format)]) arglist)
|
(((bfd)->xvec->message[(int)((bfd)->format)]) arglist)
|
||||||
|
enum bfd_flavour {
|
||||||
|
bfd_target_unknown_flavour,
|
||||||
|
bfd_target_aout_flavour,
|
||||||
|
bfd_target_coff_flavour,
|
||||||
|
bfd_target_ecoff_flavour,
|
||||||
|
bfd_target_elf_flavour,
|
||||||
|
bfd_target_ieee_flavour,
|
||||||
|
bfd_target_nlm_flavour,
|
||||||
|
bfd_target_oasys_flavour,
|
||||||
|
bfd_target_tekhex_flavour,
|
||||||
|
bfd_target_srec_flavour,
|
||||||
|
bfd_target_som_flavour};
|
||||||
typedef struct bfd_target
|
typedef struct bfd_target
|
||||||
{
|
{
|
||||||
char *name;
|
char *name;
|
||||||
enum target_flavour {
|
enum bfd_flavour flavour;
|
||||||
bfd_target_unknown_flavour,
|
|
||||||
bfd_target_aout_flavour,
|
|
||||||
bfd_target_coff_flavour,
|
|
||||||
bfd_target_ecoff_flavour,
|
|
||||||
bfd_target_elf_flavour,
|
|
||||||
bfd_target_ieee_flavour,
|
|
||||||
bfd_target_nlm_flavour,
|
|
||||||
bfd_target_oasys_flavour,
|
|
||||||
bfd_target_tekhex_flavour,
|
|
||||||
bfd_target_srec_flavour,
|
|
||||||
bfd_target_hppa_flavour} flavour;
|
|
||||||
boolean byteorder_big_p;
|
boolean byteorder_big_p;
|
||||||
boolean header_byteorder_big_p;
|
boolean header_byteorder_big_p;
|
||||||
flagword object_flags;
|
flagword object_flags;
|
||||||
|
|
Loading…
Reference in a new issue