aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-arm.c
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2006-12-01 16:42:26 +0000
committerPaul Brook <paul@codesourcery.com>2006-12-01 16:42:26 +0000
commitf0291e4c153abd12f729d9314338775bfc614f03 (patch)
treeba8c330ee0e3dca36ea743a405ba12759256e1e1 /gas/config/tc-arm.c
parent945c025aafa9f4f36cdc5bb2f1dad083fa34a6d2 (diff)
downloadgdb-f0291e4c153abd12f729d9314338775bfc614f03.zip
gdb-f0291e4c153abd12f729d9314338775bfc614f03.tar.gz
gdb-f0291e4c153abd12f729d9314338775bfc614f03.tar.bz2
2006-12-01 Paul Brook <paul@codesourcery.com>
gas/ * config/tc-arm.c (arm_force_relocation): Return 1 for relocs against function symbols. gas/testsuite/ * gas/arm/thumbrel.s: New test. * gas/arm/thumbrel.d: New test.
Diffstat (limited to 'gas/config/tc-arm.c')
-rw-r--r--gas/config/tc-arm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 8ea3ad1..a7859dc 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -18962,6 +18962,12 @@ arm_force_relocation (struct fix * fixp)
|| fixp->fx_r_type == BFD_RELOC_ARM_LDR_PC_G0)
return 1;
+ /* Always generate relocations against function symbols. */
+ if (fixp->fx_r_type == BFD_RELOC_32
+ && fixp->fx_addsy
+ && (symbol_get_bfdsym (fixp->fx_addsy)->flags & BSF_FUNCTION))
+ return 1;
+
return generic_force_reloc (fixp);
}