mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-08 20:12:21 +08:00
do not adjust relocations against thumb function names as the linker needs
this information.
This commit is contained in:
@ -1,3 +1,9 @@
|
||||
start-sanitize-armelf
|
||||
Thu Aug 20 14:45:08 1998 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
* config/tc-arm.c (arm_fix_adjustable): Do not adjust relocations
|
||||
against Thumb function names, as the linker needs this information.
|
||||
end-sanitize-armelf
|
||||
1998-08-20 Vladimir N. Makarov <vmakarov@cygnus.com>
|
||||
|
||||
* expr.c (operand): Check also that there is no advance in operand
|
||||
|
@ -6407,12 +6407,34 @@ arm_canonicalize_symbol_name (name)
|
||||
return name;
|
||||
}
|
||||
/* start-sanitize-armelf */
|
||||
#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
|
||||
also prevents relocations that are mips-16 specific, but I do not
|
||||
know why it does this.
|
||||
|
||||
FIXME:
|
||||
There is one other problem that ought to be addressed here, but
|
||||
which currently is not: Taking the address of a label (rather
|
||||
than a function) and then later jumping to that address. Such
|
||||
address also ought to have their bottom bit set (assuming that
|
||||
they reside in Thumb code), but at the moment they will not. */
|
||||
|
||||
boolean
|
||||
arm_fix_adjustable(fixP)
|
||||
fixS *fixP;
|
||||
arm_fix_adjustable (fixP)
|
||||
fixS *fixP;
|
||||
{
|
||||
if (fixP->fx_addsy == NULL)
|
||||
return 1;
|
||||
|
||||
if (THUMB_IS_FUNC (fixP->fx_addsy)
|
||||
&& fixP->fx_subsy == NULL)
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif /* OBJ_ELF */
|
||||
/* end-sanitize-armelf */
|
||||
|
||||
boolean
|
||||
|
Reference in New Issue
Block a user