diff options
author | Alan Modra <amodra@gmail.com> | 2017-04-27 12:20:10 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-04-27 12:20:10 +0930 |
commit | f2d830a50def7a00a911620a3e9c7d920e5ef0f0 (patch) | |
tree | 6336aa0144377a6301da4428445dcee69dd89cfc | |
parent | 76c20d54ca5042e11af9ddf5723cc24cf47736ec (diff) | |
download | gdb-f2d830a50def7a00a911620a3e9c7d920e5ef0f0.zip gdb-f2d830a50def7a00a911620a3e9c7d920e5ef0f0.tar.gz gdb-f2d830a50def7a00a911620a3e9c7d920e5ef0f0.tar.bz2 |
Tidy S_FORCE_RELOC
Separate out symbol flag reasons from section reasons to force a
reloc. Yes, this adds another section test to the local symbol case
too.
* symbols.c (S_FORCE_RELOC): Separate section and symbol tests.
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/symbols.c | 16 |
2 files changed, 14 insertions, 6 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 6156e1e..d88f003 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,7 @@ +2017-04-27 Alan Modra <amodra@gmail.com> + + * symbols.c (S_FORCE_RELOC): Separate section and symbol tests. + 2017-04-26 Maciej W. Rozycki <macro@imgtec.com> * config/tc-mips.c (RELAX_ENCODE): Add `PIC' flag. diff --git a/gas/symbols.c b/gas/symbols.c index d4f09fc..7146c7d 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -2091,16 +2091,20 @@ S_IS_DEFINED (symbolS *s) int S_FORCE_RELOC (symbolS *s, int strict) { + segT sec; if (LOCAL_SYMBOL_CHECK (s)) - return ((struct local_symbol *) s)->lsy_section == undefined_section; - - return ((strict + sec = ((struct local_symbol *) s)->lsy_section; + else + { + if ((strict && ((s->bsym->flags & BSF_WEAK) != 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)); + || (s->bsym->flags & BSF_GNU_INDIRECT_FUNCTION) != 0) + return TRUE; + sec = s->bsym->section; + } + return bfd_is_und_section (sec) || bfd_is_com_section (sec); } int |