aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-arm.c16
-rw-r--r--gas/config/tc-arm.h2
3 files changed, 22 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3555324..e1d14bd 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,10 @@
2001-01-10 Nick Clifton <nickc@redhat.com>
+ * 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 <nickc@redhat.com>
+
* symbols.c (DOLLAR_LABEL_CHAR): New constant - the magic
character used to dollar local symbols.
(LOCAL_LABEL_CHAR): New constant - the magic character used to
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 *));