151 lines · plain
1; RUN: rm -rf %t2; RUN: mkdir %t3; RUN: cd %t4; 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.o6; RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-df-types-debug-names-helper.s \7; RUN: -split-dwarf-file=helper.dwo -o helper.o8; RUN: %clang %cflags -gdwarf-5 -gsplit-dwarf=split main.o helper.o -o main.exe9; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections --debug-thread-count=4 --cu-processing-batch-size=410; RUN: llvm-dwarfdump --debug-info -r 0 main.exe.bolt > log.txt11; RUN: llvm-dwarfdump --debug-info -r 0 main.dwo.dwo >> log.txt12; RUN: llvm-dwarfdump --debug-info -r 0 helper.dwo.dwo >> log.txt13; RUN: llvm-dwarfdump --debug-str-offsets main.dwo.dwo >> log.txt14; RUN: llvm-dwarfdump --debug-str-offsets helper.dwo.dwo >> log.txt15; RUN: cat log.txt | FileCheck -check-prefix=BOLT %s16 17;; Tests that BOLT correctly updates DW_AT_dwo_name for TU Untis.18 19; BOLT: DW_TAG_skeleton_unit20; BOLT: DW_AT_comp_dir (".")21; BOLT: DW_AT_dwo_name ("main.dwo.dwo")22; BOLT: DW_TAG_skeleton_unit23; BOLT: DW_AT_comp_dir (".")24; BOLT: DW_AT_dwo_name ("helper.dwo.dwo")25; BOLT: DW_TAG_type_unit26; BOLT: DW_AT_comp_dir (".")27; BOLT: DW_AT_dwo_name ("main.dwo.dwo")28; BOLT: DW_TAG_type_unit29; BOLT: DW_AT_comp_dir (".")30; BOLT: DW_AT_dwo_name ("main.dwo.dwo")31; BOLT: DW_TAG_type_unit32; BOLT: DW_AT_comp_dir (".")33; BOLT: DW_AT_dwo_name ("helper.dwo.dwo")34; BOLT: DW_TAG_type_unit35; BOLT: DW_AT_comp_dir (".")36; BOLT: DW_AT_dwo_name ("helper.dwo.dwo")37; BOLT: .debug_str_offsets.dwo contents:38; BOLT-NEXT: 0x00000000: Contribution size = 68, Format = DWARF32, Version = 539; BOLT-NEXT: "main"40; BOLT-NEXT: "int"41; BOLT-NEXT: "argc"42; BOLT-NEXT: "argv"43; BOLT-NEXT: "char"44; BOLT-NEXT: "f2"45; BOLT-NEXT: "."46; BOLT-NEXT: "main.dwo.dwo"47; BOLT-NEXT: "c1"48; BOLT-NEXT: "Foo2"49; BOLT-NEXT: "f3"50; BOLT-NEXT: "c2"51; BOLT-NEXT: "c3"52; BOLT-NEXT: "Foo2a"53; BOLT-NEXT: "clang version 18.0.0git (git@github.com:ayermolo/llvm-project.git db35fa8fc524127079662802c4735dbf397f86d0)"54; BOLT-NEXT: "main.cpp"55; BOLT-NEXT: helper.dwo.dwo: file format elf64-x86-6456 57; BOLT: .debug_str_offsets.dwo contents:58; BOLT-NEXT: 0x00000000: Contribution size = 68, Format = DWARF32, Version = 559; BOLT-NEXT: "fooint"60; BOLT-NEXT: "int"61; BOLT-NEXT: "_Z3foov"62; BOLT-NEXT: "foo"63; BOLT-NEXT: "fint"64; BOLT-NEXT: "."65; BOLT-NEXT: "helper.dwo.dwo"66; BOLT-NEXT: "c1"67; BOLT-NEXT: "c2"68; BOLT-NEXT: "Foo2Int"69; BOLT-NEXT: "f"70; BOLT-NEXT: "char"71; BOLT-NEXT: "c3"72; BOLT-NEXT: "Foo2a"73; BOLT-NEXT: "clang version 18.0.0git (git@github.com:ayermolo/llvm-project.git db35fa8fc524127079662802c4735dbf397f86d0)"74; BOLT-NEXT: "helper.cpp"75 76;; Tests that BOLT correctly handles updating DW_AT_comp_dir/DW_AT_dwo_name when outptut directory is specified.77 78; RUN: mkdir DWOOut79; RUN: rm main.exe.bolt80; RUN: llvm-bolt main.exe -o main.exe.bolt --update-debug-sections --dwarf-output-path=%t/DWOOut81; RUN: cd DWOOut82; RUN: llvm-dwarfdump --debug-info -r 0 ../main.exe.bolt > log.txt83; RUN: llvm-dwarfdump --debug-info -r 0 main.dwo0.dwo >> log.txt84; RUN: llvm-dwarfdump --debug-info -r 0 helper.dwo0.dwo >> log.txt85; RUN: llvm-dwarfdump --debug-str-offsets main.dwo0.dwo >> log.txt86; RUN: llvm-dwarfdump --debug-str-offsets helper.dwo0.dwo >> log.txt87; RUN: cat log.txt | FileCheck -check-prefix=BOLT-PATH %s88 89; BOLT-PATH: DW_TAG_skeleton_unit90; BOLT-PATH: DW_AT_comp_dir ("91; BOLT-PATH-SAME: dwarf5-df-types-modify-dwo-name.test.tmp/DWOOut92; BOLT-PATH: DW_AT_dwo_name ("main.dwo0.dwo")93; BOLT-PATH: DW_TAG_skeleton_unit94; BOLT-PATH: DW_AT_comp_dir ("95; BOLT-PATH-SAME: dwarf5-df-types-modify-dwo-name.test.tmp/DWOOut96; BOLT-PATH: DW_AT_dwo_name ("helper.dwo0.dwo")97; BOLT-PATH: DW_TAG_type_unit98; BOLT-PATH: DW_AT_comp_dir ("99; BOLT-PATH-SAME: dwarf5-df-types-modify-dwo-name.test.tmp/DWOOut100; BOLT-PATH: DW_AT_dwo_name ("main.dwo0.dwo")101; BOLT-PATH: DW_TAG_type_unit102; BOLT-PATH: DW_AT_comp_dir ("103; BOLT-PATH-SAME: dwarf5-df-types-modify-dwo-name.test.tmp/DWOOut104; BOLT-PATH: DW_AT_dwo_name ("main.dwo0.dwo")105; BOLT-PATH: DW_TAG_type_unit106; BOLT-PATH: DW_AT_comp_dir ("107; BOLT-PATH-SAME: dwarf5-df-types-modify-dwo-name.test.tmp/DWOOut108; BOLT-PATH: DW_AT_dwo_name ("helper.dwo0.dwo")109; BOLT-PATH: DW_TAG_type_unit110; BOLT-PATH: DW_AT_comp_dir ("111; BOLT-PATH-SAME: dwarf5-df-types-modify-dwo-name.test.tmp/DWOOut112; BOLT-PATH: DW_AT_dwo_name ("helper.dwo0.dwo")113; BOLT-PATH: .debug_str_offsets.dwo contents:114; BOLT-PATH-NEXT: 0x00000000: Contribution size = 68, Format = DWARF32, Version = 5115; BOLT-PATH-NEXT: "main"116; BOLT-PATH-NEXT: "int"117; BOLT-PATH-NEXT: "argc"118; BOLT-PATH-NEXT: "argv"119; BOLT-PATH-NEXT: "char"120; BOLT-PATH-NEXT: "f2"121; BOLT-PATH-NEXT: dwarf5-df-types-modify-dwo-name.test.tmp/DWOOut"122; BOLT-PATH-NEXT: "main.dwo0.dwo"123; BOLT-PATH-NEXT: "c1"124; BOLT-PATH-NEXT: "Foo2"125; BOLT-PATH-NEXT: "f3"126; BOLT-PATH-NEXT: "c2"127; BOLT-PATH-NEXT: "c3"128; BOLT-PATH-NEXT: "Foo2a"129; BOLT-PATH-NEXT: "clang version 18.0.0git (git@github.com:ayermolo/llvm-project.git db35fa8fc524127079662802c4735dbf397f86d0)"130; BOLT-PATH-NEXT: "main.cpp"131; BOLT-PATH-NEXT: helper.dwo0.dwo: file format elf64-x86-64132 133; BOLT-PATH: .debug_str_offsets.dwo contents:134; BOLT-PATH-NEXT: 0x00000000: Contribution size = 68, Format = DWARF32, Version = 5135; BOLT-PATH-NEXT: "fooint"136; BOLT-PATH-NEXT: "int"137; BOLT-PATH-NEXT: "_Z3foov"138; BOLT-PATH-NEXT: "foo"139; BOLT-PATH-NEXT: "fint"140; BOLT-PATH-NEXT: dwarf5-df-types-modify-dwo-name.test.tmp/DWOOut"141; BOLT-PATH-NEXT: "helper.dwo0.dwo"142; BOLT-PATH-NEXT: "c1"143; BOLT-PATH-NEXT: "c2"144; BOLT-PATH-NEXT: "Foo2Int"145; BOLT-PATH-NEXT: "f"146; BOLT-PATH-NEXT: "char"147; BOLT-PATH-NEXT: "c3"148; BOLT-PATH-NEXT: "Foo2a"149; BOLT-PATH-NEXT: "clang version 18.0.0git (git@github.com:ayermolo/llvm-project.git db35fa8fc524127079662802c4735dbf397f86d0)"150; BOLT-PATH-NEXT: "helper.cpp"151