From 736976bbb98a16df628d8d7406d80a1c86cf755e Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Sat, 1 Apr 2006 22:39:54 +0000 Subject: [PATCH] 2005-04-01 Paul Brook * config/tc-arm.c (arm_fix_adjustable): Return 0 for function symbols. --- ChangeLog.csl | 4 ++++ gas/config/tc-arm.c | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ChangeLog.csl b/ChangeLog.csl index b139379d734..75d7adb9ccf 100644 --- a/ChangeLog.csl +++ b/ChangeLog.csl @@ -1,3 +1,7 @@ +2005-04-01 Paul Brook + + * config/tc-arm.c (arm_fix_adjustable): Return 0 for function symbols. + 2006-03-30 Mark Mitchell * libiberty/configure.ac: Add cygpath for mingw hosts. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 5af2cd4efbd..05158eec024 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -12614,9 +12614,9 @@ arm_fix_adjustable (fixS * fixP) #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 - bottom bit of their addresses. The MIPS version of this function +/* Relocations against function names must be left unadjusted, + so that the linker can use this information to generate interworking + stubs. The MIPS version of this function also prevents relocations that are mips-16 specific, but I do not know why it does this. @@ -12633,6 +12633,10 @@ arm_fix_adjustable (fixS * fixP) if (fixP->fx_addsy == NULL) return 1; + /* Preserve relocations against symbols with function type. */ + if (symbol_get_bfdsym (fixP->fx_addsy)->flags & BSF_FUNCTION) + return 0; + if (THUMB_IS_FUNC (fixP->fx_addsy) && fixP->fx_subsy == NULL) return 0; -- 2.47.2