From c9a2c125541dc97124aaaea15b8b596d36b355f3 Mon Sep 17 00:00:00 2001 From: Doug Kwan Date: Sat, 30 Jan 2010 00:01:12 +0000 Subject: [PATCH] 2010-01-29 Doug Kwan * arm.cc (Target_arm::Scan::global): General PLTs for the same set of relocation types as ld. --- gold/ChangeLog | 5 +++++ gold/arm.cc | 24 ++---------------------- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index 98b7dec..eff9305 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,5 +1,10 @@ 2010-01-29 Doug Kwan + * arm.cc (Target_arm::Scan::global): General PLTs for the same set + of relocation types as ld. + +2010-01-29 Doug Kwan + * arm.cc (Arm_relocate_functions::arm_branch_common) Change visibility to public. (Arm_relocate_functions::thumb_branch_common): Ditto. 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::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::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::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()) -- 2.7.4