xref: /llvm-project/llvm/test/tools/dsymutil/X86/dwarf5-addrx.test (revision f1fdfe6888f93b9f6dfb4689e1f3206de584ff5b)
17a64e636SAlexey Lapshin## Test that DWARF5 DW_FORM_addrx is correctly recognized
21a50207fSAlexey Lapshin## and converted into the DW_FORM_addr or just preserved
31a50207fSAlexey Lapshin## in case --update.
47a64e636SAlexey Lapshin
57a64e636SAlexey Lapshin## $ cat dwarf5-addrx.c
67a64e636SAlexey Lapshin## __attribute__ ((optnone)) int foo1 ( ) {
77a64e636SAlexey Lapshin##   volatile int a = 0x1; return a;
87a64e636SAlexey Lapshin## }
97a64e636SAlexey Lapshin##
107a64e636SAlexey Lapshin## __attribute__ ((optnone)) int foo2 ( ) {
117a64e636SAlexey Lapshin##   volatile int a = 0x2; return a;
127a64e636SAlexey Lapshin## }
137a64e636SAlexey Lapshin##
147a64e636SAlexey Lapshin## __attribute__ ((optnone)) int foo3 ( ) {
157a64e636SAlexey Lapshin##   volatile int a = 0x3; return a;
167a64e636SAlexey Lapshin## }
177a64e636SAlexey Lapshin##
187a64e636SAlexey Lapshin## __attribute__ ((optnone)) int foo4 ( ) {
197a64e636SAlexey Lapshin##   volatile int a = 0x4; return a;
207a64e636SAlexey Lapshin## }
217a64e636SAlexey Lapshin##
227a64e636SAlexey Lapshin## __attribute__ ((optnone)) int foo5 ( ) {
237a64e636SAlexey Lapshin##   volatile int a = 0x5; return a;
247a64e636SAlexey Lapshin## }
257a64e636SAlexey Lapshin##
267a64e636SAlexey Lapshin## __attribute__ ((optnone)) int foo6 ( ) {
277a64e636SAlexey Lapshin##   volatile int a = 0x6; return a;
287a64e636SAlexey Lapshin## }
297a64e636SAlexey Lapshin##
307a64e636SAlexey Lapshin## __attribute__ ((optnone)) int foo7 ( ) {
317a64e636SAlexey Lapshin##   volatile int a = 0x7; return a;
327a64e636SAlexey Lapshin## }
337a64e636SAlexey Lapshin##
347a64e636SAlexey Lapshin## __attribute__ ((optnone)) int foo8 ( ) {
357a64e636SAlexey Lapshin##   volatile int a = 0x8; return a;
367a64e636SAlexey Lapshin## }
377a64e636SAlexey Lapshin##
387a64e636SAlexey Lapshin## int main ( void ) {
397a64e636SAlexey Lapshin##   return foo1()+foo2()+foo3()+foo4()+foo5()+foo6()+foo7()+foo8();
407a64e636SAlexey Lapshin## }
417a64e636SAlexey Lapshin##
427a64e636SAlexey Lapshin## $ clang -gdwarf-5 dwarf5-addrx.c -c -o dwarf5-addrx.o
437a64e636SAlexey Lapshin## $ clang dwarf5-addrx.o -o dwarf5-addrx.out
447a64e636SAlexey Lapshin
457a64e636SAlexey LapshinRUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5-addrx.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty
467a64e636SAlexey LapshinRUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s
477a64e636SAlexey Lapshin
487a64e636SAlexey LapshinRUN: llvm-dwarfdump --verbose %t.dSYM | FileCheck %s --check-prefix DWARF
491a50207fSAlexey Lapshin
501a50207fSAlexey LapshinRUN: dsymutil --update -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5-addrx.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty
511a50207fSAlexey LapshinRUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s
521a50207fSAlexey Lapshin
531a50207fSAlexey LapshinRUN: llvm-dwarfdump --verbose %t.dSYM | FileCheck %s --check-prefix UPDATE-DWARF
541a50207fSAlexey Lapshin
55*f1fdfe68SAlexey LapshinRUN: dsymutil --linker parallel -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5-addrx.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty
565f2a7fa6SAlexey LapshinRUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s
575f2a7fa6SAlexey Lapshin
585f2a7fa6SAlexey LapshinRUN: llvm-dwarfdump --verbose %t.dSYM | FileCheck %s --check-prefix DWARF
595f2a7fa6SAlexey Lapshin
60*f1fdfe68SAlexey LapshinRUN: dsymutil --linker parallel --update -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5-addrx.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty
615f2a7fa6SAlexey LapshinRUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s
625f2a7fa6SAlexey Lapshin
635f2a7fa6SAlexey LapshinRUN: llvm-dwarfdump --verbose %t.dSYM | FileCheck %s --check-prefix UPDATE-DWARF
645f2a7fa6SAlexey Lapshin
655f2a7fa6SAlexey Lapshin
661a50207fSAlexey LapshinCHECK-NOT: error:
671a50207fSAlexey Lapshin
687a64e636SAlexey LapshinDWARF: DW_TAG_compile_unit
6953d40b97SShubham Sandeep RastogiDWARF:   DW_AT_name [DW_FORM_strx]  {{.*}}     "dwarf5-addrx.c"
70fe48801fSShubham Sandeep RastogiDWARF:   DW_AT_low_pc [DW_FORM_addrx]      (indexed (00000000) address = 0x0000000100000eb0)
717a64e636SAlexey LapshinDWARF:   DW_AT_high_pc [DW_FORM_data4]   (0x00000103)
72fe48801fSShubham Sandeep RastogiDWARF:   DW_AT_addr_base [DW_FORM_sec_offset]      (0x00000008)
737a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
74fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x0000000100000eb0)
757a64e636SAlexey LapshinDWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
7653d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo1"
777a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
78fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000001) address = 0x0000000100000ec0)
797a64e636SAlexey LapshinDWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
8053d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo2"
817a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
82fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000002) address = 0x0000000100000ed0)
837a64e636SAlexey LapshinDWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
8453d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo3"
857a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
86fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000003) address = 0x0000000100000ee0)
877a64e636SAlexey LapshinDWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
8853d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo4"
897a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
90fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000004) address = 0x0000000100000ef0)
917a64e636SAlexey LapshinDWARF:     DW_AT_high_pc  [DW_FORM_data4]  (0x00000010)
9253d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo5"
937a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
94fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000005) address = 0x0000000100000f00)
957a64e636SAlexey LapshinDWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
9653d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo6"
977a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
98fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000006) address = 0x0000000100000f10)
997a64e636SAlexey LapshinDWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
10053d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo7"
1017a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
102fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000007) address = 0x0000000100000f20)
1037a64e636SAlexey LapshinDWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
10453d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo8"
1057a64e636SAlexey LapshinDWARF:   DW_TAG_subprogram
106fe48801fSShubham Sandeep RastogiDWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000008) address = 0x0000000100000f30)
1077a64e636SAlexey LapshinDWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000083)
10853d40b97SShubham Sandeep RastogiDWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "main"
1091a50207fSAlexey Lapshin
1101a50207fSAlexey LapshinUPDATE-DWARF: DW_TAG_compile_unit
11153d40b97SShubham Sandeep RastogiUPDATE-DWARF:   DW_AT_name [DW_FORM_strx]  {{.*}}     "dwarf5-addrx.c"
1121a50207fSAlexey LapshinUPDATE-DWARF:   DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000000) address = 0x0000000000000000)
1131a50207fSAlexey LapshinUPDATE-DWARF:   DW_AT_high_pc [DW_FORM_data4]   (0x00000103)
1141a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1151a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc [DW_FORM_addrx] (indexed (00000000) address = 0x0000000000000000)
1161a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
11753d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo1"
1181a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1191a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) address = 0x0000000000000010)
1201a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
12153d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo2"
1221a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1231a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000002) address = 0x0000000000000020)
1241a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
12553d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo3"
1261a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1271a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000003) address = 0x0000000000000030)
1281a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
12953d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo4"
1301a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1311a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000004) address = 0x0000000000000040)
1321a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc  [DW_FORM_data4]  (0x00000010)
13353d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo5"
1341a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1351a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000005) address = 0x0000000000000050)
1361a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
13753d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo6"
1381a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1391a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000006) address = 0x0000000000000060)
1401a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
14153d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo7"
1421a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1431a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000007) address = 0x0000000000000070)
1441a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
14553d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo8"
1461a50207fSAlexey LapshinUPDATE-DWARF:   DW_TAG_subprogram
1471a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000008) address = 0x0000000000000080)
1481a50207fSAlexey LapshinUPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000083)
14953d40b97SShubham Sandeep RastogiUPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "main"
1501a50207fSAlexey LapshinUPDATE-DWARF:  .debug_addr contents:
1511a50207fSAlexey LapshinUPDATE-DWARF:  0x00000000: Address table header: length = 0x0000004c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
1521a50207fSAlexey LapshinUPDATE-DWARF: Addrs: [
1531a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000000
1541a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000010
1551a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000020
1561a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000030
1571a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000040
1581a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000050
1591a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000060
1601a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000070
1611a50207fSAlexey LapshinUPDATE-DWARF: 0x0000000000000080
1621a50207fSAlexey LapshinUPDATE-DWARF: ]
163