diff options
Diffstat (limited to 'gas/config/tc-m68hc11.h')
-rw-r--r-- | gas/config/tc-m68hc11.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gas/config/tc-m68hc11.h b/gas/config/tc-m68hc11.h index c57637f..e7ea44c 100644 --- a/gas/config/tc-m68hc11.h +++ b/gas/config/tc-m68hc11.h @@ -93,6 +93,15 @@ extern int m68hc11_parse_long_option PARAMS ((char *)); #define TC_GENERIC_RELAX_TABLE md_relax_table extern struct relax_type md_relax_table[]; +/* GAS only handles relaxations for pc-relative data targeting addresses + in the same segment, so we have to handle the rest on our own. */ +#define md_relax_frag(SEG, FRAGP, STRETCH) \ + ((FRAGP)->fr_symbol != NULL \ + && S_GET_SEGMENT ((FRAGP)->fr_symbol) == (SEG) \ + ? relax_frag (SEG, FRAGP, STRETCH) \ + : m68hc11_relax_frag (SEG, FRAGP, STRETCH)) +extern long m68hc11_relax_frag PARAMS ((segT, fragS*, long)); + #define TC_HANDLES_FX_DONE #define DIFF_EXPR_OK /* .-foo gets turned into PC relative relocs */ |