xref: /llvm-project/bolt/test/X86/dwarf5-df-debug-names-generate-debug-names.test (revision a4610c7182d35093e9e0fde5be91659a8b9da5b8)
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