This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[GOLD][PATCH][ARM] Better error reporting for the deprecated relocations
- From: Viktor Kutuzov <vkutuzov at accesssoftek dot com>
- To: Ian Lance Taylor <iant at google dot com>
- Cc: Doug Kwan (éæå) <dougkwan at google dot com>, binutils <binutils at sourceware dot org>
- Date: Fri, 8 Oct 2010 14:19:51 -0700
- Subject: [GOLD][PATCH][ARM] Better error reporting for the deprecated relocations
- Reply-to: <vkutuzov at accesssoftek dot com>
This patch provides a better error reporting for the deprecated and/or
unsupported ARM relocations. Currently Gold reports an internal error on
that kind of relocations.
Such as
ld-new: error: arm_bl_in_range.o: unsupported reloc 1 against global
symbol _backward_target
instead of
ld-new: internal error in relocate, at ../../src/gold/arm.cc:9044
-Viktor
* arm.cc (Target_arm::Scan::local): Report the unsupported reloc
error for the deprecated relocations.
(Target_arm::Scan::global): Likewise.
(Target_arm::Relocate::relocate): Likewise.
Index: gold/arm.cc
===================================================================
RCS file: /cvs/src/src/gold/arm.cc,v
retrieving revision 1.122
diff -u -r1.122 arm.cc
--- gold/arm.cc 17 Sep 2010 23:51:42 -0000 1.122
+++ gold/arm.cc 7 Oct 2010 18:12:01 -0000
@@ -7633,7 +7633,6 @@
}
break;
- case elfcpp::R_ARM_PC24:
case elfcpp::R_ARM_REL32:
case elfcpp::R_ARM_LDR_PC_G0:
case elfcpp::R_ARM_SBREL32:
@@ -7644,9 +7643,6 @@
case elfcpp::R_ARM_CALL:
case elfcpp::R_ARM_JUMP24:
case elfcpp::R_ARM_THM_JUMP24:
- case elfcpp::R_ARM_LDR_SBREL_11_0_NC:
- case elfcpp::R_ARM_ALU_SBREL_19_12_NC:
- case elfcpp::R_ARM_ALU_SBREL_27_20_CK:
case elfcpp::R_ARM_SBREL31:
case elfcpp::R_ARM_PREL31:
case elfcpp::R_ARM_MOVW_PREL_NC:
@@ -7850,6 +7846,10 @@
}
break;
+ case elfcpp::R_ARM_PC24:
+ case elfcpp::R_ARM_LDR_SBREL_11_0_NC:
+ case elfcpp::R_ARM_ALU_SBREL_19_12_NC:
+ case elfcpp::R_ARM_ALU_SBREL_27_20_CK:
default:
unsupported_reloc_local(object, r_type);
break;
@@ -8028,9 +8028,6 @@
case elfcpp::R_ARM_SBREL32:
case elfcpp::R_ARM_THM_PC8:
case elfcpp::R_ARM_BASE_PREL:
- case elfcpp::R_ARM_LDR_SBREL_11_0_NC:
- case elfcpp::R_ARM_ALU_SBREL_19_12_NC:
- case elfcpp::R_ARM_ALU_SBREL_27_20_CK:
case elfcpp::R_ARM_MOVW_PREL_NC:
case elfcpp::R_ARM_MOVT_PREL:
case elfcpp::R_ARM_THM_MOVW_PREL_NC:
@@ -8093,7 +8090,6 @@
}
break;
- case elfcpp::R_ARM_PC24:
case elfcpp::R_ARM_THM_CALL:
case elfcpp::R_ARM_PLT32:
case elfcpp::R_ARM_CALL:
@@ -8262,6 +8258,10 @@
}
break;
+ case elfcpp::R_ARM_PC24:
+ case elfcpp::R_ARM_LDR_SBREL_11_0_NC:
+ case elfcpp::R_ARM_ALU_SBREL_19_12_NC:
+ case elfcpp::R_ARM_ALU_SBREL_27_20_CK:
default:
unsupported_reloc_global(object, r_type, gsym);
break;
@@ -9040,8 +9040,15 @@
view, address, view_size);
break;
+ // The known and unknown unsupported and/or deprecated relocations.
+ case elfcpp::R_ARM_PC24:
+ case elfcpp::R_ARM_LDR_SBREL_11_0_NC:
+ case elfcpp::R_ARM_ALU_SBREL_19_12_NC:
+ case elfcpp::R_ARM_ALU_SBREL_27_20_CK:
default:
- gold_unreachable();
+ // Just silently leave the method. We should get an appropriate error
+ // message in the scan methods.
+ break;
}
// Report any errors.