summaryrefslogtreecommitdiffstats
path: root/gold/arm.cc
diff options
context:
space:
mode:
authorDoug Kwan <dougkwan@google.com>2010-06-30 06:41:09 +0000
committerDoug Kwan <dougkwan@google.com>2010-06-30 06:41:09 +0000
commitb2286c10fe98d0bc1e4e207d0966cbd9e3bba58a (patch)
tree292470d366a43ff72fe1cd45398e3df194f60999 /gold/arm.cc
parent3863f96c205610e5351a0484cc9d45f9779365bf (diff)
downloadppe42-binutils-b2286c10fe98d0bc1e4e207d0966cbd9e3bba58a.tar.gz
ppe42-binutils-b2286c10fe98d0bc1e4e207d0966cbd9e3bba58a.zip
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.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/gold/arm.cc b/gold/arm.cc
index d19d04c4bc..76d466b97d 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:
OpenPOWER on IntegriCloud