diff options
author | Maciej W. Rozycki <macro@imgtec.com> | 2016-05-24 14:05:19 +0100 |
---|---|---|
committer | Maciej W. Rozycki <macro@imgtec.com> | 2016-05-24 14:09:03 +0100 |
commit | 4512dafa508c4b148996f2d67222a82dd018cdd3 (patch) | |
tree | fccd9dea6fe9f461790ca94316d922c54dcf30aa | |
parent | cc34adb29049afb367107bad78b163d7deddac3e (diff) | |
download | gdb-4512dafa508c4b148996f2d67222a82dd018cdd3.zip gdb-4512dafa508c4b148996f2d67222a82dd018cdd3.tar.gz gdb-4512dafa508c4b148996f2d67222a82dd018cdd3.tar.bz2 |
MIPS/GAS: Cut TLS reloc dead code path in `md_apply_fix'
With code refactoring made in commit b886a2ab0d52 and the addition of
`calculate_reloc' and a separate test for TLS relocs against constants
made there the preexisting fall-through from the TLS reloc switch case
has effectively become a dead execution path. This is because the call
to `calculate_reloc' present there is only made if `fixP->fx_done' is
true, which can only be the case if `fixP->fx_addsy' is NULL, which in
turn has already triggered the TLS reloc test and made execution break
out of the switch statement.
Remove the fall-through then and reshape code accordingly.
gas/
* config/tc-mips.c (md_apply_fix)
<BFD_RELOC_MIPS16_TLS_TPREL_LO16>: Remove fall-through, adjust
code accordingly.
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-mips.c | 14 |
2 files changed, 12 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 3fae338..8cf0a50 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2016-05-24 Maciej W. Rozycki <macro@imgtec.com> + + * config/tc-mips.c (md_apply_fix) + <BFD_RELOC_MIPS16_TLS_TPREL_LO16>: Remove fall-through, adjust + code accordingly. + 2016-05-24 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * config/tc-xtensa.c (struct suffix_reloc_map): Change type of field diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index f58955c..82bd830 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -14904,14 +14904,12 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED) case BFD_RELOC_MIPS16_TLS_GOTTPREL: case BFD_RELOC_MIPS16_TLS_TPREL_HI16: case BFD_RELOC_MIPS16_TLS_TPREL_LO16: - if (!fixP->fx_addsy) - { - as_bad_where (fixP->fx_file, fixP->fx_line, - _("TLS relocation against a constant")); - break; - } - S_SET_THREAD_LOCAL (fixP->fx_addsy); - /* fall through */ + if (fixP->fx_addsy) + S_SET_THREAD_LOCAL (fixP->fx_addsy); + else + as_bad_where (fixP->fx_file, fixP->fx_line, + _("TLS relocation against a constant")); + break; case BFD_RELOC_MIPS_JMP: case BFD_RELOC_MIPS_SHIFT5: |