diff options
Diffstat (limited to 'gas/config/tc-ft32.h')
-rw-r--r-- | gas/config/tc-ft32.h | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/gas/config/tc-ft32.h b/gas/config/tc-ft32.h index cc80c818a4..b34a886ec7 100644 --- a/gas/config/tc-ft32.h +++ b/gas/config/tc-ft32.h @@ -35,14 +35,6 @@ #define md_estimate_size_before_relax(A, B) (as_fatal (_("estimate size\n")), 0) #define md_convert_frag(B, S, F) (as_fatal (_("convert_frag\n"))) -/* If you define this macro, it should return the offset between the - address of a PC relative fixup and the position from which the PC - relative adjustment should be made. On many processors, the base - of a PC relative instruction is the next instruction, so this - macro would return the length of an instruction. */ -// #define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from (FIX) -// extern long md_pcrel_from (struct fix *); - /* PC relative operands are relative to the start of the opcode, and the operand is always one byte into the opcode. */ #define md_pcrel_from(FIX) \ @@ -50,4 +42,27 @@ #define md_section_align(SEGMENT, SIZE) (SIZE) +/* If this macro returns non-zero, it guarantees that a relocation will be emitted + even when the value can be resolved locally. Do that if linkrelax is turned on */ +#define TC_FORCE_RELOCATION(fix) ft32_force_relocation (fix) +#define TC_FORCE_RELOCATION_SUB_SAME(fix, seg) \ + (! SEG_NORMAL (seg) || ft32_force_relocation (fix)) +extern int ft32_force_relocation (struct fix *); + +#define TC_LINKRELAX_FIXUP(seg) \ + ((seg->flags & SEC_CODE) || (seg->flags & SEC_DEBUGGING)) + +/* This macro is evaluated for any fixup with a fx_subsy that + fixup_segment cannot reduce to a number. If the macro returns + false an error will be reported. */ +#define TC_VALIDATE_FIX_SUB(fix, seg) ft32_validate_fix_sub (fix) +extern int ft32_validate_fix_sub (struct fix *); + +/* The difference between same-section symbols may be affected by linker + relaxation, so do not resolve such expressions in the assembler. */ +#define md_allow_local_subtract(l,r,s) ft32_allow_local_subtract (l, r, s) +extern bfd_boolean ft32_allow_local_subtract (expressionS *, + expressionS *, + segT); + #define md_operand(x) |