16de5fcc7SAlexander Yermolovich; RUN: rm -rf %t 26de5fcc7SAlexander Yermolovich; RUN: mkdir %t 36de5fcc7SAlexander Yermolovich; RUN: cd %t 46de5fcc7SAlexander Yermolovich; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-dualcu-main.s \ 56de5fcc7SAlexander Yermolovich; RUN: -split-dwarf-file=main.dwo -o main.o 66de5fcc7SAlexander Yermolovich; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-dualcu-helper.s \ 76de5fcc7SAlexander Yermolovich; RUN: -split-dwarf-file=helper.dwo -o helper.o 86de5fcc7SAlexander Yermolovich; RUN: %clang %cflags -gdwarf-5 -gsplit-dwarf=split main.o helper.o -o main.exe -fno-pic -no-pie 96de5fcc7SAlexander Yermolovich; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections --create-debug-names-section=true 106de5fcc7SAlexander Yermolovich; RUN: llvm-dwarfdump --debug-info --debug-names main.exe.bolt > %t/foo.txt 116de5fcc7SAlexander Yermolovich; RUN: cat %t/foo.txt | FileCheck -check-prefix=BOLT %s 126de5fcc7SAlexander Yermolovich 136de5fcc7SAlexander Yermolovich;; Tests BOLT generates .debug_names with --create-debug-names-section. 146de5fcc7SAlexander Yermolovich;; Also applicable when binary has split dwarf CUs that do not contribute to .debug_names pre-bolt. 156de5fcc7SAlexander Yermolovich 166de5fcc7SAlexander Yermolovich; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit 176de5fcc7SAlexander Yermolovich; BOLT: [[OFFSET2:0x[0-9a-f]*]]: Compile Unit 186de5fcc7SAlexander Yermolovich; BOLT: Name Index @ 0x0 { 196de5fcc7SAlexander Yermolovich; BOLT-NEXT: Header { 20*a4610c71SAlexander Yermolovich; BOLT-NEXT: Length: 0x14E 216de5fcc7SAlexander Yermolovich; BOLT-NEXT: Format: DWARF32 226de5fcc7SAlexander Yermolovich; BOLT-NEXT: Version: 5 236de5fcc7SAlexander Yermolovich; BOLT-NEXT: CU count: 2 246de5fcc7SAlexander Yermolovich; BOLT-NEXT: Local TU count: 0 256de5fcc7SAlexander Yermolovich; BOLT-NEXT: Foreign TU count: 0 266de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket count: 11 276de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name count: 11 28*a4610c71SAlexander Yermolovich; BOLT-NEXT: Abbreviations table size: 0x1F 296de5fcc7SAlexander Yermolovich; BOLT-NEXT: Augmentation: 'BOLT' 306de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 316de5fcc7SAlexander Yermolovich; BOLT-NEXT: Compilation Unit offsets [ 326de5fcc7SAlexander Yermolovich; BOLT-NEXT: CU[0]: [[OFFSET1]] 336de5fcc7SAlexander Yermolovich; BOLT-NEXT: CU[1]: [[OFFSET2]] 346de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 356de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbreviations [ 366de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { 376de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_variable 386de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 396de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 40*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 416de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 426de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { 436de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_base_type 446de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 456de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 46*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 476de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 486de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { 496de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_subprogram 506de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data1 516de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 52*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 536de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 546de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 556de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 0 [ 566de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 1 { 576de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x2B61E 586de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "y" 596de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 606de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV1]] 616de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_variable 626de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x00 636de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000029 64*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 656de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 666de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 676de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 2 { 686de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x7C952063 696de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "char" 706de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 716de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV2]] 726de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_base_type 736de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x00 746de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x0000008c 75*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 766de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 776de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 786de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 796de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 1 [ 806de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 3 { 816de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x2B609 826de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "d" 836de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 846de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV1]] 856de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_variable 866de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x01 876de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000029 88*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 896de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 906de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 916de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 4 { 926de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x2B61F 936de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "z" 946de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 956de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV1]] 966de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_variable 976de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x01 986de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a 99*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 1006de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1016de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1026de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1036de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 2 [ 1046de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 5 { 1056de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0xB88B3D2 1066de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "use" 1076de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 1086de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV3]] 1096de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_subprogram 1106de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x00 1116de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000034 112*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 1136de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1146de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1156de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1166de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 3 [ 1176de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 6 { 1186de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x45A3B006 1196de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "_Z6helperii" 1206de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 1216de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV3]] 1226de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_subprogram 1236de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x01 1246de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000034 125*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 1266de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1276de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1286de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1296de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 4 [ 1306de5fcc7SAlexander Yermolovich; BOLT-NEXT: EMPTY 1316de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1326de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 5 [ 1336de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 7 { 1346de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x8C06E589 1356de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "_Z3usePiS_" 1366de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 1376de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV3]] 1386de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_subprogram 1396de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x00 1406de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000034 141*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 1426de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1436de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1446de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1456de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 6 [ 1466de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 8 { 1476de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0xB888030 1486de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "int" 1496de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 1506de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV2]] 1516de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_base_type 1526de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x00 1536de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000025 154*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 1556de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1566de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 1576de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV2]] 1586de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_base_type 1596de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x01 1606de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000025 161*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 1626de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1636de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1646de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1656de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 7 [ 1666de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 9 { 1676de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x1D853E5 1686de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "helper" 1696de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 1706de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV3]] 1716de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_subprogram 1726de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x01 1736de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000034 174*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 1756de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1766de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1776de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 10 { 1786de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x7C9A7F6A 1796de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "main" 1806de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 1816de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV3]] 1826de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_subprogram 1836de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x00 1846de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x00000057 185*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 1866de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1876de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 1886de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1896de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 8 [ 1906de5fcc7SAlexander Yermolovich; BOLT-NEXT: EMPTY 1916de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1926de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 9 [ 1936de5fcc7SAlexander Yermolovich; BOLT-NEXT: EMPTY 1946de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 1956de5fcc7SAlexander Yermolovich; BOLT-NEXT: Bucket 10 [ 1966de5fcc7SAlexander Yermolovich; BOLT-NEXT: Name 11 { 1976de5fcc7SAlexander Yermolovich; BOLT-NEXT: Hash: 0x2B61D 1986de5fcc7SAlexander Yermolovich; BOLT-NEXT: String: {{.+}} "x" 1996de5fcc7SAlexander Yermolovich; BOLT-NEXT: Entry @ {{.+}} { 2006de5fcc7SAlexander Yermolovich; BOLT-NEXT: Abbrev: [[ABBREV1]] 2016de5fcc7SAlexander Yermolovich; BOLT-NEXT: Tag: DW_TAG_variable 2026de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_compile_unit: 0x00 2036de5fcc7SAlexander Yermolovich; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a 204*a4610c71SAlexander Yermolovich; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 2056de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 2066de5fcc7SAlexander Yermolovich; BOLT-NEXT: } 2076de5fcc7SAlexander Yermolovich; BOLT-NEXT: ] 208