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