summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2017-09-04 10:30:39 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2017-09-04 10:30:39 +0000
commit2f95c8bccb73cb4d292a2c4e3704887da3414394 (patch)
tree8a825101811f635e11bca7d99282a48a8da26c34 /llvm/test
parent8703e3838068156b2e0ff80b218bf854a7eba84e (diff)
downloadbcm5719-llvm-2f95c8bccb73cb4d292a2c4e3704887da3414394.tar.gz
bcm5719-llvm-2f95c8bccb73cb4d292a2c4e3704887da3414394.zip
[DebugInfo] - Fix for lld DWARF parsing of base address selection entries in range lists.
It solves issue of wrong section index evaluating for ranges when base address is used. Based on David Blaikie's patch D36097. Differential revision: https://reviews.llvm.org/D37214 llvm-svn: 312477
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/DebugInfo/Inputs/dwarfdump-ranges-baseaddr-exe.elf-x86-64bin0 -> 1128 bytes
-rw-r--r--llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr-exe.s13
-rw-r--r--llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr.s82
3 files changed, 95 insertions, 0 deletions
diff --git a/llvm/test/DebugInfo/Inputs/dwarfdump-ranges-baseaddr-exe.elf-x86-64 b/llvm/test/DebugInfo/Inputs/dwarfdump-ranges-baseaddr-exe.elf-x86-64
new file mode 100644
index 00000000000..ab9960bd30c
--- /dev/null
+++ b/llvm/test/DebugInfo/Inputs/dwarfdump-ranges-baseaddr-exe.elf-x86-64
Binary files differ
diff --git a/llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr-exe.s b/llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr-exe.s
new file mode 100644
index 00000000000..64f7009c8f5
--- /dev/null
+++ b/llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr-exe.s
@@ -0,0 +1,13 @@
+# RUN: llvm-dwarfdump %S/../Inputs/dwarfdump-ranges-baseaddr-exe.elf-x86-64 \
+# RUN: | FileCheck %s
+
+## Executable binary for test produced from object built in
+## dwarfdump-ranges-baseaddr.s testcase.
+
+# CHECK: .debug_info contents:
+# CHECK: 0x0000000b: DW_TAG_compile_unit [1]
+# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000400078)
+# CHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
+# CHECK-NEXT: [0x0000000000400078 - 0x0000000000400079)
+# CHECK-NEXT: [0x000000000040007b - 0x000000000040007e)
+# CHECK-NEXT: [0x000000000040007f - 0x0000000000400080))
diff --git a/llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr.s b/llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr.s
new file mode 100644
index 00000000000..23776799e79
--- /dev/null
+++ b/llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr.s
@@ -0,0 +1,82 @@
+# RUN: llvm-mc -triple x86_64-pc-linux -filetype=obj %s -o %t
+# RUN: llvm-dwarfdump %t | FileCheck %s
+
+# CHECK: .debug_info contents:
+# CHECK: 0x0000000b: DW_TAG_compile_unit [1]
+# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
+# CHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
+# CHECK-NEXT: [0x0000000000000000 - 0x0000000000000001) ".text"
+# CHECK-NEXT: [0x0000000000000003 - 0x0000000000000006) ".text"
+# CHECK-NEXT: [0x0000000000000001 - 0x0000000000000002) ".text.foo1")
+
+.text
+.globl foo
+.type foo,@function
+foo:
+.Lfunc_begin0:
+ nop
+.Ltmp0:
+ nop
+ nop
+.Ltmp1:
+ nop
+ nop
+ nop
+.Ltmp2:
+
+.section .text.foo1,"ax",@progbits
+.Ltmp3:
+ nop
+.Ltmp4:
+ nop
+.Ltmp5:
+
+.section .debug_abbrev,"",@progbits
+.byte 1 # Abbreviation Code
+.byte 17 # DW_TAG_compile_unit
+.byte 0 # DW_CHILDREN_no
+.byte 37 # DW_AT_producer
+.byte 14 # DW_FORM_strp
+.byte 19 # DW_AT_language
+.byte 5 # DW_FORM_data2
+.byte 3 # DW_AT_name
+.byte 14 # DW_FORM_strp
+.byte 16 # DW_AT_stmt_list
+.byte 23 # DW_FORM_sec_offset
+.byte 27 # DW_AT_comp_dir
+.byte 14 # DW_FORM_strp
+.byte 17 # DW_AT_low_pc
+.byte 1 # DW_FORM_addr
+.byte 85 # DW_AT_ranges
+.byte 23 # DW_FORM_sec_offset
+.byte 0 # EOM(1)
+.byte 0 # EOM(2)
+.byte 0 # EOM(3)
+
+.section .debug_info,"",@progbits
+.Lcu_begin0:
+.long 38 # Length of Unit
+.short 4 # DWARF version number
+.long .debug_abbrev # Offset Into Abbrev. Section
+.byte 8 # Address Size (in bytes)
+.byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit
+.long 0 # DW_AT_producer
+.short 4 # DW_AT_language
+.long 0 # DW_AT_name
+.long 0 # DW_AT_stmt_list
+.long 0 # DW_AT_comp_dir
+.quad .Lfunc_begin0 # DW_AT_low_pc
+.long .Ldebug_ranges0 # DW_AT_ranges
+
+.section .debug_ranges,"",@progbits
+.Ldebug_ranges0:
+ .quad .Lfunc_begin0-.Lfunc_begin0
+ .quad .Ltmp0-.Lfunc_begin0
+ .quad .Ltmp1-.Lfunc_begin0
+ .quad .Ltmp2-.Lfunc_begin0
+ .quad 0xFFFFFFFFFFFFFFFF
+ .quad .text.foo1
+ .quad .Ltmp4-.text.foo1
+ .quad .Ltmp5-.text.foo1
+ .quad 0
+ .quad 0
OpenPOWER on IntegriCloud