diff options
author | Doug Kwan <dougkwan@google.com> | 2010-06-30 06:41:09 +0000 |
---|---|---|
committer | Doug Kwan <dougkwan@google.com> | 2010-06-30 06:41:09 +0000 |
commit | b2286c10fe98d0bc1e4e207d0966cbd9e3bba58a (patch) | |
tree | 292470d366a43ff72fe1cd45398e3df194f60999 /gold/arm.cc | |
parent | 3863f96c205610e5351a0484cc9d45f9779365bf (diff) | |
download | gdb-b2286c10fe98d0bc1e4e207d0966cbd9e3bba58a.zip gdb-b2286c10fe98d0bc1e4e207d0966cbd9e3bba58a.tar.gz gdb-b2286c10fe98d0bc1e4e207d0966cbd9e3bba58a.tar.bz2 |
2010-06-29 Doug Kwan <dougkwan@google.com>
* arm-reloc-property.cc (Arm_reloc_property::Arm_reloc_property):
Initialize USE_SYMBOL_.
* arm-reloc-property.h (Arm_reloc_property::uses_symbol): New method
definition.
(Arm_reloc_property::uses_symbol_): New data member declaration.
* arm.cc (Target_arm::Relocate::relocate): Exit early if relocation
uses symbol value and symbol is undefined but not weakly undefined.
Diffstat (limited to 'gold/arm.cc')
-rw-r--r-- | gold/arm.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gold/arm.cc b/gold/arm.cc index d19d04c..76d466b 100644 --- a/gold/arm.cc +++ b/gold/arm.cc @@ -8410,6 +8410,13 @@ Target_arm<big_endian>::Relocate::relocate( // be converted into an NOP. is_weakly_undefined_without_plt = true; } + else if (gsym->is_undefined() && reloc_property->uses_symbol()) + { + // This relocation uses the symbol value but the symbol is + // undefined. Exit early and have the caller reporting an + // error. + return true; + } else { // Set thumb bit if symbol: |