From 017257f8db5c860dd46d7ba45fa867a3a6a7c49e Mon Sep 17 00:00:00 2001 From: Doug Kwan Date: Wed, 8 Dec 2010 05:18:54 +0000 Subject: 2010-12-07 Doug Kwan * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31 like function call relocations. --- gold/arm.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'gold/arm.cc') diff --git a/gold/arm.cc b/gold/arm.cc index 183bc302481..d67c4a085e3 100644 --- a/gold/arm.cc +++ b/gold/arm.cc @@ -7646,7 +7646,6 @@ Target_arm::Scan::get_reference_flags(unsigned int r_type) case elfcpp::R_ARM_THM_MOVW_BREL: case elfcpp::R_ARM_GOTOFF32: case elfcpp::R_ARM_GOTOFF12: - case elfcpp::R_ARM_PREL31: case elfcpp::R_ARM_SBREL31: return Symbol::RELATIVE_REF; @@ -7659,6 +7658,10 @@ Target_arm::Scan::get_reference_flags(unsigned int r_type) case elfcpp::R_ARM_THM_JUMP6: case elfcpp::R_ARM_THM_JUMP11: case elfcpp::R_ARM_THM_JUMP8: + // R_ARM_PREL31 is not used to relocate call/jump instructions but + // in unwind tables. It may point to functions via PLTs. + // So we treat it like call/jump relocations above. + case elfcpp::R_ARM_PREL31: return Symbol::FUNCTION_CALL | Symbol::RELATIVE_REF; case elfcpp::R_ARM_GOT_BREL: -- cgit v1.2.1