Change the error format to report corrupted .eh_frame.
authorRui Ueyama <ruiu@google.com>
Sat, 1 Apr 2017 01:42:20 +0000 (01:42 +0000)
committerRui Ueyama <ruiu@google.com>
Sat, 1 Apr 2017 01:42:20 +0000 (01:42 +0000)
llvm-svn: 299289

lld/ELF/EhFrame.cpp
lld/test/ELF/invalid-cie-length.s
lld/test/ELF/invalid-cie-length2.s
lld/test/ELF/invalid-cie-length3.s
lld/test/ELF/invalid-cie-length4.s

index 0828f11..90be30a 100644 (file)
@@ -44,8 +44,8 @@ public:
 
 private:
   template <class P> void failOn(const P *Loc, const Twine &Msg) {
-    fatal(IS->getLocation<ELFT>((const uint8_t *)Loc - IS->Data.data()) + ": " +
-          Msg);
+    fatal("corrupted .eh_frame: " + Msg + "\n>>> defined in " +
+          IS->getObjMsg<ELFT>((const uint8_t *)Loc - IS->Data.data()));
   }
 
   uint8_t readByte();
index e5ba27c..c6da95e 100644 (file)
@@ -3,7 +3,8 @@
 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t
 // RUN: not ld.lld %t -o %t2 2>&1 | FileCheck %s
 
-        .section .eh_frame
-        .byte 0
+.section .eh_frame
+.byte 0
 
-// CHECK: {{.*}}:(.eh_frame+0x0): CIE/FDE too small
+// CHECK:      error: corrupted .eh_frame: CIE/FDE too small
+// CHECK-NEXT: >>> defined in {{.*}}:(.eh_frame+0x0)
index 4aea669..9140280 100644 (file)
@@ -3,7 +3,8 @@
 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t
 // RUN: not ld.lld %t -o %t2 2>&1 | FileCheck %s
 
-        .section .eh_frame
-        .long 42
+.section .eh_frame
+.long 42
 
-// CHECK: {{.*}}:(.eh_frame+0x0): CIE/FDE ends past the end of the section
+// CHECK:      error: corrupted .eh_frame: CIE/FDE ends past the end of the section
+// CHECK-NEXT: >>> defined in {{.*}}:(.eh_frame+0x0)
index ebd2690..fcbfa7f 100644 (file)
@@ -3,7 +3,9 @@
 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t
 // RUN: not ld.lld %t -o %t2 2>&1 | FileCheck %s
 
- .section .eh_frame
- .long 0xFFFFFFFC
+.section .eh_frame
+.long 0xFFFFFFFC
+
+// CHECK:      error: corrupted .eh_frame: CIE/FDE ends past the end of the section
+// CHECK-NEXT: >>> defined in {{.*}}:(.eh_frame+0x0)
 
-// CHECK: {{.*}}:(.eh_frame+0x0): CIE/FDE ends past the end of the section
index 8c7cc00..04f8eb2 100644 (file)
@@ -3,8 +3,9 @@
 // RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t
 // RUN: not ld.lld %t -o %t2 2>&1 | FileCheck %s
 
- .section .eh_frame
- .long 0xFFFFFFFF
- .byte 0
+.section .eh_frame
+.long 0xFFFFFFFF
+.byte 0
 
-// CHECK: {{.*}}:(.eh_frame+0x0): CIE/FDE too large
+// CHECK:      error: corrupted .eh_frame: CIE/FDE too large
+// CHECK-NEXT: >>> defined in {{.*}}:(.eh_frame+0x0)