diff options
Diffstat (limited to 'gas/config/tc-sparc.h')
-rw-r--r-- | gas/config/tc-sparc.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gas/config/tc-sparc.h b/gas/config/tc-sparc.h index 3dd2483..f24460c 100644 --- a/gas/config/tc-sparc.h +++ b/gas/config/tc-sparc.h @@ -77,6 +77,8 @@ extern void sparc_handle_align (struct frag *); #define MAX_MEM_FOR_RS_ALIGN_CODE (3 + 4 + 4) +#define DIFF_EXPR_OK /* foo-. gets turned into PC relative relocs */ + /* I know that "call 0" fails in sparc-coff if this doesn't return 1. I don't know about other relocation types, or other formats, yet. */ #ifdef OBJ_COFF @@ -128,6 +130,15 @@ extern void sparc_handle_align (struct frag *); /* Finish up the entire symtab. */ #define tc_adjust_symtab() sparc_adjust_symtab () extern void sparc_adjust_symtab (void); + +/* Don't allow the generic code to convert fixups involving the + subtraction of a label in the current section to pc-relative if we + don't have the necessary pc-relative relocation. */ +#define TC_FORCE_RELOCATION_SUB_LOCAL(FIX, SEG) \ + (!((FIX)->fx_r_type == BFD_RELOC_64 \ + || (FIX)->fx_r_type == BFD_RELOC_32 \ + || (FIX)->fx_r_type == BFD_RELOC_16 \ + || (FIX)->fx_r_type == BFD_RELOC_8)) #endif #ifdef OBJ_AOUT @@ -200,4 +211,10 @@ extern int sparc_cie_data_alignment; #define DWARF2_DEFAULT_RETURN_COLUMN 15 #define DWARF2_CIE_DATA_ALIGNMENT sparc_cie_data_alignment +/* cons_fix_new_sparc will chooose BFD_RELOC_SPARC_UA32 for the difference + expressions, but there is no corresponding PC-relative relocation; as this + is for debugging info though, alignment does not matter, so by disabling + this, BFD_RELOC_32_PCREL will be emitted directly instead. */ +#define CFI_DIFF_EXPR_OK 0 + /* end of tc-sparc.h */ |