From 7a91e76ad19a372bc9f010500c75bd0a85ef7826 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 11 Jan 2001 01:40:18 +0000 Subject: [PATCH] Allow ADRL relocs to be adjusted in arm-coff --- gas/ChangeLog | 5 +++++ gas/config/tc-arm.c | 16 ++++++++++++++++ gas/config/tc-arm.h | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 3555324e6ef..e1d14bddc5e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2001-01-10 Nick Clifton + + * config/tc-arm.c (arm_fix_adjustable): Define for OBJ_COFF. + * config/tc-arm.h (obj_fix_adjustable): Define for OBJ_COFF + 2001-01-10 Nick Clifton * symbols.c (DOLLAR_LABEL_CHAR): New constant - the magic diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index f23cb0907b3..80318fa365a 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -8537,6 +8537,22 @@ arm_validate_fix (fixP) return false; } +#ifdef OBJ_COFF +/* This is a little hack to help the gas/arm/adrl.s test. It prevents + local labels from being added to the output symbol table when they + are used with the ADRL pseudo op. The ADRL relocation should always + be resolved before the binbary is emitted, so it is safe to say that + it is adjustable. */ + +boolean +arm_fix_adjustable (fixP) + fixS * fixP; +{ + if (fixP->fx_r_type == BFD_RELOC_ARM_ADRL_IMMEDIATE) + return 1; + return 0; +} +#endif #ifdef OBJ_ELF /* Relocations against Thumb function names must be left unadjusted, so that the linker can use this information to correctly set the diff --git a/gas/config/tc-arm.h b/gas/config/tc-arm.h index 365591ccaba..0a823dda738 100644 --- a/gas/config/tc-arm.h +++ b/gas/config/tc-arm.h @@ -116,7 +116,7 @@ #define TC_FIX_TYPE PTR #define TC_INIT_FIX_DATA(FIXP) ((FIXP)->tc_fix_data = NULL) -#ifdef OBJ_ELF +#if defined OBJ_ELF || defined OBJ_COFF #include "write.h" /* For definition of fixS */ #define obj_fix_adjustable(fixP) arm_fix_adjustable (fixP) boolean arm_fix_adjustable PARAMS ((fixS *));