aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-vax.h
diff options
context:
space:
mode:
Diffstat (limited to 'gas/config/tc-vax.h')
-rw-r--r--gas/config/tc-vax.h58
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