diff options
Diffstat (limited to 'gas/config/tc-vax.h')
-rw-r--r-- | gas/config/tc-vax.h | 58 |
1 files changed, 55 insertions, 3 deletions
diff --git a/gas/config/tc-vax.h b/gas/config/tc-vax.h index dbd8be1..4953ff4 100644 --- a/gas/config/tc-vax.h +++ b/gas/config/tc-vax.h @@ -23,12 +23,35 @@ #define TARGET_BYTES_BIG_ENDIAN 0 -#define NO_RELOC 0 -#define NOP_OPCODE 0x01 +#ifdef OBJ_AOUT +#ifdef TE_NetBSD +#define TARGET_FORMAT "a.out-vax-netbsd" +#endif +#ifndef TARGET_FORMAT +#define TARGET_FORMAT "a.out-vax-bsd" +#endif +#endif + +#ifdef OBJ_VMS +#define TARGET_FORMAT "vms-vax" +#endif + +#ifdef OBJ_ELF +#define TARGET_FORMAT "elf32-vax" +#endif + +#define BFD_ARCH bfd_arch_vax /* for non-BFD_ASSEMBLER */ +#define TARGET_ARCH bfd_arch_vax /* BFD_ASSEMBLER */ + +#ifdef BFD_ASSEMBLER +#define NO_RELOC BFD_RELOC_NONE +#else +#define NO_RELOC 0 +#endif +#define NOP_OPCODE 0x01 #define tc_aout_pre_write_hook(x) {;} /* not used */ #define tc_crawl_symbol_chain(a) {;} /* not used */ -#define tc_headers_hook(a) {;} /* not used */ #define md_operand(x) long md_chars_to_number PARAMS ((unsigned char *, int)); @@ -36,6 +59,35 @@ long md_chars_to_number PARAMS ((unsigned char *, int)); extern const struct relax_type md_relax_table[]; #define TC_GENERIC_RELAX_TABLE md_relax_table +/* This expression evaluates to false if the relocation is for a local object + for which we still want to do the relocation at runtime. True if we + are willing to perform this relocation while building the .o file. If + the reloc is against an externally visible symbol, then the assembler + should never do the relocation. */ + +#ifdef BFD_ASSEMBLER +#define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \ + ((FIX)->fx_addsy == NULL \ + || (! S_IS_EXTERNAL ((FIX)->fx_addsy) \ + && ! S_IS_WEAK ((FIX)->fx_addsy) \ + && S_IS_DEFINED ((FIX)->fx_addsy) \ + && ! S_IS_COMMON ((FIX)->fx_addsy))) +#define TC_FIX_ADJUSTABLE(FIX) \ + (!symbol_used_in_reloc_p ((FIX)) && tc_fix_adjustable ((FIX))) +#define tc_fix_adjustable(FIX) \ + ((FIX)->fx_r_type != BFD_RELOC_VTABLE_INHERIT \ + && (FIX)->fx_r_type != BFD_RELOC_32_PLT_PCREL \ + && (FIX)->fx_r_type != BFD_RELOC_32_GOT_PCREL \ + && (FIX)->fx_r_type != BFD_RELOC_VTABLE_ENTRY \ + && ! S_IS_EXTERNAL ((FIX)->fx_addsy) \ + && ! S_IS_WEAK ((FIX)->fx_addsy) \ + && ((FIX)->fx_pcrel \ + || ((FIX)->fx_subsy != NULL \ + && (S_GET_SEGMENT ((FIX)->fx_subsy) \ + == S_GET_SEGMENT ((FIX)->fx_addsy))) \ + || S_IS_LOCAL ((FIX)->fx_addsy))) +#endif + /* * Local Variables: * comment-column: 0 |