📄 bfd-in2.h
字号:
#define bfd_mach_ppc_505 505#define bfd_mach_ppc_601 601#define bfd_mach_ppc_602 602#define bfd_mach_ppc_603 603#define bfd_mach_ppc_ec603e 6031#define bfd_mach_ppc_604 604#define bfd_mach_ppc_620 620#define bfd_mach_ppc_630 630#define bfd_mach_ppc_750 750#define bfd_mach_ppc_860 860#define bfd_mach_ppc_a35 35#define bfd_mach_ppc_rs64ii 642#define bfd_mach_ppc_rs64iii 643#define bfd_mach_ppc_7400 7400 bfd_arch_rs6000, /* IBM RS/6000 */#define bfd_mach_rs6k 0#define bfd_mach_rs6k_rs1 6001#define bfd_mach_rs6k_rsc 6003#define bfd_mach_rs6k_rs2 6002 bfd_arch_hppa, /* HP PA RISC */ bfd_arch_d10v, /* Mitsubishi D10V */#define bfd_mach_d10v 0#define bfd_mach_d10v_ts2 2#define bfd_mach_d10v_ts3 3 bfd_arch_d30v, /* Mitsubishi D30V */ bfd_arch_m68hc11, /* Motorola 68HC11 */ bfd_arch_m68hc12, /* Motorola 68HC12 */ bfd_arch_z8k, /* Zilog Z8000 */#define bfd_mach_z8001 1#define bfd_mach_z8002 2 bfd_arch_h8500, /* Hitachi H8/500 */ bfd_arch_sh, /* Hitachi SH */#define bfd_mach_sh 0#define bfd_mach_sh2 0x20#define bfd_mach_sh_dsp 0x2d#define bfd_mach_sh3 0x30#define bfd_mach_sh3_dsp 0x3d#define bfd_mach_sh3e 0x3e#define bfd_mach_sh4 0x40 bfd_arch_alpha, /* Dec Alpha */#define bfd_mach_alpha_ev4 0x10#define bfd_mach_alpha_ev5 0x20#define bfd_mach_alpha_ev6 0x30 bfd_arch_arm, /* Advanced Risc Machines ARM */#define bfd_mach_arm_2 1#define bfd_mach_arm_2a 2#define bfd_mach_arm_3 3#define bfd_mach_arm_3M 4#define bfd_mach_arm_4 5#define bfd_mach_arm_4T 6#define bfd_mach_arm_5 7#define bfd_mach_arm_5T 8#define bfd_mach_arm_5TE 9#define bfd_mach_arm_XScale 10 bfd_arch_ns32k, /* National Semiconductors ns32000 */ bfd_arch_w65, /* WDC 65816 */ bfd_arch_tic30, /* Texas Instruments TMS320C30 */ bfd_arch_tic54x, /* Texas Instruments TMS320C54X */ bfd_arch_tic80, /* TI TMS320c80 (MVP) */ bfd_arch_v850, /* NEC V850 */#define bfd_mach_v850 0#define bfd_mach_v850e 'E'#define bfd_mach_v850ea 'A' bfd_arch_arc, /* ARC Cores */#define bfd_mach_arc_5 0#define bfd_mach_arc_6 1#define bfd_mach_arc_7 2#define bfd_mach_arc_8 3 bfd_arch_m32r, /* Mitsubishi M32R/D */#define bfd_mach_m32r 0 /* backwards compatibility */#define bfd_mach_m32rx 'x' bfd_arch_mn10200, /* Matsushita MN10200 */ bfd_arch_mn10300, /* Matsushita MN10300 */#define bfd_mach_mn10300 300#define bfd_mach_am33 330 bfd_arch_fr30,#define bfd_mach_fr30 0x46523330 bfd_arch_mcore, bfd_arch_ia64, /* HP/Intel ia64 */#define bfd_mach_ia64_elf64 0#define bfd_mach_ia64_elf32 1 bfd_arch_pj, bfd_arch_avr, /* Atmel AVR microcontrollers */#define bfd_mach_avr1 1#define bfd_mach_avr2 2#define bfd_mach_avr3 3#define bfd_mach_avr4 4#define bfd_mach_avr5 5 bfd_arch_cris, /* Axis CRIS */ bfd_arch_last };typedef struct bfd_arch_info{ int bits_per_word; int bits_per_address; int bits_per_byte; enum bfd_architecture arch; unsigned long mach; const char *arch_name; const char *printable_name; unsigned int section_align_power; /* True if this is the default machine for the architecture. */ boolean the_default; const struct bfd_arch_info * (*compatible) PARAMS ((const struct bfd_arch_info *a, const struct bfd_arch_info *b)); boolean (*scan) PARAMS ((const struct bfd_arch_info *, const char *)); const struct bfd_arch_info *next;} bfd_arch_info_type;const char *bfd_printable_name PARAMS ((bfd *abfd));const bfd_arch_info_type *bfd_scan_arch PARAMS ((const char *string));const char **bfd_arch_list PARAMS ((void));const bfd_arch_info_type *bfd_arch_get_compatible PARAMS (( const bfd *abfd, const bfd *bbfd));voidbfd_set_arch_info PARAMS ((bfd *abfd, const bfd_arch_info_type *arg));enum bfd_architecturebfd_get_arch PARAMS ((bfd *abfd));unsigned longbfd_get_mach PARAMS ((bfd *abfd));unsigned intbfd_arch_bits_per_byte PARAMS ((bfd *abfd));unsigned intbfd_arch_bits_per_address PARAMS ((bfd *abfd));const bfd_arch_info_type *bfd_get_arch_info PARAMS ((bfd *abfd));const bfd_arch_info_type *bfd_lookup_arch PARAMS ((enum bfd_architecture arch, unsigned long machine));const char *bfd_printable_arch_mach PARAMS ((enum bfd_architecture arch, unsigned long machine));unsigned intbfd_octets_per_byte PARAMS ((bfd *abfd));unsigned intbfd_arch_mach_octets_per_byte PARAMS ((enum bfd_architecture arch, unsigned long machine));typedef enum bfd_reloc_status{ /* No errors detected */ bfd_reloc_ok, /* The relocation was performed, but there was an overflow. */ bfd_reloc_overflow, /* The address to relocate was not within the section supplied. */ bfd_reloc_outofrange, /* Used by special functions */ bfd_reloc_continue, /* Unsupported relocation size requested. */ bfd_reloc_notsupported, /* Unused */ bfd_reloc_other, /* The symbol to relocate against was undefined. */ bfd_reloc_undefined, /* The relocation was performed, but may not be ok - presently generated only when linking i960 coff files with i960 b.out symbols. If this type is returned, the error_message argument to bfd_perform_relocation will be set. */ bfd_reloc_dangerous } bfd_reloc_status_type;typedef struct reloc_cache_entry{ /* A pointer into the canonical table of pointers */ struct symbol_cache_entry **sym_ptr_ptr; /* offset in section */ bfd_size_type address; /* addend for relocation value */ bfd_vma addend; /* Pointer to how to perform the required relocation */ reloc_howto_type *howto;} arelent;enum complain_overflow{ /* Do not complain on overflow. */ complain_overflow_dont, /* Complain if the bitfield overflows, whether it is considered as signed or unsigned. */ complain_overflow_bitfield, /* Complain if the value overflows when considered as signed number. */ complain_overflow_signed, /* Complain if the value overflows when considered as an unsigned number. */ complain_overflow_unsigned};struct reloc_howto_struct{ /* The type field has mainly a documentary use - the back end can do what it wants with it, though normally the back end's external idea of what a reloc number is stored in this field. For example, a PC relative word relocation in a coff environment has the type 023 - because that's what the outside world calls a R_PCRWORD reloc. */ unsigned int type; /* The value the final relocation is shifted right by. This drops unwanted data from the relocation. */ unsigned int rightshift; /* The size of the item to be relocated. This is *not* a power-of-two measure. To get the number of bytes operated on by a type of relocation, use bfd_get_reloc_size. */ int size; /* The number of bits in the item to be relocated. This is used when doing overflow checking. */ unsigned int bitsize; /* Notes that the relocation is relative to the location in the data section of the addend. The relocation function will subtract from the relocation value the address of the location being relocated. */ boolean pc_relative; /* The bit position of the reloc value in the destination. The relocated value is left shifted by this amount. */ unsigned int bitpos; /* What type of overflow error should be checked for when relocating. */ enum complain_overflow complain_on_overflow; /* If this field is non null, then the supplied function is called rather than the normal function. This allows really strange relocation methods to be accomodated (e.g., i960 callj instructions). */ bfd_reloc_status_type (*special_function) PARAMS ((bfd *abfd, arelent *reloc_entry, struct symbol_cache_entry *symbol, PTR data, asection *input_section, bfd *output_bfd, char **error_message)); /* The textual name of the relocation type. */ char *name; /* Some formats record a relocation addend in the section contents rather than with the relocation. For ELF formats this is the distinction between USE_REL and USE_RELA (though the code checks for USE_REL == 1/0). The value of this field is TRUE if the addend is recorded with the section contents; when performing a partial link (ld -r) the section contents (the data) will be modified. The value of this field is FALSE if addends are recorded with the relocation (in arelent.addend); when performing a partial link the relocation will be modified. All relocations for all ELF USE_RELA targets should set this field to FALSE (values of TRUE should be looked on with suspicion). However, the converse is not true: not all relocations of all ELF USE_REL targets set this field to TRUE. Why this is so is peculiar to each particular target. For relocs that aren't used in partial links (e.g. GOT stuff) it doesn't matter what this is set to. */ boolean partial_inplace; /* The src_mask selects which parts of the read in data are to be used in the relocation sum. E.g., if this was an 8 bit byte of data which we read and relocated, this would be 0x000000ff. When we have relocs which have an addend, such as sun4 extended relocs, the value in the offset part of a relocating field is garbage so we never use it. In this case the mask would be 0x00000000. */ bfd_vma src_mask; /* The dst_mask selects which parts of the instruction are replaced into the instruction. In most cases src_mask == dst_mask, except in the above special case, where dst_mask would be 0x000000ff, and src_mask would be 0x00000000. */ bfd_vma dst_mask; /* When some formats create PC relative instructions, they leave the value of the pc of the place being relocated in the offset slot of the instruction, so that a PC relative relocation can be made just by adding in an ordinary offset (e.g., sun3 a.out). Some formats leave the displacement part of an instruction empty (e.g., m88k bcs); this flag signals the fact.*/ boolean pcrel_offset;};#define HOWTO(C, R,S,B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \ {(unsigned)C,R,S,B, P, BI, O,SF,NAME,INPLACE,MASKSRC,MASKDST,PC}#define NEWHOWTO( FUNCTION, NAME,SIZE,REL,IN) HOWTO(0,0,SIZE,0,REL,0,complain_overflow_dont,FUNCTION, NAME,false,0,0,IN)#define EMPTY_HOWTO(C) \ HOWTO((C),0,0,0,false,0,complain_overflow_dont,NULL,NULL,false,0,0,false)#define HOWTO_PREPARE(relocation, symbol) \ { \ if (symbol != (asymbol *)NULL) { \ if (bfd_is_com_section (symbol->section)) { \ relocation = 0; \ } \ else { \ relocation = symbol->value; \ } \ } \}unsigned intbfd_get_reloc_size PARAMS ((reloc_howto_type *));typedef struct relent_chain { arelent relent; struct relent_chain *next;} arelent_chain;bfd_reloc_status_typebfd_check_overflow PARAMS ((enum complain_overflow how, unsigned int bitsize, unsigned int rightshift, unsigned int addrsize, bfd_vma relocation));bfd_reloc_status_typebfd_perform_relocation PARAMS ((bfd *abfd, arelent *reloc_entry, PTR data, asection *input_section, bfd *output_bfd, char **error_message));bfd_reloc_status_typebf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -