<p dir="ltr">It is good practice to include a test case when adding error handling. </p>
<div class="gmail_quote">On May 7, 2015 9:48 AM, "Denis Protivensky" <<a href="mailto:dprotivensky@accesssoftek.com">dprotivensky@accesssoftek.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: denis-protivensky<br>
Date: Thu May  7 08:41:44 2015<br>
New Revision: 236726<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D236726-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=fNj-HDpZfjINo0UIfKPfofjVGT6dOHG9uJdhj2GlMVs&s=S96hbTM_E7uTCPu7D8sElvRvcjtpVb5kA0rKIHUfc_o&e=" target="_blank">http://llvm.org/viewvc/llvm-project?rev=236726&view=rev</a><br>
Log:<br>
[ARM] llvm_unreachable => make_*_reloc_error in group relocs<br>
<br>
Modified:<br>
    lld/trunk/lib/ReaderWriter/ELF/ARM/ARMRelocationHandler.cpp<br>
<br>
Modified: lld/trunk/lib/ReaderWriter/ELF/ARM/ARMRelocationHandler.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_lib_ReaderWriter_ELF_ARM_ARMRelocationHandler.cpp-3Frev-3D236726-26r1-3D236725-26r2-3D236726-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=mQ4LZ2PUj9hpadE3cDHZnIdEwhEBrbAstXeMaFoB9tg&m=fNj-HDpZfjINo0UIfKPfofjVGT6dOHG9uJdhj2GlMVs&s=p5ZN_H4qHJmaKsSKuZ_yIGjXRgyHfG-jsDXPM99xmbY&e=" target="_blank">http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ARM/ARMRelocationHandler.cpp?rev=236726&r1=236725&r2=236726&view=diff</a><br>
==============================================================================<br>
--- lld/trunk/lib/ReaderWriter/ELF/ARM/ARMRelocationHandler.cpp (original)<br>
+++ lld/trunk/lib/ReaderWriter/ELF/ARM/ARMRelocationHandler.cpp Thu May  7 08:41:44 2015<br>
@@ -112,6 +112,11 @@ static Reference::Addend readAddend(cons<br>
   }<br>
 }<br>
<br>
+static inline std::error_code make_unsupported_range_group_reloc_error() {<br>
+  return make_dynamic_error_code(<br>
+      "Negative offsets for group relocations are not implemented");<br>
+}<br>
+<br>
 static inline std::error_code applyArmReloc(uint8_t *location, uint32_t result,<br>
                                             uint32_t mask = 0xFFFFFFFF) {<br>
   assert(!(result & ~mask));<br>
@@ -475,10 +480,8 @@ static std::error_code relocR_ARM_ALU_PC<br>
 static std::error_code relocR_ARM_ALU_PC_G0_NC(uint8_t *location, uint64_t P,<br>
                                                uint64_t S, int64_t A) {<br>
   int32_t result = (int32_t)(S + A - P);<br>
-<br>
   if (result < 0)<br>
-    llvm_unreachable(<br>
-        "Negative offsets for group relocations has not been implemented");<br>
+    return make_unsupported_range_group_reloc_error();<br>
<br>
   DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";<br>
         llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);<br>
@@ -494,10 +497,8 @@ static std::error_code relocR_ARM_ALU_PC<br>
 static std::error_code relocR_ARM_ALU_PC_G1_NC(uint8_t *location, uint64_t P,<br>
                                                uint64_t S, int64_t A) {<br>
   int32_t result = (int32_t)(S + A - P);<br>
-<br>
   if (result < 0)<br>
-    llvm_unreachable(<br>
-        "Negative offsets for group relocations has not been implemented");<br>
+    return make_unsupported_range_group_reloc_error();<br>
<br>
   DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";<br>
         llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);<br>
@@ -513,10 +514,8 @@ static std::error_code relocR_ARM_ALU_PC<br>
 static std::error_code relocR_ARM_LDR_PC_G2(uint8_t *location, uint64_t P,<br>
                                             uint64_t S, int64_t A) {<br>
   int32_t result = (int32_t)(S + A - P);<br>
-<br>
   if (result < 0)<br>
-    llvm_unreachable(<br>
-        "Negative offsets for group relocations has not been implemented");<br>
+    return make_unsupported_range_group_reloc_error();<br>
<br>
   DEBUG(llvm::dbgs() << "\t\tHandle " << LLVM_FUNCTION_NAME << " -";<br>
         llvm::dbgs() << " S: 0x" << Twine::utohexstr(S);<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>