diff options
-rw-r--r-- | include/coff/internal.h | 97 |
1 files changed, 70 insertions, 27 deletions
diff --git a/include/coff/internal.h b/include/coff/internal.h index af60d22..1cf54d9 100644 --- a/include/coff/internal.h +++ b/include/coff/internal.h @@ -14,7 +14,7 @@ struct internal_filehdr unsigned short f_magic; /* magic number */ unsigned short f_nscns; /* number of sections */ long f_timdat; /* time & date stamp */ - long f_symptr; /* file pointer to symtab */ + bfd_vma f_symptr; /* file pointer to symtab */ long f_nsyms; /* number of symtab entries */ unsigned short f_opthdr; /* sizeof(optional hdr) */ unsigned short f_flags; /* flags */ @@ -47,12 +47,12 @@ struct internal_aouthdr { short magic; /* type of file */ short vstamp; /* version stamp */ - unsigned long tsize; /* text size in bytes, padded to FW bdry*/ - unsigned long dsize; /* initialized data " " */ - unsigned long bsize; /* uninitialized data " " */ - unsigned long entry; /* entry pt. */ - unsigned long text_start; /* base of text used for this file */ - unsigned long data_start; /* base of data used for this file */ + bfd_vma tsize; /* text size in bytes, padded to FW bdry*/ + bfd_vma dsize; /* initialized data " " */ + bfd_vma bsize; /* uninitialized data " " */ + bfd_vma entry; /* entry pt. */ + bfd_vma text_start; /* base of text used for this file */ + bfd_vma data_start; /* base of data used for this file */ /* i960 stuff */ unsigned long tagentries; /* number of tag entries to follow */ @@ -70,11 +70,17 @@ struct internal_aouthdr short o_modtype; /* Module type field, 1R,RE,RO */ unsigned long o_maxstack; /* max stack size allowed. */ - /* MIPS ECOFF stuff */ - unsigned long bss_start; /* Base of bss section. */ - unsigned long gp_value; /* GP register value. */ + /* ECOFF stuff */ + bfd_vma bss_start; /* Base of bss section. */ + bfd_vma gp_value; /* GP register value. */ unsigned long gprmask; /* General registers used. */ unsigned long cprmask[4]; /* Coprocessor registers used. */ + unsigned long fprmask; /* Floating pointer registers used. */ + + /* Apollo stuff */ + long o_inlib; + long o_sri; + long vid[2]; }; /********************** STORAGE CLASSES **********************/ @@ -123,6 +129,10 @@ struct internal_aouthdr #define C_PRAGMA 111 /* Advice to compiler or linker */ #define C_SEGMENT 112 /* 80960 segment name */ + /* Storage classes for m88k */ +#define C_SHADOW 107 /* shadow symbol */ +#define C_VERSION 108 /* coff version symbol */ + /* New storage classes for RS/6000 */ #define C_HIDEXT 107 /* Un-named external symbol */ #define C_BINCL 108 /* Marks beginning of include file */ @@ -149,12 +159,12 @@ struct internal_aouthdr struct internal_scnhdr { char s_name[8]; /* section name */ - long s_paddr; /* physical address, aliased s_nlib */ - long s_vaddr; /* virtual address */ - long s_size; /* section size */ - long s_scnptr; /* file ptr to raw data for section */ - long s_relptr; /* file ptr to relocation */ - long s_lnnoptr; /* file ptr to line numbers */ + bfd_vma s_paddr; /* physical address, aliased s_nlib */ + bfd_vma s_vaddr; /* virtual address */ + bfd_vma s_size; /* section size */ + bfd_vma s_scnptr; /* file ptr to raw data for section */ + bfd_vma s_relptr; /* file ptr to relocation */ + bfd_vma s_lnnoptr; /* file ptr to line numbers */ unsigned long s_nreloc; /* number of relocation entries */ unsigned long s_nlnno; /* number of line number entries*/ long s_flags; /* flags */ @@ -425,12 +435,12 @@ union internal_auxent struct internal_reloc { - long r_vaddr; /* Virtual address of reference */ + bfd_vma r_vaddr; /* Virtual address of reference */ long r_symndx; /* Index into symbol table */ unsigned short r_type; /* Relocation type */ - unsigned char r_size; /* Used on RS/6000 */ - unsigned long r_offset; - + unsigned char r_size; /* Used by RS/6000 and ECOFF */ + unsigned char r_extern; /* Used by ECOFF */ + unsigned long r_offset; /* Used by Alpha ECOFF, SPARC, others */ }; #define R_RELBYTE 017 @@ -439,6 +449,7 @@ struct internal_reloc #define R_PCRWORD 023 #define R_PCRLONG 024 +#define R_DIR16 01 #define R_DIR32 06 #define R_PCLONG 020 #define R_RELBYTE 017 @@ -462,12 +473,19 @@ struct internal_reloc #define R_GETPA (0x1e) #define R_TAGWORD (0x1f) #define R_JUMPTARG 0x20 /* strange 29k 00xx00xx reloc */ -#define R_MOVB1 0x41 /* Special h8 16bit or 8 bit reloc for mov.b */ -#define R_MOVB2 0x42 /* Special h8 opcode for 8bit which could - be 16 */ -#define R_JMP1 0x43 /* Special h8 16bit jmp which could be pcrel */ -#define R_JMP2 0x44 /* a branch which used to be a jmp */ -#define R_RELLONG_NEG 0x45 + + +#define R_MOVB1 0x41 /* Special h8 16bit or 8 bit reloc for mov.b */ +#define R_MOVB2 0x42 /* Special h8 opcode for 8bit which could be 16 */ +#define R_JMP1 0x43 /* Special h8 16bit jmp which could be pcrel */ +#define R_JMP2 0x44 /* a branch which used to be a jmp */ +#define R_RELLONG_NEG 0x45 + +#define R_JMPL1 0x46 /* Special h8 24bit jmp which could be pcrel */ +#define R_JMPL_B8 0x47 /* a 8 bit pcrel which used to be a jmp */ + +#define R_MOVLB1 0x48 /* Special h8 24bit or 8 bit reloc for mov.b */ +#define R_MOVLB2 0x49 /* Special h8 opcode for 8bit which could be 24 */ /* Z8k modes */ #define R_IMM16 0x01 /* 16 bit abs */ @@ -481,7 +499,7 @@ struct internal_reloc #define R_CALLR 0x05 /* callr 12 bit disp */ #define R_SEG 0x10 /* set if in segmented mode */ #define R_IMM4H 0x24 /* high nibble */ - +#define R_DISP7 0x25 /* djnz displacement */ /* H8500 modes */ @@ -493,3 +511,28 @@ struct internal_reloc #define R_H8500_LOW16 7 /* low 16 bits of 24 bit immediate */ #define R_H8500_IMM24 6 /* 24 bit immediate */ #define R_H8500_IMM32 8 /* 32 bit immediate */ +#define R_H8500_HIGH16 9 /* high 16 bits of 32 bit immediate */ + +/* SH modes */ + +#define R_SH_PCREL8 3 /* 8 bit pcrel */ +#define R_SH_PCREL16 4 /* 16 bit pcrel */ +#define R_SH_HIGH8 5 /* high 8 bits of 24 bit address */ +#define R_SH_LOW16 7 /* low 16 bits of 24 bit immediate */ +#define R_SH_IMM24 6 /* 24 bit immediate */ +#define R_SH_PCDISP8BY4 9 /* PC rel 8 bits *4 +ve */ +#define R_SH_PCDISP8BY2 10 /* PC rel 8 bits *2 +ve */ +#define R_SH_PCDISP8 11 /* 8 bit branch */ +#define R_SH_PCDISP 12 /* 12 bit branch */ +#define R_SH_IMM32 14 /* 32 bit immediate */ +#define R_SH_IMM8 16 +#define R_SH_IMM8BY2 17 +#define R_SH_IMM8BY4 18 +#define R_SH_IMM4 19 +#define R_SH_IMM4BY2 20 +#define R_SH_IMM4BY4 21 +#define R_SH_PCRELIMM8BY2 22 +#define R_SH_PCRELIMM8BY4 23 +#define R_SH_IMM16 24 /* 16 bit immediate */ + + |