214 lines · plain
1; REQUIRES: system-linux2 3; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5_main.s -o %tmain.o4; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5_helper.s -o %thelper.o5; RUN: %clang %cflags -dwarf-5 %tmain.o %thelper.o -o %t.exe -Wl,-q6; RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections --create-debug-names-section=true7; RUN: llvm-dwarfdump --debug-info -r 0 --debug-names %t.bolt > %t.txt8; RUN: cat %t.txt | FileCheck --check-prefix=BOLT %s9 10;; Tests BOLT generates .debug_names with --create-debug-names-section.11;; Also applicable when binary has CUs that do not contribute to .debug_names pre-bolt.12 13; BOLT: [[OFFSET1:0x[0-9a-f]*]]: Compile Unit14; BOLT: [[OFFSET2:0x[0-9a-f]*]]: Compile Unit15; BOLT: Name Index @ 0x0 {16; BOLT-NEXT: Header {17; BOLT-NEXT: Length: 0x15518; BOLT-NEXT: Format: DWARF3219; BOLT-NEXT: Version: 520; BOLT-NEXT: CU count: 221; BOLT-NEXT: Local TU count: 022; BOLT-NEXT: Foreign TU count: 023; BOLT-NEXT: Bucket count: 1024; BOLT-NEXT: Name count: 1025; BOLT-NEXT: Abbreviations table size: 0x2926; BOLT-NEXT: Augmentation: 'BOLT'27; BOLT-NEXT: }28; BOLT-NEXT: Compilation Unit offsets [29; BOLT-NEXT: CU[0]: [[OFFSET1]]30; BOLT-NEXT: CU[1]: [[OFFSET2]]31; BOLT-NEXT: ]32; BOLT-NEXT: Abbreviations [33; BOLT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] {34; BOLT-NEXT: Tag: DW_TAG_subprogram35; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data136; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref437; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present38; BOLT-NEXT: }39; BOLT-NEXT: Abbreviation [[ABBREV2:0x[0-9a-f]*]] {40; BOLT-NEXT: Tag: DW_TAG_inlined_subroutine41; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data142; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref443; BOLT-NEXT: DW_IDX_parent: DW_FORM_ref444; BOLT-NEXT: }45; BOLT-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] {46; BOLT-NEXT: Tag: DW_TAG_variable47; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data148; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref449; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present50; BOLT-NEXT: }51; BOLT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] {52; BOLT-NEXT: Tag: DW_TAG_base_type53; BOLT-NEXT: DW_IDX_compile_unit: DW_FORM_data154; BOLT-NEXT: DW_IDX_die_offset: DW_FORM_ref455; BOLT-NEXT: DW_IDX_parent: DW_FORM_flag_present56; BOLT-NEXT: }57; BOLT-NEXT: ]58; BOLT-NEXT: Bucket 0 [59; BOLT-NEXT: Name 1 {60; BOLT-NEXT: Hash: 0x2124BB3661; BOLT-NEXT: String: {{.+}} "useFoo"62; BOLT-NEXT: Entry @ {{.+}} {63; BOLT-NEXT: Abbrev: [[ABBREV1]]64; BOLT-NEXT: Tag: DW_TAG_subprogram65; BOLT-NEXT: DW_IDX_compile_unit: 0x0166; BOLT-NEXT: DW_IDX_die_offset: 0x0000003767; BOLT-NEXT: DW_IDX_parent: <parent not indexed>68; BOLT-NEXT: }69; BOLT-NEXT: Entry @ {{.+}} {70; BOLT-NEXT: Abbrev: [[ABBREV2]]71; BOLT-NEXT: Tag: DW_TAG_inlined_subroutine72; BOLT-NEXT: DW_IDX_compile_unit: 0x0173; BOLT-NEXT: DW_IDX_die_offset: 0x0000008174; BOLT-NEXT: DW_IDX_parent: Entry @ 0x14b75; BOLT-NEXT: }76; BOLT-NEXT: }77; BOLT-NEXT: ]78; BOLT-NEXT: Bucket 1 [79; BOLT-NEXT: EMPTY80; BOLT-NEXT: ]81; BOLT-NEXT: Bucket 2 [82; BOLT-NEXT: Name 2 {83; BOLT-NEXT: Hash: 0xFDE4B5D284; BOLT-NEXT: String: {{.+}} "fooVar"85; BOLT-NEXT: Entry @ {{.+}} {86; BOLT-NEXT: Abbrev: [[ABBREV3]]87; BOLT-NEXT: Tag: DW_TAG_variable88; BOLT-NEXT: DW_IDX_compile_unit: 0x0189; BOLT-NEXT: DW_IDX_die_offset: 0x0000002890; BOLT-NEXT: DW_IDX_parent: <parent not indexed>91; BOLT-NEXT: }92; BOLT-NEXT: }93; BOLT-NEXT: ]94; BOLT-NEXT: Bucket 3 [95; BOLT-NEXT: EMPTY96; BOLT-NEXT: ]97; BOLT-NEXT: Bucket 4 [98; BOLT-NEXT: EMPTY99; BOLT-NEXT: ]100; BOLT-NEXT: Bucket 5 [101; BOLT-NEXT: EMPTY102; BOLT-NEXT: ]103; BOLT-NEXT: Bucket 6 [104; BOLT-NEXT: Name 3 {105; BOLT-NEXT: Hash: 0xB88B3D2106; BOLT-NEXT: String: {{.+}} "use"107; BOLT-NEXT: Entry @ {{.+}} {108; BOLT-NEXT: Abbrev: [[ABBREV1]]109; BOLT-NEXT: Tag: DW_TAG_subprogram110; BOLT-NEXT: DW_IDX_compile_unit: 0x00111; BOLT-NEXT: DW_IDX_die_offset: 0x00000028112; BOLT-NEXT: DW_IDX_parent: <parent not indexed>113; BOLT-NEXT: }114; BOLT-NEXT: }115; BOLT-NEXT: Name 4 {116; BOLT-NEXT: Hash: 0x69A7307E117; BOLT-NEXT: String: {{.+}} "_Z6useFooPi"118; BOLT-NEXT: Entry @ {{.+}} {119; BOLT-NEXT: Abbrev: [[ABBREV1]]120; BOLT-NEXT: Tag: DW_TAG_subprogram121; BOLT-NEXT: DW_IDX_compile_unit: 0x01122; BOLT-NEXT: DW_IDX_die_offset: 0x00000037123; BOLT-NEXT: DW_IDX_parent: <parent not indexed>124; BOLT-NEXT: }125; BOLT-NEXT: Entry @ {{.+}} {126; BOLT-NEXT: Abbrev: [[ABBREV2]]127; BOLT-NEXT: Tag: DW_TAG_inlined_subroutine128; BOLT-NEXT: DW_IDX_compile_unit: 0x01129; BOLT-NEXT: DW_IDX_die_offset: 0x00000081130; BOLT-NEXT: DW_IDX_parent: Entry @ 0x14b131; BOLT-NEXT: }132; BOLT-NEXT: }133; BOLT-NEXT: Name 5 {134; BOLT-NEXT: Hash: 0x7C9A7F6A135; BOLT-NEXT: String: {{.+}} "main"136; BOLT-NEXT: Entry @ {{.+}} {137; BOLT-NEXT: Abbrev: [[ABBREV1]]138; BOLT-NEXT: Tag: DW_TAG_subprogram139; BOLT-NEXT: DW_IDX_compile_unit: 0x00140; BOLT-NEXT: DW_IDX_die_offset: 0x00000049141; BOLT-NEXT: DW_IDX_parent: <parent not indexed>142; BOLT-NEXT: }143; BOLT-NEXT: }144; BOLT-NEXT: Name 6 {145; BOLT-NEXT: Hash: 0xB5063CFE146; BOLT-NEXT: String: {{.+}} "_Z3fooi"147; BOLT-NEXT: Entry @ {{.+}} {148; BOLT-NEXT: Abbrev: [[ABBREV1]]149; BOLT-NEXT: Tag: DW_TAG_subprogram150; BOLT-NEXT: DW_IDX_compile_unit: 0x01151; BOLT-NEXT: DW_IDX_die_offset: 0x0000005e152; BOLT-NEXT: DW_IDX_parent: <parent not indexed>153; BOLT-NEXT: }154; BOLT-NEXT: }155; BOLT-NEXT: ]156; BOLT-NEXT: Bucket 7 [157; BOLT-NEXT: Name 7 {158; BOLT-NEXT: Hash: 0x8C06E589159; BOLT-NEXT: String: {{.+}} "_Z3usePiS_"160; BOLT-NEXT: Entry @ {{.+}} {161; BOLT-NEXT: Abbrev: [[ABBREV1]]162; BOLT-NEXT: Tag: DW_TAG_subprogram163; BOLT-NEXT: DW_IDX_compile_unit: 0x00164; BOLT-NEXT: DW_IDX_die_offset: 0x00000028165; BOLT-NEXT: DW_IDX_parent: <parent not indexed>166; BOLT-NEXT: }167; BOLT-NEXT: }168; BOLT-NEXT: ]169; BOLT-NEXT: Bucket 8 [170; BOLT-NEXT: Name 8 {171; BOLT-NEXT: Hash: 0xB888030172; BOLT-NEXT: String: {{.+}} "int"173; BOLT-NEXT: Entry @ {{.+}} {174; BOLT-NEXT: Abbrev: [[ABBREV4]]175; BOLT-NEXT: Tag: DW_TAG_base_type176; BOLT-NEXT: DW_IDX_compile_unit: 0x01177; BOLT-NEXT: DW_IDX_die_offset: 0x00000033178; BOLT-NEXT: DW_IDX_parent: <parent not indexed>179; BOLT-NEXT: }180; BOLT-NEXT: Entry @ 0x{{.+}} {181; BOLT-NEXT: Abbrev: [[ABBREV4]]182; BOLT-NEXT: Tag: DW_TAG_base_type183; BOLT-NEXT: DW_IDX_compile_unit: 0x00184; BOLT-NEXT: DW_IDX_die_offset: 0x0000007f185; BOLT-NEXT: DW_IDX_parent: <parent not indexed>186; BOLT-NEXT: }187; BOLT-NEXT: }188; BOLT-NEXT: ]189; BOLT-NEXT: Bucket 9 [190; BOLT-NEXT: Name 9 {191; BOLT-NEXT: Hash: 0xB887389192; BOLT-NEXT: String: {{.+}} "foo"193; BOLT-NEXT: Entry @ 0x14b {194; BOLT-NEXT: Abbrev: [[ABBREV1]]195; BOLT-NEXT: Tag: DW_TAG_subprogram196; BOLT-NEXT: DW_IDX_compile_unit: 0x01197; BOLT-NEXT: DW_IDX_die_offset: 0x0000005e198; BOLT-NEXT: DW_IDX_parent: <parent not indexed>199; BOLT-NEXT: }200; BOLT-NEXT: }201; BOLT-NEXT: Name 10 {202; BOLT-NEXT: Hash: 0x7C952063203; BOLT-NEXT: String: {{.+}} "char"204; BOLT-NEXT: Entry @ {{.+}} {205; BOLT-NEXT: Abbrev: [[ABBREV4]]206; BOLT-NEXT: Tag: DW_TAG_base_type207; BOLT-NEXT: DW_IDX_compile_unit: 0x00208; BOLT-NEXT: DW_IDX_die_offset: 0x00000092209; BOLT-NEXT: DW_IDX_parent: <parent not indexed>210; BOLT-NEXT: }211; BOLT-NEXT: }212; BOLT-NEXT: ]213; BOLT-NEXT: }214