aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2001-01-11 01:40:18 +0000
committerNick Clifton <nickc@redhat.com>2001-01-11 01:40:18 +0000
commit7a91e76ad19a372bc9f010500c75bd0a85ef7826 (patch)
tree1f44bbb79084bd1c6960d6ab1a5e6143d56af20e /gas/config
parentaa257fcdbd8bc5816be8bebb39d05dba68de0c95 (diff)
downloadgdb-7a91e76ad19a372bc9f010500c75bd0a85ef7826.zip
gdb-7a91e76ad19a372bc9f010500c75bd0a85ef7826.tar.gz
gdb-7a91e76ad19a372bc9f010500c75bd0a85ef7826.tar.bz2
Allow ADRL relocs to be adjusted in arm-coff
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-arm.c16
-rw-r--r--gas/config/tc-arm.h2
2 files changed, 17 insertions, 1 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index f23cb09..80318fa 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 365591c..0a823dd 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 *));