diff options
author | Doug Kwan <dougkwan@google.com> | 2010-01-30 00:01:12 +0000 |
---|---|---|
committer | Doug Kwan <dougkwan@google.com> | 2010-01-30 00:01:12 +0000 |
commit | c9a2c125541dc97124aaaea15b8b596d36b355f3 (patch) | |
tree | 7d2c5e2268bb217a08b1ba09a2852566ef076496 /gold/arm.cc | |
parent | 04258814fcf318d5b20deee2b769541e4e6a2ebf (diff) | |
download | gdb-c9a2c125541dc97124aaaea15b8b596d36b355f3.zip gdb-c9a2c125541dc97124aaaea15b8b596d36b355f3.tar.gz gdb-c9a2c125541dc97124aaaea15b8b596d36b355f3.tar.bz2 |
2010-01-29 Doug Kwan <dougkwan@google.com>
* arm.cc (Target_arm::Scan::global): General PLTs for the same set
of relocation types as ld.
Diffstat (limited to 'gold/arm.cc')
-rw-r--r-- | gold/arm.cc | 24 |
1 files changed, 2 insertions, 22 deletions
diff --git a/gold/arm.cc b/gold/arm.cc index 65bebaa..7736fa6 100644 --- a/gold/arm.cc +++ b/gold/arm.cc @@ -6792,9 +6792,6 @@ Target_arm<big_endian>::Scan::global(Symbol_table* symtab, break; case elfcpp::R_ARM_REL32: - break; - - case elfcpp::R_ARM_PREL31: { // Make a dynamic relocation if necessary. int flags = Symbol::NON_PIC_REF; @@ -6821,26 +6818,9 @@ Target_arm<big_endian>::Scan::global(Symbol_table* symtab, case elfcpp::R_ARM_THM_JUMP19: case elfcpp::R_ARM_CALL: case elfcpp::R_ARM_THM_CALL: - - if (Target_arm<big_endian>::Scan::symbol_needs_plt_entry(gsym)) - target->make_plt_entry(symtab, layout, gsym); - else - { - // Check to see if this is a function that would need a PLT - // but does not get one because the function symbol is untyped. - // This happens in assembly code missing a proper .type directive. - if ((!gsym->is_undefined() || parameters->options().shared()) - && !parameters->doing_static_link() - && gsym->type() == elfcpp::STT_NOTYPE - && (gsym->is_from_dynobj() - || gsym->is_undefined() - || gsym->is_preemptible())) - gold_error(_("%s is not a function."), - gsym->demangled_name().c_str()); - } - break; - case elfcpp::R_ARM_PLT32: + case elfcpp::R_ARM_PREL31: + case elfcpp::R_ARM_PC24: // If the symbol is fully resolved, this is just a relative // local reloc. Otherwise we need a PLT entry. if (gsym->final_value_is_known()) |