1; RUN: rm -rf %t 2; RUN: mkdir %t 3; RUN: cd %t 4; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-types-debug-names-main.s \ 5; RUN: -split-dwarf-file=main.dwo -o main.o 6; RUN: %clang %cflags -gdwarf-5 -gsplit-dwarf=split main.o -o main.exe 7; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections 8; RUN: llvm-dwarfdump --debug-info -r 0 main.dwo.dwo > log.txt 9; RUN: llvm-dwarfdump --debug-info --debug-names main.exe.bolt >> log.txt 10; RUN: cat log.txt | FileCheck -check-prefix=BOLT %s 11 12;; Tests that BOLT correctly generates .debug_names section with one CU and foreign TUs. 13 14; BOLT: type_signature = [[TYPE:0x[0-9a-f]*]] 15; BOLT: type_signature = [[TYPE1:0x[0-9a-f]*]] 16; BOLT: Compile Unit 17; BOLT: [[OFFSET:0x[0-9a-f]*]]: Compile Unit 18; BOLT: Name Index @ 0x0 { 19; BOLT-NEXT: Header { 20; BOLT-NEXT: Length: 0xD9 21; BOLT-NEXT: Format: DWARF32 22; BOLT-NEXT: Version: 5 23; BOLT-NEXT: CU count: 1 24; BOLT-NEXT: Local TU count: 0 25; BOLT-NEXT: Foreign TU count: 2 26; BOLT-NEXT: Bucket count: 5 27; BOLT-NEXT: Name count: 5 28; BOLT-NEXT: Abbreviations table size: 0x25 29; BOLT-NEXT: Augmentation: 'BOLT' 30; BOLT-NEXT: } 31; BOLT-NEXT: Compilation Unit offsets [ 32; BOLT-NEXT: CU[0]: [[OFFSET]] 33; BOLT-NEXT: ] 34; BOLT-NEXT: Foreign Type Unit signatures [ 35; BOLT-NEXT: ForeignTU[0]: [[TYPE]] 36; BOLT-NEXT: ForeignTU[1]: [[TYPE1]] 37; BOLT-NEXT: ] 38; BOLT-NEXT: Abbreviations [ 39; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] { 40; BOLT-NEXT: Tag: DW_TAG_structure_type 41; BOLT-NEXT: DW_IDX_type_unit: DW_FORM_data1 42; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 43; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 44; BOLT-NEXT: } 45; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] { 46; BOLT-NEXT: Tag: DW_TAG_subprogram 47; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 48; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 49; BOLT-NEXT: } 50; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] { 51; BOLT-NEXT: Tag: DW_TAG_base_type 52; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 53; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 54; BOLT-NEXT: } 55; BOLT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] { 56; BOLT-NEXT: Tag: DW_TAG_base_type 57; BOLT-NEXT: DW_IDX_type_unit: DW_FORM_data1 58; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref4 59; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present 60; BOLT-NEXT: } 61; BOLT-NEXT: ] 62; BOLT-NEXT: Bucket 0 [ 63; BOLT-NEXT: EMPTY 64; BOLT-NEXT: ] 65; BOLT-NEXT: Bucket 1 [ 66; BOLT-NEXT: Name 1 { 67; BOLT-NEXT: Hash: 0x7C96E4DB 68; BOLT-NEXT: String: {{.+}} "Foo2" 69; BOLT-NEXT: Entry @ {{.+}} { 70; BOLT-NEXT: Abbrev: [[ABBREV1]] 71; BOLT-NEXT: Tag: DW_TAG_structure_type 72; BOLT-NEXT: DW_IDX_type_unit: 0x00 73; BOLT-NEXT: DW_IDX_die_offset: 0x00000021 74; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 75; BOLT-NEXT: } 76; BOLT-NEXT: } 77; BOLT-NEXT: Name 2 { 78; BOLT-NEXT: Hash: 0x7C9A7F6A 79; BOLT-NEXT: String: {{.+}} "main" 80; BOLT-NEXT: Entry @ {{.+}} { 81; BOLT-NEXT: Abbrev: [[ABBREV2]] 82; BOLT-NEXT: Tag: DW_TAG_subprogram 83; BOLT-NEXT: DW_IDX_die_offset: 0x0000001a 84; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 85; BOLT-NEXT: } 86; BOLT-NEXT: } 87; BOLT-NEXT: ] 88; BOLT-NEXT: Bucket 2 [ 89; BOLT-NEXT: EMPTY 90; BOLT-NEXT: ] 91; BOLT-NEXT: Bucket 3 [ 92; BOLT-NEXT: Name 3 { 93; BOLT-NEXT: Hash: 0xB888030 94; BOLT-NEXT: String: {{.+}} "int" 95; BOLT-NEXT: Entry @ {{.+}} { 96; BOLT-NEXT: Abbrev: [[ABBREV3]] 97; BOLT-NEXT: Tag: DW_TAG_base_type 98; BOLT-NEXT: DW_IDX_die_offset: 0x00000056 99; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 100; BOLT-NEXT: } 101; BOLT-NEXT: } 102; BOLT-NEXT: ] 103; BOLT-NEXT: Bucket 4 [ 104; BOLT-NEXT: Name 4 { 105; BOLT-NEXT: Hash: 0xF73809C 106; BOLT-NEXT: String: {{.+}} "Foo2a" 107; BOLT-NEXT: Entry @ {{.+}} { 108; BOLT-NEXT: Abbrev: [[ABBREV1]] 109; BOLT-NEXT: Tag: DW_TAG_structure_type 110; BOLT-NEXT: DW_IDX_type_unit: 0x01 111; BOLT-NEXT: DW_IDX_die_offset: 0x00000021 112; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 113; BOLT-NEXT: } 114; BOLT-NEXT: } 115; BOLT-NEXT: Name 5 { 116; BOLT-NEXT: Hash: 0x7C952063 117; BOLT-NEXT: String: {{.+}} "char" 118; BOLT-NEXT: Entry @ {{.+}} { 119; BOLT-NEXT: Abbrev: [[ABBREV4]] 120; BOLT-NEXT: Tag: DW_TAG_base_type 121; BOLT-NEXT: DW_IDX_type_unit: 0x00 122; BOLT-NEXT: DW_IDX_die_offset: 0x00000036 123; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 124; BOLT-NEXT: } 125; BOLT-NEXT: Entry @ {{.+}} { 126; BOLT-NEXT: Abbrev: [[ABBREV4]] 127; BOLT-NEXT: Tag: DW_TAG_base_type 128; BOLT-NEXT: DW_IDX_type_unit: 0x01 129; BOLT-NEXT: DW_IDX_die_offset: 0x00000048 130; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 131; BOLT-NEXT: } 132; BOLT-NEXT: Entry @ {{.+}} { 133; BOLT-NEXT: Abbrev: [[ABBREV3]] 134; BOLT-NEXT: Tag: DW_TAG_base_type 135; BOLT-NEXT: DW_IDX_die_offset: 0x00000064 136; BOLT-NEXT: DW_IDX_parent: <parent not indexed> 137; BOLT-NEXT: } 138; BOLT-NEXT: } 139; BOLT-NEXT: ] 140; BOLT-NEXT: } 141