Add a test demonstrating DWARF parse failures are not causing lld to exit non-zero
authorDavid Blaikie <dblaikie@gmail.com>
Wed, 7 Aug 2019 22:05:33 +0000 (22:05 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Wed, 7 Aug 2019 22:05:33 +0000 (22:05 +0000)
This bug was/is masking other issues - committing this to demonstrate
the problem/track fixing it.

llvm-svn: 368220

lld/test/ELF/gdb-index-parse-fail.s [new file with mode: 0644]

diff --git a/lld/test/ELF/gdb-index-parse-fail.s b/lld/test/ELF/gdb-index-parse-fail.s
new file mode 100644 (file)
index 0000000..2f4c007
--- /dev/null
@@ -0,0 +1,30 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t1.o
+# RUN: ld.lld --gdb-index %t1.o -o %t 2>&1 | FileCheck %s
+
+# FIXME: ld.lld should return non-zero (add a "NOT" to start once this bug is fixed)
+
+# CHECK: error: invalid contribution to string offsets table
+
+.section .debug_abbrev,"",@progbits
+  .byte  1                           # Abbreviation Code
+  .byte  17                          # DW_TAG_compile_unit
+  .byte  0                           # DW_CHILDREN_no
+  .byte  114                         # DW_AT_str_offsets_base
+  .byte  23                          # DW_FORM_sec_offset
+  .byte  0                           # EOM(1)
+  .byte  0                           # EOM(2)
+  .byte  0                           # EOM(3)
+
+.section .debug_info,"",@progbits
+  .long  .Lunit_end0-.Lunit_begin0   # Length of Unit
+.Lunit_begin0:
+  .short 5                           # DWARF version number
+  .byte  1                           # DWARF Unit Type
+  .byte  8                           # Address Size (in bytes)
+  .long  .debug_abbrev               # Offset Into Abbrev. Section
+  
+  .byte  1                           # Abbrev [1] 0xc:0x43 DW_TAG_compile_unit
+  .long  0                           # DW_AT_str_offsets_base
+.Lunit_end0:
+