mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 06:45:56 +08:00
gas/
* symbols.c (S_FORCE_RELOC): Return true for indirect functions even if !strict. * expr.c (operand): Don't convert absolute symbols to constants if S_FORCE_RELOC is true. (expr): Only reduce subtractions between different symbols if S_FORCE_RELOC is false for both of them. * write.c (fixup_segment): Don't remove symbols if S_FORCE_RELOC is true for them, regardless of their segment. gas/testsuite/ * gas/i386/ifunc-2.s, gas/i386/ifunc-2.l: New test. * gas/i386/ifunc-3.s, gas/i386/ifunc-3.d: Likeise. * gas/i386/i386.exp: Run them.
This commit is contained in:
@ -2065,9 +2065,9 @@ S_FORCE_RELOC (symbolS *s, int strict)
|
||||
|
||||
return ((strict
|
||||
&& ((s->bsym->flags & BSF_WEAK) != 0
|
||||
|| (s->bsym->flags & BSF_GNU_INDIRECT_FUNCTION) != 0
|
||||
|| (EXTERN_FORCE_RELOC
|
||||
&& (s->bsym->flags & BSF_GLOBAL) != 0)))
|
||||
|| (s->bsym->flags & BSF_GNU_INDIRECT_FUNCTION) != 0
|
||||
|| s->bsym->section == undefined_section
|
||||
|| bfd_is_com_section (s->bsym->section));
|
||||
}
|
||||
|
Reference in New Issue
Block a user