xref: /llvm-project/bolt/test/X86/dwarf5-dwarf4-types-backward-forward-cross-reference.test (revision 6aad62cf5b7f91f4b02266cf72469e2c8e28dbef)
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