diff options
| author | George Rimar <grimar@accesssoftek.com> | 2017-09-04 10:30:39 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2017-09-04 10:30:39 +0000 |
| commit | 2f95c8bccb73cb4d292a2c4e3704887da3414394 (patch) | |
| tree | 8a825101811f635e11bca7d99282a48a8da26c34 /llvm/test | |
| parent | 8703e3838068156b2e0ff80b218bf854a7eba84e (diff) | |
| download | bcm5719-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-64 | bin | 0 -> 1128 bytes | |||
| -rw-r--r-- | llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr-exe.s | 13 | ||||
| -rw-r--r-- | llvm/test/DebugInfo/X86/dwarfdump-ranges-baseaddr.s | 82 |
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 Binary files differnew file mode 100644 index 00000000000..ab9960bd30c --- /dev/null +++ b/llvm/test/DebugInfo/Inputs/dwarfdump-ranges-baseaddr-exe.elf-x86-64 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 |

