diff options
author | Fangrui Song <maskray@google.com> | 2018-11-13 20:49:36 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2018-11-13 20:49:36 +0000 |
commit | c2858f63e5297558c74b16998cc1cda676ca5adc (patch) | |
tree | 4f08f599f6837535624200738b232036a887e6aa | |
parent | 35de877e8c3b6285c03987c6e89985ee3cdd30c0 (diff) | |
download | bcm5719-llvm-c2858f63e5297558c74b16998cc1cda676ca5adc.tar.gz bcm5719-llvm-c2858f63e5297558c74b16998cc1cda676ca5adc.zip |
[ELF] Add a better test for the multi-CU .gdb_index bug that D54361 fixed
gdb-index-multiple-cu-2.s puts the symbol in question to another object file %t1.o, so that its CuIndex is affected by the number of CUs in %t.o
Also change `Kind:` in a comment to `Attributes:` as a follow-up of D54480 and D54481
llvm-svn: 346796
-rw-r--r-- | lld/test/ELF/Inputs/gdb-index-multiple-cu-2.s | 45 | ||||
-rw-r--r-- | lld/test/ELF/gdb-index-multiple-cu-2.s | 35 | ||||
-rw-r--r-- | lld/test/ELF/gdb-index-multiple-cu.s | 4 |
3 files changed, 82 insertions, 2 deletions
diff --git a/lld/test/ELF/Inputs/gdb-index-multiple-cu-2.s b/lld/test/ELF/Inputs/gdb-index-multiple-cu-2.s new file mode 100644 index 00000000000..80c738eab1f --- /dev/null +++ b/lld/test/ELF/Inputs/gdb-index-multiple-cu-2.s @@ -0,0 +1,45 @@ +.globl _start +_start: + +.section .debug_abbrev,"",@progbits + .byte 1 # Abbreviation Code + .byte 17 # DW_TAG_compile_unit + .byte 1 # DW_CHILDREN_yes + .ascii "\264B" # DW_AT_GNU_pubnames + .byte 25 # DW_FORM_flag_present + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 2 # Abbreviation Code + .byte 46 # DW_TAG_subprogram + .byte 0 # DW_CHILDREN_no + .byte 3 # DW_AT_name + .byte 8 # DW_FORM_string + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 0 + +.section .debug_info,"",@progbits +.Lcu_begin0: + .long .Lcu_end0 - .Lcu_begin0 - 4 + .short 4 # DWARF version number + .long 0 # Offset Into Abbrev. Section + .byte 4 # Address Size +.Ldie: + .byte 1 # Abbrev [1] DW_TAG_compile_unit + .byte 2 # Abbrev [2] DW_TAG_subprogram + .asciz "_start" # DW_AT_name + .byte 0 +.Lcu_end0: + +# .debug_gnu_pubnames has just one set, associated with .Lcu_begin1 (CuIndex: 1) +.section .debug_gnu_pubnames,"",@progbits + .long .LpubNames_end0 - .LpubNames_begin0 +.LpubNames_begin0: + .short 2 # Version + .long .Lcu_begin0 # CU Offset + .long .Lcu_end0 - .Lcu_begin0 + .long .Ldie - .Lcu_begin0 + .byte 48 # Attributes: FUNCTION, EXTERNAL + .asciz "_start" # External Name + .long 0 +.LpubNames_end0: diff --git a/lld/test/ELF/gdb-index-multiple-cu-2.s b/lld/test/ELF/gdb-index-multiple-cu-2.s new file mode 100644 index 00000000000..6fafaf54348 --- /dev/null +++ b/lld/test/ELF/gdb-index-multiple-cu-2.s @@ -0,0 +1,35 @@ +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %p/Inputs/gdb-index-multiple-cu-2.s -o %t1.o +# RUN: ld.lld --gdb-index %t.o %t1.o -o %t +# RUN: llvm-dwarfdump -gdb-index %t | FileCheck %s + +# %t.o has 2 CUs while %t1 has 1, thus _start in %t1.o should have CuIndex 2. +# Attributes << 24 | CuIndex = 48 << 24 | 2 = 0x30000002 +# CHECK: Constant pool +# CHECK-NEXT: 0(0x0): 0x30000002 + +.section .debug_abbrev,"",@progbits + .byte 1 # Abbreviation Code + .byte 17 # DW_TAG_compile_unit + .byte 0 # DW_CHILDREN_yes + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 0 + +.section .debug_info,"",@progbits +.Lcu_begin0: + .long .Lcu_end0 - .Lcu_begin0 - 4 + .short 4 # DWARF version number + .long 0 # Offset Into Abbrev. Section + .byte 4 # Address Size + .byte 1 # Abbrev [1] DW_TAG_compile_unit + .byte 0 +.Lcu_end0: +.Lcu_begin1: + .long .Lcu_end1 - .Lcu_begin1 - 4 + .short 4 # DWARF version number + .long 0 # Offset Into Abbrev. Section + .byte 4 # Address Size + .byte 1 # Abbrev [1] DW_TAG_compile_unit + .byte 0 +.Lcu_end1: diff --git a/lld/test/ELF/gdb-index-multiple-cu.s b/lld/test/ELF/gdb-index-multiple-cu.s index 7bfc95af17d..3952687b75c 100644 --- a/lld/test/ELF/gdb-index-multiple-cu.s +++ b/lld/test/ELF/gdb-index-multiple-cu.s @@ -2,7 +2,7 @@ # RUN: ld.lld --gdb-index %t.o -o %t # RUN: llvm-dwarfdump -gdb-index %t | FileCheck %s -# Kind << 24 | CuIndex = 48 << 24 | 1 = 0x30000001 +# Attributes << 24 | CuIndex = 48 << 24 | 1 = 0x30000001 # CHECK: Constant pool # CHECK-NEXT: 0(0x0): 0x30000001 @@ -58,7 +58,7 @@ _start: .long .Lcu_begin1 # CU Offset .long .Lcu_end1 - .Lcu_begin1 .long .Ldie - .Lcu_begin1 - .byte 48 # Kind: FUNCTION, EXTERNAL + .byte 48 # Attributes: FUNCTION, EXTERNAL .asciz "_start" # External Name .long 0 .LpubNames_end1: |