1# REQUIRES: system-linux 2 3# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-types-backward-forward-cross-reference-main.s -o %tmain.o 4# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-types-backward-forward-cross-reference-helper.s -o %thelper.o 5# RUN: %clang %cflags %tmain.o %thelper.o -o %t.exe 6# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections --debug-thread-count=4 --cu-processing-batch-size=4 7# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt | FileCheck --check-prefix=POSTCHECK %s 8# RUN: llvm-dwarfdump --show-form --verbose --debug-addr %t.bolt | FileCheck --check-prefix=POSTCHECKADDR %s 9# RUN: llvm-dwarfdump --show-form --verbose --debug-types %t.bolt | FileCheck --check-prefix=POSTCHECKTU %s 10 11## This test checks that BOLT handles correctly backward and forward cross CU references 12## for DWARF5 and DWARF4 with -fdebug-types-section and checks the address table is correct. 13 14# POSTCHECK: version = 0x0005 15# POSTCHECK: DW_TAG_type_unit 16# POSTCHECK: version = 0x0005 17# POSTCHECK: DW_TAG_compile_unit 18# POSTCHECK: DW_TAG_variable [14] 19# POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{[0-9a-f]+}} "Foo2a") 20# POSTCHECK: version = 0x0005 21# POSTCHECK: DW_TAG_compile_unit 22# POSTCHECK: DW_TAG_variable [14] 23# POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{[0-9a-f]+}} "Foo") 24# POSTCHECK: version = 0x0004 25# POSTCHECK: DW_TAG_compile_unit 26# POSTCHECK: DW_TAG_variable [20] 27# POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{[0-9a-f]+}} "Foo4a") 28# POSTCHECK: version = 0x0004 29# POSTCHECK: DW_TAG_compile_unit 30# POSTCHECK: DW_TAG_variable [20] 31# POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x{{[0-9a-f]+}} "Foo3a") 32 33# POSTCHECKADDR: Addrs: [ 34# POSTCHECKADDR-NEXT: 0x0000000000001360 35# POSTCHECKADDR-NEXT: 0x0000000000000000 36# POSTCHECKADDR-NEXT: ] 37# POSTCHECKADDR: Addrs: [ 38# POSTCHECKADDR-NEXT: 0x00000000000013e0 39# POSTCHECKADDR-NEXT: 0x0000000000000000 40# POSTCHECKADDR-NEXT: ] 41 42# POSTCHECKTU: version = 0x0004 43# POSTCHECKTU: DW_TAG_type_unit 44# POSTCHECKTU: DW_TAG_structure_type 45# POSTCHECKTU: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-f]+}}] = "Foo3a") 46# POSTCHECKTU: version = 0x0004 47# POSTCHECKTU: DW_TAG_type_unit 48# POSTCHECKTU: DW_TAG_structure_type 49# POSTCHECKTU: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-f]+}}] = "Foo4") 50# POSTCHECKTU: version = 0x0004 51# POSTCHECKTU: DW_TAG_type_unit 52# POSTCHECKTU: DW_TAG_structure_type 53# POSTCHECKTU: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-f]+}}] = "Foo4a") 54# POSTCHECKTU: version = 0x0004 55# POSTCHECKTU: DW_TAG_type_unit 56# POSTCHECKTU: DW_TAG_structure_type 57# POSTCHECKTU: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-f]+}}] = "Foo5") 58