| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,326 @@ | ||
| # clang++ -gsplit-dwarf -g2 -gdwarf-5 -gpubnames -fdebug-compilation-dir='.' | ||
| # header.h | ||
| # struct Foo2a { | ||
| # char *c1; | ||
| # char *c2; | ||
| # char *c3; | ||
| # }; | ||
| # helper.cpp | ||
| # #include "header.h" | ||
| # struct Foo2Int { | ||
| # int *c1; | ||
| # int *c2; | ||
| # }; | ||
| # Foo2Int fint; | ||
| # const Foo2a f{nullptr, nullptr}; | ||
|
|
||
| .text | ||
| .file "helper.cpp" | ||
| .file 0 "." "helper.cpp" md5 0x2804efac708fd4180d403e6d5dbcc54a | ||
| .type fint,@object # @fint | ||
| .bss | ||
| .globl fint | ||
| .p2align 3, 0x0 | ||
| fint: | ||
| .zero 16 | ||
| .size fint, 16 | ||
|
|
||
| .section .debug_abbrev,"",@progbits | ||
| .byte 1 # Abbreviation Code | ||
| .byte 74 # DW_TAG_skeleton_unit | ||
| .byte 0 # DW_CHILDREN_no | ||
| .byte 16 # DW_AT_stmt_list | ||
| .byte 23 # DW_FORM_sec_offset | ||
| .byte 114 # DW_AT_str_offsets_base | ||
| .byte 23 # DW_FORM_sec_offset | ||
| .byte 27 # DW_AT_comp_dir | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 118 # DW_AT_dwo_name | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 115 # DW_AT_addr_base | ||
| .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 .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit | ||
| .Ldebug_info_start0: | ||
| .short 5 # DWARF version number | ||
| .byte 4 # DWARF Unit Type | ||
| .byte 8 # Address Size (in bytes) | ||
| .long .debug_abbrev # Offset Into Abbrev. Section | ||
| .quad 3223434782003797151 | ||
| .byte 1 # Abbrev [1] 0x14:0xf DW_TAG_skeleton_unit | ||
| .long .Lline_table_start0 # DW_AT_stmt_list | ||
| .long .Lstr_offsets_base0 # DW_AT_str_offsets_base | ||
| .byte 0 # DW_AT_comp_dir | ||
| .byte 1 # DW_AT_dwo_name | ||
| .long .Laddr_table_base0 # DW_AT_addr_base | ||
| .Ldebug_info_end0: | ||
| .section .debug_str_offsets,"",@progbits | ||
| .long 12 # Length of String Offsets Set | ||
| .short 5 | ||
| .short 0 | ||
| .Lstr_offsets_base0: | ||
| .section .debug_str,"MS",@progbits,1 | ||
| .Lskel_string0: | ||
| .asciz "." # string offset=0 | ||
| .Lskel_string1: | ||
| .asciz "Foo2Int" # string offset=2 | ||
| .Lskel_string2: | ||
| .asciz "int" # string offset=10 | ||
| .Lskel_string3: | ||
| .asciz "fint" # string offset=14 | ||
| .Lskel_string4: | ||
| .asciz "helper.dwo" # string offset=19 | ||
| .section .debug_str_offsets,"",@progbits | ||
| .long .Lskel_string0 | ||
| .long .Lskel_string4 | ||
| .section .debug_str_offsets.dwo,"e",@progbits | ||
| .long 36 # Length of String Offsets Set | ||
| .short 5 | ||
| .short 0 | ||
| .section .debug_str.dwo,"eMS",@progbits,1 | ||
| .Linfo_string0: | ||
| .asciz "fint" # string offset=0 | ||
| .Linfo_string1: | ||
| .asciz "c1" # string offset=5 | ||
| .Linfo_string2: | ||
| .asciz "int" # string offset=8 | ||
| .Linfo_string3: | ||
| .asciz "c2" # string offset=12 | ||
| .Linfo_string4: | ||
| .asciz "Foo2Int" # string offset=15 | ||
| .Linfo_string5: | ||
| .asciz "clang version 19.0.0git (git@github.com:ayermolo/llvm-project.git da9e9277be64deca73370a90d22af33e5b37cc52)" # string offset=23 | ||
| .Linfo_string6: | ||
| .asciz "helper.cpp" # string offset=131 | ||
| .Linfo_string7: | ||
| .asciz "helper.dwo" # string offset=142 | ||
| .section .debug_str_offsets.dwo,"e",@progbits | ||
| .long 0 | ||
| .long 5 | ||
| .long 8 | ||
| .long 12 | ||
| .long 15 | ||
| .long 23 | ||
| .long 131 | ||
| .long 142 | ||
| .section .debug_info.dwo,"e",@progbits | ||
| .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit | ||
| .Ldebug_info_dwo_start0: | ||
| .short 5 # DWARF version number | ||
| .byte 5 # DWARF Unit Type | ||
| .byte 8 # Address Size (in bytes) | ||
| .long 0 # Offset Into Abbrev. Section | ||
| .quad 3223434782003797151 | ||
| .byte 1 # Abbrev [1] 0x14:0x34 DW_TAG_compile_unit | ||
| .byte 5 # DW_AT_producer | ||
| .short 33 # DW_AT_language | ||
| .byte 6 # DW_AT_name | ||
| .byte 7 # DW_AT_dwo_name | ||
| .byte 2 # Abbrev [2] 0x1a:0xb DW_TAG_variable | ||
| .byte 0 # DW_AT_name | ||
| .long 37 # DW_AT_type | ||
| # DW_AT_external | ||
| .byte 0 # DW_AT_decl_file | ||
| .byte 7 # DW_AT_decl_line | ||
| .byte 2 # DW_AT_location | ||
| .byte 161 | ||
| .byte 0 | ||
| .byte 3 # Abbrev [3] 0x25:0x19 DW_TAG_structure_type | ||
| .byte 5 # DW_AT_calling_convention | ||
| .byte 4 # DW_AT_name | ||
| .byte 16 # DW_AT_byte_size | ||
| .byte 0 # DW_AT_decl_file | ||
| .byte 2 # DW_AT_decl_line | ||
| .byte 4 # Abbrev [4] 0x2b:0x9 DW_TAG_member | ||
| .byte 1 # DW_AT_name | ||
| .long 62 # DW_AT_type | ||
| .byte 0 # DW_AT_decl_file | ||
| .byte 3 # DW_AT_decl_line | ||
| .byte 0 # DW_AT_data_member_location | ||
| .byte 4 # Abbrev [4] 0x34:0x9 DW_TAG_member | ||
| .byte 3 # DW_AT_name | ||
| .long 62 # DW_AT_type | ||
| .byte 0 # DW_AT_decl_file | ||
| .byte 4 # DW_AT_decl_line | ||
| .byte 8 # DW_AT_data_member_location | ||
| .byte 0 # End Of Children Mark | ||
| .byte 5 # Abbrev [5] 0x3e:0x5 DW_TAG_pointer_type | ||
| .long 67 # DW_AT_type | ||
| .byte 6 # Abbrev [6] 0x43:0x4 DW_TAG_base_type | ||
| .byte 2 # DW_AT_name | ||
| .byte 5 # DW_AT_encoding | ||
| .byte 4 # DW_AT_byte_size | ||
| .byte 0 # End Of Children Mark | ||
| .Ldebug_info_dwo_end0: | ||
| .section .debug_abbrev.dwo,"e",@progbits | ||
| .byte 1 # Abbreviation Code | ||
| .byte 17 # DW_TAG_compile_unit | ||
| .byte 1 # DW_CHILDREN_yes | ||
| .byte 37 # DW_AT_producer | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 19 # DW_AT_language | ||
| .byte 5 # DW_FORM_data2 | ||
| .byte 3 # DW_AT_name | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 118 # DW_AT_dwo_name | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 0 # EOM(1) | ||
| .byte 0 # EOM(2) | ||
| .byte 2 # Abbreviation Code | ||
| .byte 52 # DW_TAG_variable | ||
| .byte 0 # DW_CHILDREN_no | ||
| .byte 3 # DW_AT_name | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 73 # DW_AT_type | ||
| .byte 19 # DW_FORM_ref4 | ||
| .byte 63 # DW_AT_external | ||
| .byte 25 # DW_FORM_flag_present | ||
| .byte 58 # DW_AT_decl_file | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 59 # DW_AT_decl_line | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 2 # DW_AT_location | ||
| .byte 24 # DW_FORM_exprloc | ||
| .byte 0 # EOM(1) | ||
| .byte 0 # EOM(2) | ||
| .byte 3 # Abbreviation Code | ||
| .byte 19 # DW_TAG_structure_type | ||
| .byte 1 # DW_CHILDREN_yes | ||
| .byte 54 # DW_AT_calling_convention | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 3 # DW_AT_name | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 11 # DW_AT_byte_size | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 58 # DW_AT_decl_file | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 59 # DW_AT_decl_line | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 0 # EOM(1) | ||
| .byte 0 # EOM(2) | ||
| .byte 4 # Abbreviation Code | ||
| .byte 13 # DW_TAG_member | ||
| .byte 0 # DW_CHILDREN_no | ||
| .byte 3 # DW_AT_name | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 73 # DW_AT_type | ||
| .byte 19 # DW_FORM_ref4 | ||
| .byte 58 # DW_AT_decl_file | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 59 # DW_AT_decl_line | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 56 # DW_AT_data_member_location | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 0 # EOM(1) | ||
| .byte 0 # EOM(2) | ||
| .byte 5 # Abbreviation Code | ||
| .byte 15 # DW_TAG_pointer_type | ||
| .byte 0 # DW_CHILDREN_no | ||
| .byte 73 # DW_AT_type | ||
| .byte 19 # DW_FORM_ref4 | ||
| .byte 0 # EOM(1) | ||
| .byte 0 # EOM(2) | ||
| .byte 6 # Abbreviation Code | ||
| .byte 36 # DW_TAG_base_type | ||
| .byte 0 # DW_CHILDREN_no | ||
| .byte 3 # DW_AT_name | ||
| .byte 37 # DW_FORM_strx1 | ||
| .byte 62 # DW_AT_encoding | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 11 # DW_AT_byte_size | ||
| .byte 11 # DW_FORM_data1 | ||
| .byte 0 # EOM(1) | ||
| .byte 0 # EOM(2) | ||
| .byte 0 # EOM(3) | ||
| .section .debug_addr,"",@progbits | ||
| .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution | ||
| .Ldebug_addr_start0: | ||
| .short 5 # DWARF version number | ||
| .byte 8 # Address size | ||
| .byte 0 # Segment selector size | ||
| .Laddr_table_base0: | ||
| .quad fint | ||
| .Ldebug_addr_end0: | ||
| .section .debug_names,"",@progbits | ||
| .long .Lnames_end0-.Lnames_start0 # Header: unit length | ||
| .Lnames_start0: | ||
| .short 5 # Header: version | ||
| .short 0 # Header: padding | ||
| .long 1 # Header: compilation unit count | ||
| .long 0 # Header: local type unit count | ||
| .long 0 # Header: foreign type unit count | ||
| .long 3 # Header: bucket count | ||
| .long 3 # Header: name count | ||
| .long .Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size | ||
| .long 8 # Header: augmentation string size | ||
| .ascii "LLVM0700" # Header: augmentation string | ||
| .long .Lcu_begin0 # Compilation unit 0 | ||
| .long 1 # Bucket 0 | ||
| .long 2 # Bucket 1 | ||
| .long 3 # Bucket 2 | ||
| .long -1168750522 # Hash in Bucket 0 | ||
| .long 2090257270 # Hash in Bucket 1 | ||
| .long 193495088 # Hash in Bucket 2 | ||
| .long .Lskel_string1 # String in Bucket 0: Foo2Int | ||
| .long .Lskel_string3 # String in Bucket 1: fint | ||
| .long .Lskel_string2 # String in Bucket 2: int | ||
| .long .Lnames0-.Lnames_entries0 # Offset in Bucket 0 | ||
| .long .Lnames2-.Lnames_entries0 # Offset in Bucket 1 | ||
| .long .Lnames1-.Lnames_entries0 # Offset in Bucket 2 | ||
| .Lnames_abbrev_start0: | ||
| .ascii "\230\023" # Abbrev code | ||
| .byte 19 # DW_TAG_structure_type | ||
| .byte 3 # DW_IDX_die_offset | ||
| .byte 19 # DW_FORM_ref4 | ||
| .byte 4 # DW_IDX_parent | ||
| .byte 25 # DW_FORM_flag_present | ||
| .byte 0 # End of abbrev | ||
| .byte 0 # End of abbrev | ||
| .ascii "\2304" # Abbrev code | ||
| .byte 52 # DW_TAG_variable | ||
| .byte 3 # DW_IDX_die_offset | ||
| .byte 19 # DW_FORM_ref4 | ||
| .byte 4 # DW_IDX_parent | ||
| .byte 25 # DW_FORM_flag_present | ||
| .byte 0 # End of abbrev | ||
| .byte 0 # End of abbrev | ||
| .ascii "\230$" # Abbrev code | ||
| .byte 36 # DW_TAG_base_type | ||
| .byte 3 # DW_IDX_die_offset | ||
| .byte 19 # DW_FORM_ref4 | ||
| .byte 4 # DW_IDX_parent | ||
| .byte 25 # DW_FORM_flag_present | ||
| .byte 0 # End of abbrev | ||
| .byte 0 # End of abbrev | ||
| .byte 0 # End of abbrev list | ||
| .Lnames_abbrev_end0: | ||
| .Lnames_entries0: | ||
| .Lnames0: | ||
| .L1: | ||
| .ascii "\230\023" # Abbreviation code | ||
| .long 37 # DW_IDX_die_offset | ||
| .byte 0 # DW_IDX_parent | ||
| # End of list: Foo2Int | ||
| .Lnames2: | ||
| .L0: | ||
| .ascii "\2304" # Abbreviation code | ||
| .long 26 # DW_IDX_die_offset | ||
| .byte 0 # DW_IDX_parent | ||
| # End of list: fint | ||
| .Lnames1: | ||
| .L2: | ||
| .ascii "\230$" # Abbreviation code | ||
| .long 67 # DW_IDX_die_offset | ||
| .byte 0 # DW_IDX_parent | ||
| # End of list: int | ||
| .p2align 2, 0x0 | ||
| .Lnames_end0: | ||
| .ident "clang version 19.0.0git (git@github.com:ayermolo/llvm-project.git da9e9277be64deca73370a90d22af33e5b37cc52)" | ||
| .section ".note.GNU-stack","",@progbits | ||
| .addrsig | ||
| .section .debug_line,"",@progbits | ||
| .Lline_table_start0: |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,154 @@ | ||
| ; REQUIRES: system-linux | ||
|
|
||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5_main.s -o %tmain.o | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5_helper.s -o %thelper.o | ||
| ; RUN: %clang %cflags -dwarf-5 %tmain.o %thelper.o -o %t.exe -Wl,-q | ||
| ; RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections --create-debug-names-section=true | ||
| ; RUN: llvm-dwarfdump --debug-info -r 0 --debug-names %t.bolt > %t.txt | ||
| ; RUN: cat %t.txt | FileCheck --check-prefix=BOLT %s | ||
|
|
||
| ;; Tests BOLT generates .debug_names with --create-debug-names-section. | ||
| ;; Also applicable when binary has CUs that do not contribute to .debug_names pre-bolt. | ||
|
|
||
| ; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: [[OFFSET2:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: Name Index @ 0x0 { | ||
| ; BOLT-NEXT: Header { | ||
| ; BOLT-NEXT: Length: 0x103 | ||
| ; BOLT-NEXT: Format: DWARF32 | ||
| ; BOLT-NEXT: Version: 5 | ||
| ; BOLT-NEXT: CU count: 2 | ||
| ; BOLT-NEXT: Local TU count: 0 | ||
| ; BOLT-NEXT: Foreign TU count: 0 | ||
| ; BOLT-NEXT: Bucket count: 8 | ||
| ; BOLT-NEXT: Name count: 8 | ||
| ; BOLT-NEXT: Abbreviations table size: 0x19 | ||
| ; BOLT-NEXT: Augmentation: 'BOLT' | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Compilation Unit offsets [ | ||
| ; BOLT-NEXT: CU[0]: [[OFFSET1]] | ||
| ; BOLT-NEXT: CU[1]: [[OFFSET2]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Abbreviations [ | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 0 [ | ||
| ; BOLT-NEXT: Name 1 { | ||
| ; BOLT-NEXT: Hash: 0xB888030 | ||
| ; BOLT-NEXT: String: {{.+}} "int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000033 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000007f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 1 [ | ||
| ; BOLT-NEXT: Name 2 { | ||
| ; BOLT-NEXT: Hash: 0xB887389 | ||
| ; BOLT-NEXT: String: {{.+}} "foo" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000005e | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 3 { | ||
| ; BOLT-NEXT: Hash: 0x8C06E589 | ||
| ; BOLT-NEXT: String: {{.+}} "_Z3usePiS_" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000028 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 2 [ | ||
| ; BOLT-NEXT: Name 4 { | ||
| ; BOLT-NEXT: Hash: 0xB88B3D2 | ||
| ; BOLT-NEXT: String: {{.+}} "use" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000028 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 5 { | ||
| ; BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| ; BOLT-NEXT: String: {{.+}} "main" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000049 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 6 { | ||
| ; BOLT-NEXT: Hash: 0xFDE4B5D2 | ||
| ; BOLT-NEXT: String: {{.+}} "fooVar" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000028 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 3 [ | ||
| ; BOLT-NEXT: Name 7 { | ||
| ; BOLT-NEXT: Hash: 0x7C952063 | ||
| ; BOLT-NEXT: String: {{.+}} "char" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000092 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 4 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 5 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 6 [ | ||
| ; BOLT-NEXT: Name 8 { | ||
| ; BOLT-NEXT: Hash: 0xB5063CFE | ||
| ; BOLT-NEXT: String: {{.+}} "_Z3fooi" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000005e | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 7 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,263 @@ | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-debug-names-main.s -o %tmain.o | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-debug-names-helper.s -o %thelper.o | ||
| ; RUN: %clang %cflags -gdwarf-5 %tmain.o %thelper.o -o %tmain.exe | ||
| ; RUN: llvm-bolt %tmain.exe -o %tmain.exe.bolt --update-debug-sections | ||
| ; RUN: llvm-dwarfdump --debug-info -r 0 --debug-names %tmain.exe.bolt > %tlog.txt | ||
| ; RUN: cat %tlog.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests that BOLT correctly generates .debug_names section with two CUs | ||
|
|
||
| ; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: [[OFFSET2:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: Name Index @ 0x0 { | ||
| ; BOLT-NEXT: Header { | ||
| ; BOLT-NEXT: Length: 0x1C2 | ||
| ; BOLT-NEXT: Format: DWARF32 | ||
| ; BOLT-NEXT: Version: 5 | ||
| ; BOLT-NEXT: CU count: 2 | ||
| ; BOLT-NEXT: Local TU count: 0 | ||
| ; BOLT-NEXT: Foreign TU count: 0 | ||
| ; BOLT-NEXT: Bucket count: 14 | ||
| ; BOLT-NEXT: Name count: 15 | ||
| ; BOLT-NEXT: Abbreviations table size: 0x29 | ||
| ; BOLT-NEXT: Augmentation: 'BOLT' | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Compilation Unit offsets [ | ||
| ; BOLT-NEXT: CU[0]: [[OFFSET1]] | ||
| ; BOLT-NEXT: CU[1]: [[OFFSET2]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Abbreviations [ | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_namespace | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV5:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 0 [ | ||
| ; BOLT-NEXT: Name 1 { | ||
| ; BOLT-NEXT: Hash: 0x59796C | ||
| ; BOLT-NEXT: String: {{.+}} "t3" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000002f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 1 [ | ||
| ; BOLT-NEXT: Name 2 { | ||
| ; BOLT-NEXT: Hash: 0x7C96E4DB | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x000000eb | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 2 [ | ||
| ; BOLT-NEXT: Name 3 { | ||
| ; BOLT-NEXT: Hash: 0x8CFC710C | ||
| ; BOLT-NEXT: String: {{.+}} "(anonymous namespace)" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_namespace | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000061 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_namespace | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000061 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 4 { | ||
| ; BOLT-NEXT: Hash: 0xBA564846 | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2Int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000005a | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 3 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 4 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 5 [ | ||
| ; BOLT-NEXT: Name 5 { | ||
| ; BOLT-NEXT: Hash: 0xB887389 | ||
| ; BOLT-NEXT: String: {{.+}} "Foo" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x000000c9 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 6 { | ||
| ; BOLT-NEXT: Hash: 0xB887389 | ||
| ; BOLT-NEXT: String: {{.+}} "foo" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000033 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 7 { | ||
| ; BOLT-NEXT: Hash: 0x7C952063 | ||
| ; BOLT-NEXT: String: {{.+}} "char" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV4]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000009f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV4]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x000000c5 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 6 [ | ||
| ; BOLT-NEXT: Name 8 { | ||
| ; BOLT-NEXT: Hash: 0x392140FA | ||
| ; BOLT-NEXT: String: {{.+}} "t2<&fooint>" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000003f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 9 { | ||
| ; BOLT-NEXT: Hash: 0xFDE48034 | ||
| ; BOLT-NEXT: String: {{.+}} "fooint" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV5]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000024 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 7 [ | ||
| ; BOLT-NEXT: Name 10 { | ||
| ; BOLT-NEXT: Hash: 0xB5063D0B | ||
| ; BOLT-NEXT: String: {{.+}} "_Z3foov" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000033 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 8 [ | ||
| ; BOLT-NEXT: Name 11 { | ||
| ; BOLT-NEXT: Hash: 0x5979AC | ||
| ; BOLT-NEXT: String: {{.+}} "v1" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV5]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000024 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 9 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 10 [ | ||
| ; BOLT-NEXT: Name 12 { | ||
| ; BOLT-NEXT: Hash: 0xB888030 | ||
| ; BOLT-NEXT: String: {{.+}} "int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV4]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000002f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV4]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000005d | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 13 { | ||
| ; BOLT-NEXT: Hash: 0xF73809C | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2a" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000078 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000104 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 14 { | ||
| ; BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| ; BOLT-NEXT: String: {{.+}} "main" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000073 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 11 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 12 [ | ||
| ; BOLT-NEXT: Name 15 { | ||
| ; BOLT-NEXT: Hash: 0x59796A | ||
| ; BOLT-NEXT: String: {{.+}} "t1" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000062 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 13 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,192 @@ | ||
| ; RUN: rm -rf %t | ||
| ; RUN: mkdir %t | ||
| ; RUN: cd %t | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-dualcu-main.s \ | ||
| ; RUN: -split-dwarf-file=main.dwo -o main.o | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-dualcu-helper.s \ | ||
| ; RUN: -split-dwarf-file=helper.dwo -o helper.o | ||
| ; RUN: %clang %cflags -gdwarf-5 -gsplit-dwarf=split main.o helper.o -o main.exe -fno-pic -no-pie | ||
| ; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections --create-debug-names-section=true | ||
| ; RUN: llvm-dwarfdump --debug-info --debug-names main.exe.bolt > %t/foo.txt | ||
| ; RUN: cat %t/foo.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests BOLT generates .debug_names with --create-debug-names-section. | ||
| ;; Also applicable when binary has split dwarf CUs that do not contribute to .debug_names pre-bolt. | ||
|
|
||
| ; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: [[OFFSET2:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: Name Index @ 0x0 { | ||
| ; BOLT-NEXT: Header { | ||
| ; BOLT-NEXT: Length: 0x148 | ||
| ; BOLT-NEXT: Format: DWARF32 | ||
| ; BOLT-NEXT: Version: 5 | ||
| ; BOLT-NEXT: CU count: 2 | ||
| ; BOLT-NEXT: Local TU count: 0 | ||
| ; BOLT-NEXT: Foreign TU count: 0 | ||
| ; BOLT-NEXT: Bucket count: 11 | ||
| ; BOLT-NEXT: Name count: 11 | ||
| ; BOLT-NEXT: Abbreviations table size: 0x19 | ||
| ; BOLT-NEXT: Augmentation: 'BOLT' | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Compilation Unit offsets [ | ||
| ; BOLT-NEXT: CU[0]: [[OFFSET1]] | ||
| ; BOLT-NEXT: CU[1]: [[OFFSET2]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Abbreviations [ | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 0 [ | ||
| ; BOLT-NEXT: Name 1 { | ||
| ; BOLT-NEXT: Hash: 0x2B61E | ||
| ; BOLT-NEXT: String: {{.+}} "y" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000029 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 2 { | ||
| ; BOLT-NEXT: Hash: 0x7C952063 | ||
| ; BOLT-NEXT: String: {{.+}} "char" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000008c | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 1 [ | ||
| ; BOLT-NEXT: Name 3 { | ||
| ; BOLT-NEXT: Hash: 0x2B609 | ||
| ; BOLT-NEXT: String: {{.+}} "d" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000029 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 4 { | ||
| ; BOLT-NEXT: Hash: 0x2B61F | ||
| ; BOLT-NEXT: String: {{.+}} "z" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 2 [ | ||
| ; BOLT-NEXT: Name 5 { | ||
| ; BOLT-NEXT: Hash: 0xB88B3D2 | ||
| ; BOLT-NEXT: String: {{.+}} "use" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000034 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 3 [ | ||
| ; BOLT-NEXT: Name 6 { | ||
| ; BOLT-NEXT: Hash: 0x45A3B006 | ||
| ; BOLT-NEXT: String: {{.+}} "_Z6helperii" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000034 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 4 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 5 [ | ||
| ; BOLT-NEXT: Name 7 { | ||
| ; BOLT-NEXT: Hash: 0x8C06E589 | ||
| ; BOLT-NEXT: String: {{.+}} "_Z3usePiS_" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000034 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 6 [ | ||
| ; BOLT-NEXT: Name 8 { | ||
| ; BOLT-NEXT: Hash: 0xB888030 | ||
| ; BOLT-NEXT: String: {{.+}} "int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000025 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000025 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 7 [ | ||
| ; BOLT-NEXT: Name 9 { | ||
| ; BOLT-NEXT: Hash: 0x1D853E5 | ||
| ; BOLT-NEXT: String: {{.+}} "helper" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000034 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 10 { | ||
| ; BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| ; BOLT-NEXT: String: {{.+}} "main" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000057 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 8 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 9 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 10 [ | ||
| ; BOLT-NEXT: Name 11 { | ||
| ; BOLT-NEXT: Hash: 0x2B61D | ||
| ; BOLT-NEXT: String: {{.+}} "x" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,149 @@ | ||
| ; RUN: rm -rf %t | ||
| ; RUN: mkdir %t | ||
| ; RUN: cd %t | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-debug-names-main.s \ | ||
| ; RUN: -split-dwarf-file=main.dwo -o main.o | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-debug-names-helper.s \ | ||
| ; RUN: -split-dwarf-file=helper.dwo -o helper.o | ||
| ; RUN: %clang %cflags -gdwarf-5 -gsplit-dwarf=split main.o helper.o -o main.exe | ||
| ; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections | ||
| ; RUN: llvm-dwarfdump --debug-info --debug-names main.exe.bolt > log.txt | ||
| ; RUN: cat log.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests that BOLT correctly generates .debug_names section with two CUs for split dwarf. | ||
|
|
||
| ; BOLT: [[OFFSET:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit | ||
| : BOLT: Name Index @ 0x0 { | ||
| : BOLT-NEXT: Header { | ||
| : BOLT-NEXT: Length: 0xF4 | ||
| : BOLT-NEXT: Format: DWARF32 | ||
| : BOLT-NEXT: Version: 5 | ||
| : BOLT-NEXT: CU count: 2 | ||
| : BOLT-NEXT: Local TU count: 0 | ||
| : BOLT-NEXT: Foreign TU count: 0 | ||
| : BOLT-NEXT: Bucket count: 7 | ||
| : BOLT-NEXT: Name count: 7 | ||
| : BOLT-NEXT: Abbreviations table size: 0x21 | ||
| : BOLT-NEXT: Augmentation: 'BOLT' | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: Compilation Unit offsets [ | ||
| : BOLT-NEXT: CU[0]: [[OFFSET]] | ||
| : BOLT-NEXT: CU[1]: [[OFFSET1]] | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: Abbreviations [ | ||
| : BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| : BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| : BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| : BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| : BOLT-NEXT: Tag: DW_TAG_base_type | ||
| : BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| : BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| : BOLT-NEXT: Tag: DW_TAG_variable | ||
| : BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| : BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] { | ||
| : BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| : BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| : BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: Bucket 0 [ | ||
| : BOLT-NEXT: EMPTY | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: Bucket 1 [ | ||
| : BOLT-NEXT: Name 1 { | ||
| : BOLT-NEXT: Hash: 0x7C96E4DB | ||
| : BOLT-NEXT: String: {{.+}} "Foo2" | ||
| : BOLT-NEXT: Entry @ {{.+}} { | ||
| : BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| : BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| : BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| : BOLT-NEXT: DW_IDX_die_offset: 0x00000068 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: Bucket 2 [ | ||
| : BOLT-NEXT: Name 2 { | ||
| : BOLT-NEXT: Hash: 0xBA564846 | ||
| : BOLT-NEXT: String: {{.+}} "Foo2Int" | ||
| : BOLT-NEXT: Entry @ {{.+}} { | ||
| : BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| : BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| : BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| : BOLT-NEXT: DW_IDX_die_offset: 0x00000025 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: Bucket 3 [ | ||
| : BOLT-NEXT: Name 3 { | ||
| : BOLT-NEXT: Hash: 0xB888030 | ||
| : BOLT-NEXT: String: {{.+}} "int" | ||
| : BOLT-NEXT: Entry @ {{.+}} { | ||
| : BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| : BOLT-NEXT: Tag: DW_TAG_base_type | ||
| : BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| : BOLT-NEXT: DW_IDX_die_offset: 0x00000043 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: Entry @ {{.+}} { | ||
| : BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| : BOLT-NEXT: Tag: DW_TAG_base_type | ||
| : BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| : BOLT-NEXT: DW_IDX_die_offset: 0x00000056 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: Name 4 { | ||
| : BOLT-NEXT: Hash: 0xF73809C | ||
| : BOLT-NEXT: String: {{.+}} "Foo2a" | ||
| : BOLT-NEXT: Entry @ {{.+}} { | ||
| : BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| : BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| : BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| : BOLT-NEXT: DW_IDX_die_offset: 0x00000078 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: Name 5 { | ||
| : BOLT-NEXT: Hash: 0x7C96CB76 | ||
| : BOLT-NEXT: String: {{.+}} "fint" | ||
| : BOLT-NEXT: Entry @ {{.+}} { | ||
| : BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| : BOLT-NEXT: Tag: DW_TAG_variable | ||
| : BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| : BOLT-NEXT: DW_IDX_die_offset: 0x0000001a | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: Name 6 { | ||
| : BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| : BOLT-NEXT: String: {{.+}} "main" | ||
| : BOLT-NEXT: Entry @ {{.+}} { | ||
| : BOLT-NEXT: Abbrev: [[ABBREV4]] | ||
| : BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| : BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| : BOLT-NEXT: DW_IDX_die_offset: 0x0000001a | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: Bucket 4 [ | ||
| : BOLT-NEXT: EMPTY | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: Bucket 5 [ | ||
| : BOLT-NEXT: Name 7 { | ||
| : BOLT-NEXT: Hash: 0x7C952063 | ||
| : BOLT-NEXT: String: {{.+}} "char" | ||
| : BOLT-NEXT: Entry @ {{.+}} { | ||
| : BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| : BOLT-NEXT: Tag: DW_TAG_base_type | ||
| : BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| : BOLT-NEXT: DW_IDX_die_offset: 0x00000064 | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: } | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: Bucket 6 [ | ||
| : BOLT-NEXT: EMPTY | ||
| : BOLT-NEXT: ] | ||
| : BOLT-NEXT: } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,101 @@ | ||
| ; RUN: rm -rf %t | ||
| ; RUN: mkdir %t | ||
| ; RUN: cd %t | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-debug-names-main.s \ | ||
| ; RUN: -split-dwarf-file=main.dwo -o main.o | ||
| ; RUN: %clang %cflags -gdwarf-5 -gsplit-dwarf=split main.o -o main.exe | ||
| ; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections | ||
| ; RUN: llvm-dwarfdump --debug-info --debug-names main.exe.bolt > log.txt | ||
| ; RUN: cat log.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests that BOLT correctly generates .debug_names section with one CU for split dwarf. | ||
|
|
||
| ; BOLT: [[OFFSET:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: Name Index @ 0x0 { | ||
| ; BOLT-NEXT: Header { | ||
| ; BOLT-NEXT: Length: 0xA9 | ||
| ; BOLT-NEXT: Format: DWARF32 | ||
| ; BOLT-NEXT: Version: 5 | ||
| ; BOLT-NEXT: CU count: 1 | ||
| ; BOLT-NEXT: Local TU count: 0 | ||
| ; BOLT-NEXT: Foreign TU count: 0 | ||
| ; BOLT-NEXT: Bucket count: 5 | ||
| ; BOLT-NEXT: Name count: 5 | ||
| ; BOLT-NEXT: Abbreviations table size: 0x13 | ||
| ; BOLT-NEXT: Augmentation: 'BOLT' | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Compilation Unit offsets [ | ||
| ; BOLT-NEXT: CU[0]: 0x00000000 | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Abbreviations [ | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 0 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 1 [ | ||
| ; BOLT-NEXT: Name 1 { | ||
| ; BOLT-NEXT: Hash: 0x7C96E4DB | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000068 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 2 { | ||
| ; BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| ; BOLT-NEXT: String: {{.+}} "main" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 2 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 3 [ | ||
| ; BOLT-NEXT: Name 3 { | ||
| ; BOLT-NEXT: Hash: 0xB888030 | ||
| ; BOLT-NEXT: String: {{.+}} "int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000056 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 4 [ | ||
| ; BOLT-NEXT: Name 4 { | ||
| ; BOLT-NEXT: Hash: 0xF73809C | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2a" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000078 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 5 { | ||
| ; BOLT-NEXT: Hash: 0x7C952063 | ||
| ; BOLT-NEXT: String: {{.+}} "char" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000064 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,234 @@ | ||
| ; RUN: rm -rf %t | ||
| ; RUN: mkdir %t | ||
| ; RUN: cd %t | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-types-debug-names-main.s \ | ||
| ; RUN: -split-dwarf-file=main.dwo -o main.o | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-types-debug-names-helper.s \ | ||
| ; RUN: -split-dwarf-file=helper.dwo -o helper.o | ||
| ; RUN: %clang %cflags -gdwarf-5 -gsplit-dwarf=split main.o helper.o -o main.exe | ||
| ; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections | ||
| ; RUN: llvm-dwarfdump --debug-info -r 0 main.dwo.dwo > log.txt | ||
| ; RUN: llvm-dwarfdump --debug-info -r 0 helper.dwo.dwo >> log.txt | ||
| ; RUN: llvm-dwarfdump --debug-info --debug-names main.exe.bolt >> log.txt | ||
| ; RUN: cat log.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests that BOLT correctly generates .debug_names section with two CUs and foreign TUs. | ||
|
|
||
| ; BOLT: type_signature = [[TYPE:0x[0-9a-f]*]] | ||
| ; BOLT: type_signature = [[TYPE1:0x[0-9a-f]*]] | ||
| ; BOLT: Compile Unit | ||
| ; BOLT: type_signature = [[TYPE2:0x[0-9a-f]*]] | ||
| ; BOLT: type_signature = [[TYPE3:0x[0-9a-f]*]] | ||
| ; BOLT: Compile Unit | ||
| ; BOLT: [[OFFSET:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit | ||
|
|
||
| ; BOLT: Name Index @ 0x0 { | ||
| ; BOLT-NEXT: Header { | ||
| ; BOLT-NEXT: Length: 0x174 | ||
| ; BOLT-NEXT: Format: DWARF32 | ||
| ; BOLT-NEXT: Version: 5 | ||
| ; BOLT-NEXT: CU count: 2 | ||
| ; BOLT-NEXT: Local TU count: 0 | ||
| ; BOLT-NEXT: Foreign TU count: 4 | ||
| ; BOLT-NEXT: Bucket count: 9 | ||
| ; BOLT-NEXT: Name count: 9 | ||
| ; BOLT-NEXT: Abbreviations table size: 0x2D | ||
| ; BOLT-NEXT: Augmentation: 'BOLT' | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Compilation Unit offsets [ | ||
| ; BOLT-NEXT: CU[0]: [[OFFSET]] | ||
| ; BOLT-NEXT: CU[1]: [[OFFSET1]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Foreign Type Unit signatures [ | ||
| ; BOLT-NEXT: ForeignTU[0]: [[TYPE]] | ||
| ; BOLT-NEXT: ForeignTU[1]: [[TYPE1]] | ||
| ; BOLT-NEXT: ForeignTU[2]: [[TYPE2]] | ||
| ; BOLT-NEXT: ForeignTU[3]: [[TYPE3]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Abbreviations [ | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 0 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 1 [ | ||
| ; BOLT-NEXT: Name 1 { | ||
| ; BOLT-NEXT: Hash: 0x7C96E4DB | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000021 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 2 { | ||
| ; BOLT-NEXT: Hash: 0xB5063D0B | ||
| ; BOLT-NEXT: String: {{.+}} "_Z3foov" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000029 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 3 { | ||
| ; BOLT-NEXT: Hash: 0xFDE48034 | ||
| ; BOLT-NEXT: String: {{.+}} "fooint" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 2 [ | ||
| ; BOLT-NEXT: Name 4 { | ||
| ; BOLT-NEXT: Hash: 0xB888030 | ||
| ; BOLT-NEXT: String: {{.+}} "int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000025 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: 0x5 | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x02 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000003f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000056 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 3 [ | ||
| ; BOLT-NEXT: Name 5 { | ||
| ; BOLT-NEXT: Hash: 0xB887389 | ||
| ; BOLT-NEXT: String: {{.+}} "foo" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000029 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 6 { | ||
| ; BOLT-NEXT: Hash: 0xF73809C | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2a" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000021 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x03 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000021 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 7 { | ||
| ; BOLT-NEXT: Hash: 0xBA564846 | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2Int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x02 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000021 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 4 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 5 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 6 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 7 [ | ||
| ; BOLT-NEXT: Name 8 { | ||
| ; BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| ; BOLT-NEXT: String: {{.+}} "main" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 8 [ | ||
| ; BOLT-NEXT: Name 9 { | ||
| ; BOLT-NEXT: Hash: 0x7C952063 | ||
| ; BOLT-NEXT: String: {{.+}} "char" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: 0x5 | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000036 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: 0x5 | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000048 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: 0x5 | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x03 | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000048 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000064 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,129 @@ | ||
| ; RUN: rm -rf %t | ||
| ; RUN: mkdir %t | ||
| ; RUN: cd %t | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-types-debug-names-main.s \ | ||
| ; RUN: -split-dwarf-file=main.dwo -o main.o | ||
| ; RUN: %clang %cflags -gdwarf-5 -gsplit-dwarf=split main.o -o main.exe | ||
| ; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections | ||
| ; RUN: llvm-dwarfdump --debug-info -r 0 main.dwo.dwo > log.txt | ||
| ; RUN: llvm-dwarfdump --debug-info --debug-names main.exe.bolt >> log.txt | ||
| ; RUN: cat log.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests that BOLT correctly generates .debug_names section with one CU and foreign TUs. | ||
|
|
||
| ; BOLT: type_signature = [[TYPE:0x[0-9a-f]*]] | ||
| ; BOLT: type_signature = [[TYPE1:0x[0-9a-f]*]] | ||
| ; BOLT: Compile Unit | ||
| ; BOLT: [[OFFSET:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: Name Index @ 0x0 { | ||
| ; BOLT-NEXT: Header { | ||
| ; BOLT-NEXT: Length: 0xD1 | ||
| ; BOLT-NEXT: Format: DWARF32 | ||
| ; BOLT-NEXT: Version: 5 | ||
| ; BOLT-NEXT: CU count: 1 | ||
| ; BOLT-NEXT: Local TU count: 0 | ||
| ; BOLT-NEXT: Foreign TU count: 2 | ||
| ; BOLT-NEXT: Bucket count: 5 | ||
| ; BOLT-NEXT: Name count: 5 | ||
| ; BOLT-NEXT: Abbreviations table size: 0x1D | ||
| ; BOLT-NEXT: Augmentation: 'BOLT' | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Compilation Unit offsets [ | ||
| ; BOLT-NEXT: CU[0]: [[OFFSET]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Foreign Type Unit signatures [ | ||
| ; BOLT-NEXT: ForeignTU[0]: [[TYPE]] | ||
| ; BOLT-NEXT: ForeignTU[1]: [[TYPE1]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Abbreviations [ | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 0 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 1 [ | ||
| ; BOLT-NEXT: Name 1 { | ||
| ; BOLT-NEXT: Hash: 0x7C96E4DB | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000021 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 2 { | ||
| ; BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| ; BOLT-NEXT: String: {{.+}} "main" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 2 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 3 [ | ||
| ; BOLT-NEXT: Name 3 { | ||
| ; BOLT-NEXT: Hash: 0xB888030 | ||
| ; BOLT-NEXT: String: {{.+}} "int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000056 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 4 [ | ||
| ; BOLT-NEXT: Name 4 { | ||
| ; BOLT-NEXT: Hash: 0xF73809C | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2a" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000021 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 5 { | ||
| ; BOLT-NEXT: Hash: 0x7C952063 | ||
| ; BOLT-NEXT: String: {{.+}} "char" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV4]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000036 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV4]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x01 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000048 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000064 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,178 @@ | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-debug-names-main.s -o %tmain.o | ||
| ; RUN: %clang %cflags -gdwarf-5 %tmain.o -o %tmain.exe | ||
| ; RUN: llvm-bolt %tmain.exe -o %tmain.exe.bolt --update-debug-sections | ||
| ; RUN: llvm-dwarfdump --debug-info -r 0 --debug-names %tmain.exe.bolt > %tlog.txt | ||
| ; RUN: cat %tlog.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests that BOLT correctly generates .debug_names section with one CUs | ||
|
|
||
| ; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: Name Index @ 0x0 { | ||
| ; BOLT-NEXT: Header { | ||
| ; BOLT-NEXT: Length: 0x13E | ||
| ; BOLT-NEXT: Format: DWARF32 | ||
| ; BOLT-NEXT: Version: 5 | ||
| ; BOLT-NEXT: CU count: 1 | ||
| ; BOLT-NEXT: Local TU count: 0 | ||
| ; BOLT-NEXT: Foreign TU count: 0 | ||
| ; BOLT-NEXT: Bucket count: 11 | ||
| ; BOLT-NEXT: Name count: 11 | ||
| ; BOLT-NEXT: Abbreviations table size: 0x1F | ||
| ; BOLT-NEXT: Augmentation: 'BOLT' | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Compilation Unit offsets [ | ||
| ; BOLT-NEXT: CU[0]: [[OFFSET1]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Abbreviations [ | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV5:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_namespace | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 0 [ | ||
| ; BOLT-NEXT: Name 1 { | ||
| ; BOLT-NEXT: Hash: 0xF73809C | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2a" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000104 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 2 { | ||
| ; BOLT-NEXT: Hash: 0x7C952063 | ||
| ; BOLT-NEXT: String: {{.+}} "char" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x000000c5 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 1 [ | ||
| ; BOLT-NEXT: Name 3 { | ||
| ; BOLT-NEXT: Hash: 0xB887389 | ||
| ; BOLT-NEXT: String: {{.+}} "Foo" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x000000c9 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 4 { | ||
| ; BOLT-NEXT: Hash: 0x392140FA | ||
| ; BOLT-NEXT: String: {{.+}} "t2<&fooint>" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000003f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 2 [ | ||
| ; BOLT-NEXT: Name 5 { | ||
| ; BOLT-NEXT: Hash: 0x7C96E4DB | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x000000eb | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 3 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 4 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 5 [ | ||
| ; BOLT-NEXT: Name 6 { | ||
| ; BOLT-NEXT: Hash: 0x59796A | ||
| ; BOLT-NEXT: String: {{.+}} "t1" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000062 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 7 { | ||
| ; BOLT-NEXT: Hash: 0x5979AC | ||
| ; BOLT-NEXT: String: {{.+}} "v1" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_variable | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000024 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 6 [ | ||
| ; BOLT-NEXT: Name 8 { | ||
| ; BOLT-NEXT: Hash: 0xB888030 | ||
| ; BOLT-NEXT: String: {{.+}} "int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000005d | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 7 [ | ||
| ; BOLT-NEXT: Name 9 { | ||
| ; BOLT-NEXT: Hash: 0x59796C | ||
| ; BOLT-NEXT: String: {{.+}} "t3" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000002f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 10 { | ||
| ; BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| ; BOLT-NEXT: String: {{.+}} "main" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV4]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000073 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 8 [ | ||
| ; BOLT-NEXT: Name 11 { | ||
| ; BOLT-NEXT: Hash: 0x8CFC710C | ||
| ; BOLT-NEXT: String: {{.+}} "(anonymous namespace)" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV5]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_namespace | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000061 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV5]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_namespace | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000061 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 9 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 10 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,129 @@ | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-types-debug-names-main.s -o %tmain.o | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-types-debug-names-helper.s -o %thelper.o | ||
| ; RUN: %clang %cflags -gdwarf-5 %tmain.o %thelper.o -o %tmain.exe | ||
| ; RUN: llvm-bolt %tmain.exe -o %tmain.exe.bolt --update-debug-sections | ||
| ; RUN: llvm-dwarfdump --debug-info --debug-names %tmain.exe.bolt > %tlog.txt | ||
| ; RUN: cat %tlog.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests that BOLT correctly generates .debug_names section with two CUs and a local TU. | ||
|
|
||
| ; BOLT: [[OFFSET:0x[0-9a-f]*]]: Type Unit | ||
| ; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit | ||
| ; BOLT: [[OFFSET2:0x[0-9a-f]*]]: Compile Unit | ||
|
|
||
|
|
||
| ; BOLT: Name Index @ 0x0 { | ||
| ; BOLT: Header { | ||
| ; BOLT: Length: 0xE1 | ||
| ; BOLT: Format: DWARF32 | ||
| ; BOLT: Version: 5 | ||
| ; BOLT: CU count: 2 | ||
| ; BOLT: Local TU count: 1 | ||
| ; BOLT: Foreign TU count: 0 | ||
| ; BOLT: Bucket count: 6 | ||
| ; BOLT: Name count: 6 | ||
| ; BOLT: Abbreviations table size: 0x21 | ||
| ; BOLT: Augmentation: 'BOLT' | ||
| ; BOLT: } | ||
| ; BOLT: Compilation Unit offsets [ | ||
| ; BOLT: CU[0]: [[OFFSET1]] | ||
| ; BOLT: CU[1]: [[OFFSET2]] | ||
| ; BOLT: ] | ||
| ; BOLT: Local Type Unit offsets [ | ||
| ; BOLT: LocalTU[0]: [[OFFSET]] | ||
| ; BOLT: ] | ||
| ; BOLT: Abbreviations [ | ||
| ; BOLT: Abbreviation [[ABBREV:0x[0-9a-f]*]] { | ||
| ; BOLT: Tag: DW_TAG_structure_type | ||
| ; BOLT: DW_IDX_type_unit: DW_FORM_data1 | ||
| ; BOLT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT: } | ||
| ; BOLT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT: Tag: DW_TAG_subprogram | ||
| ; BOLT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT: } | ||
| ; BOLT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT: Tag: DW_TAG_base_type | ||
| ; BOLT: DW_IDX_compile_unit: DW_FORM_data1 | ||
| ; BOLT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT: } | ||
| ; BOLT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT: Tag: DW_TAG_base_type | ||
| ; BOLT: DW_IDX_type_unit: DW_FORM_data1 | ||
| ; BOLT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT: } | ||
| ; BOLT: ] | ||
| ; BOLT: Bucket 0 [ | ||
| ; BOLT: Name 1 { | ||
| ; BOLT: Hash: 0xF73809C | ||
| ; BOLT: String: {{.+}} "Foo2a" | ||
| ; BOLT: Entry @ {{.+}} { | ||
| ; BOLT: Abbrev: [[ABBREV]] | ||
| ; BOLT: Tag: DW_TAG_structure_type | ||
| ; BOLT: DW_IDX_type_unit: 0x00 | ||
| ; BOLT: DW_IDX_die_offset: 0x00000023 | ||
| ; BOLT: } | ||
| ; BOLT: } | ||
| ; BOLT: ] | ||
| ; BOLT: Bucket 1 [ | ||
| ; BOLT: Name 2 { | ||
| ; BOLT: Hash: 0xB5063D0B | ||
| ; BOLT: String: {{.+}} "_Z3foov" | ||
| ; BOLT: Entry @ {{.+}} { | ||
| ; BOLT: Abbrev: [[ABBREV1]] | ||
| ; BOLT: Tag: DW_TAG_subprogram | ||
| ; BOLT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT: DW_IDX_die_offset: 0x00000024 | ||
| ; BOLT: } | ||
| ; BOLT: } | ||
| ; BOLT: ] | ||
| ; BOLT: Bucket 2 [ | ||
| ; BOLT: Name 3 { | ||
| ; BOLT: Hash: 0xB888030 | ||
| ; BOLT: String: {{.+}} "int" | ||
| ; BOLT: Entry @ {{.+}} { | ||
| ; BOLT: Abbrev: [[ABBREV2]] | ||
| ; BOLT: Tag: DW_TAG_base_type | ||
| ; BOLT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT: DW_IDX_die_offset: 0x00000040 | ||
| ; BOLT: } | ||
| ; BOLT: } | ||
| ; BOLT: ] | ||
| ; BOLT: Bucket 3 [ | ||
| ; BOLT: Name 4 { | ||
| ; BOLT: Hash: 0xB887389 | ||
| ; BOLT: String: {{.+}} "foo" | ||
| ; BOLT: Entry @ {{.+}} { | ||
| ; BOLT: Abbrev: [[ABBREV1]] | ||
| ; BOLT: Tag: DW_TAG_subprogram | ||
| ; BOLT: DW_IDX_compile_unit: 0x01 | ||
| ; BOLT: DW_IDX_die_offset: 0x00000024 | ||
| ; BOLT: } | ||
| ; BOLT: } | ||
| ; BOLT: ] | ||
| ; BOLT: Bucket 4 [ | ||
| ; BOLT: Name 5 { | ||
| ; BOLT: Hash: 0x7C9A7F6A | ||
| ; BOLT: String: {{.+}} "main" | ||
| ; BOLT: Entry @ {{.+}} { | ||
| ; BOLT: Abbrev: [[ABBREV1]] | ||
| ; BOLT: Tag: DW_TAG_subprogram | ||
| ; BOLT: DW_IDX_compile_unit: 0x00 | ||
| ; BOLT: DW_IDX_die_offset: 0x00000024 | ||
| ; BOLT: } | ||
| ; BOLT: } | ||
| ; BOLT: ] | ||
| ; BOLT: Bucket 5 [ | ||
| ; BOLT: Name 6 { | ||
| ; BOLT: Hash: 0x7C952063 | ||
| ; BOLT: String: {{.+}} "char" | ||
| ; BOLT: Entry @ {{.+}} { | ||
| ; BOLT: Abbrev: [[ABBREV3]] | ||
| ; BOLT: Tag: DW_TAG_base_type | ||
| ; BOLT: DW_IDX_type_unit: 0x00 | ||
| ; BOLT: DW_IDX_die_offset: 0x00000038 | ||
| ; BOLT: } | ||
| ; BOLT: } | ||
| ; BOLT: ] | ||
| ; BOLT: } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,98 @@ | ||
| ; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-types-debug-names-main.s -o %tmain.o | ||
| ; RUN: %clang %cflags -gdwarf-5 %tmain.o -o %tmain.exe | ||
| ; RUN: llvm-bolt %tmain.exe -o %tmain.exe.bolt --update-debug-sections | ||
| ; RUN: llvm-dwarfdump --debug-info --debug-names %tmain.exe.bolt > %tlog.txt | ||
| ; RUN: cat %tlog.txt | FileCheck -check-prefix=BOLT %s | ||
|
|
||
| ;; Tests that BOLT correctly generates .debug_names section with one CU and a local TU. | ||
|
|
||
| ; BOLT: [[OFFSET:0x[0-9a-f]*]]: Type Unit | ||
| ; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit | ||
|
|
||
| ; BOLT:Name Index @ 0x0 { | ||
| ; BOLT-NEXT: Header { | ||
| ; BOLT-NEXT: Length: 0xA3 | ||
| ; BOLT-NEXT: Format: DWARF32 | ||
| ; BOLT-NEXT: Version: 5 | ||
| ; BOLT-NEXT: CU count: 1 | ||
| ; BOLT-NEXT: Local TU count: 1 | ||
| ; BOLT-NEXT: Foreign TU count: 0 | ||
| ; BOLT-NEXT: Bucket count: 4 | ||
| ; BOLT-NEXT: Name count: 4 | ||
| ; BOLT-NEXT: Abbreviations table size: 0x1D | ||
| ; BOLT-NEXT: Augmentation: 'BOLT' | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Compilation Unit offsets [ | ||
| ; BOLT-NEXT: CU[0]: [[OFFSET1]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Local Type Unit offsets [ | ||
| ; BOLT-NEXT: LocalTU[0]: [[OFFSET]] | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Abbreviations [ | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: DW_FORM_data1 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 0 [ | ||
| ; BOLT-NEXT: Name 1 { | ||
| ; BOLT-NEXT: Hash: 0xB888030 | ||
| ; BOLT-NEXT: String: {{.+}} "int" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x0000003f | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: Name 2 { | ||
| ; BOLT-NEXT: Hash: 0xF73809C | ||
| ; BOLT-NEXT: String: {{.+}} "Foo2a" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV1]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_structure_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000023 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 1 [ | ||
| ; BOLT-NEXT: EMPTY | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 2 [ | ||
| ; BOLT-NEXT: Name 3 { | ||
| ; BOLT-NEXT: Hash: 0x7C9A7F6A | ||
| ; BOLT-NEXT: String: {{.+}} "main" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV2]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_subprogram | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000024 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT: Bucket 3 [ | ||
| ; BOLT-NEXT: Name 4 { | ||
| ; BOLT-NEXT: Hash: 0x7C952063 | ||
| ; BOLT-NEXT: String: {{.+}} "char" | ||
| ; BOLT-NEXT: Entry @ {{.+}} { | ||
| ; BOLT-NEXT: Abbrev: [[ABBREV3]] | ||
| ; BOLT-NEXT: Tag: DW_TAG_base_type | ||
| ; BOLT-NEXT: DW_IDX_type_unit: 0x00 | ||
| ; BOLT-NEXT: DW_IDX_die_offset: 0x00000038 | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: } | ||
| ; BOLT-NEXT: ] | ||
| ; BOLT-NEXT:} |