# RUN: llvm-mc %s -filetype obj -triple arm64-apple-darwin -o %t # RUN: llvm-dwarfdump --debug-info %t | FileCheck %s # RUN: llvm-dwarfdump --verify %t # CHECK: 0x0000001e: DW_TAG_variable # CHECK: DW_AT_name ("p1") # CHECK: DW_AT_type (0x00000033 "void *__ptrauth(4, 1, 0x04d2)") # CHECK: 0x00000033: DW_TAG_LLVM_ptrauth_type # CHECK: DW_AT_LLVM_ptrauth_key (0x04) # CHECK: DW_AT_LLVM_ptrauth_address_discriminated (true) # CHECK: DW_AT_LLVM_ptrauth_extra_discriminator (0x04d2) # CHECK: 0x0000003c: DW_TAG_variable # CHECK: DW_AT_name ("p2") # CHECK: DW_AT_type (0x00000047 "void *__ptrauth(4, 1, 0x04d3, "isa-pointer")") # CHECK: 0x00000047: DW_TAG_LLVM_ptrauth_type # CHECK: DW_AT_LLVM_ptrauth_key (0x04) # CHECK: DW_AT_LLVM_ptrauth_address_discriminated (true) # CHECK: DW_AT_LLVM_ptrauth_extra_discriminator (0x04d3) # CHECK: DW_AT_LLVM_ptrauth_isa_pointer (true) # CHECK: 0x0000004f: DW_TAG_variable # CHECK: DW_AT_name ("p3") # CHECK: DW_AT_type (0x0000005a "void *__ptrauth(4, 1, 0x04d4, "authenticates-null-values")") # CHECK: 0x0000005a: DW_TAG_LLVM_ptrauth_type # CHECK: DW_AT_LLVM_ptrauth_key (0x04) # CHECK: DW_AT_LLVM_ptrauth_address_discriminated (true) # CHECK: DW_AT_LLVM_ptrauth_extra_discriminator (0x04d4) # CHECK: DW_AT_LLVM_ptrauth_authenticates_null_values (true) # CHECK: 0x00000062: DW_TAG_variable # CHECK: DW_AT_name ("p4") # CHECK: DW_AT_type (0x0000006d "void *__ptrauth(4, 1, 0x04d5, "isa-pointer,authenticates-null-values")") # CHECK: 0x0000006d: DW_TAG_LLVM_ptrauth_type # CHECK: DW_AT_LLVM_ptrauth_key (0x04) # CHECK: DW_AT_LLVM_ptrauth_address_discriminated (true) # CHECK: DW_AT_LLVM_ptrauth_extra_discriminator (0x04d5) # CHECK: DW_AT_LLVM_ptrauth_isa_pointer (true) # CHECK: DW_AT_LLVM_ptrauth_authenticates_null_values (true) .section __TEXT,__text,regular,pure_instructions .file 1 "/" "/tmp/p.c" .comm _p,8 ; @p .section __DWARF,__debug_abbrev,regular,debug Lsection_abbrev: .byte 1 ; Abbreviation Code .byte 17 ; DW_TAG_compile_unit .byte 1 ; DW_CHILDREN_yes .byte 37 ; DW_AT_producer .byte 14 ; DW_FORM_strp .byte 19 ; DW_AT_language .byte 5 ; DW_FORM_data2 .byte 3 ; DW_AT_name .byte 14 ; DW_FORM_strp .byte 16 ; DW_AT_stmt_list .byte 23 ; DW_FORM_sec_offset .byte 27 ; DW_AT_comp_dir .byte 14 ; DW_FORM_strp .byte 0 ; EOM(1) .byte 0 ; EOM(2) .byte 2 ; Abbreviation Code .byte 52 ; DW_TAG_variable .byte 0 ; DW_CHILDREN_no .byte 3 ; DW_AT_name .byte 14 ; DW_FORM_strp .byte 73 ; DW_AT_type .byte 19 ; DW_FORM_ref4 .byte 63 ; DW_AT_external .byte 25 ; DW_FORM_flag_present .byte 58 ; DW_AT_decl_file .byte 11 ; DW_FORM_data1 .byte 59 ; DW_AT_decl_line .byte 11 ; DW_FORM_data1 .byte 2 ; DW_AT_location .byte 24 ; DW_FORM_exprloc .byte 0 ; EOM(1) .byte 0 ; EOM(2) .byte 3 ; Abbreviation Code .ascii "\200\206\001" ; DW_TAG_LLVM_ptrauth_type .byte 0 ; DW_CHILDREN_no .byte 73 ; DW_AT_type .byte 19 ; DW_FORM_ref4 .ascii "\204|" ; DW_AT_LLVM_ptrauth_key .byte 11 ; DW_FORM_data1 .ascii "\205|" ; DW_AT_LLVM_ptrauth_address_discriminated .byte 25 ; DW_FORM_flag_present .ascii "\206|" ; DW_AT_LLVM_ptrauth_extra_discriminator .byte 5 ; DW_FORM_data2 .byte 0 ; EOM(1) .byte 0 ; EOM(2) .byte 4 ; Abbreviation Code .byte 15 ; DW_TAG_pointer_type .byte 0 ; DW_CHILDREN_no .byte 0 ; EOM(1) .byte 0 ; EOM(2) .byte 5 ; Abbreviation Code .byte 52 ; DW_TAG_variable .byte 0 ; DW_CHILDREN_no .byte 3 ; DW_AT_name .byte 14 ; DW_FORM_strp .byte 73 ; DW_AT_type .byte 19 ; DW_FORM_ref4 .byte 63 ; DW_AT_external .byte 25 ; DW_FORM_flag_present .byte 58 ; DW_AT_decl_file .byte 11 ; DW_FORM_data1 .byte 59 ; DW_AT_decl_line .byte 11 ; DW_FORM_data1 .byte 0 ; EOM(1) .byte 0 ; EOM(2) .byte 6 ; Abbreviation Code .ascii "\200\206\001" ; DW_TAG_LLVM_ptrauth_type .byte 0 ; DW_CHILDREN_no .byte 73 ; DW_AT_type .byte 19 ; DW_FORM_ref4 .ascii "\204|" ; DW_AT_LLVM_ptrauth_key .byte 11 ; DW_FORM_data1 .ascii "\205|" ; DW_AT_LLVM_ptrauth_address_discriminated .byte 25 ; DW_FORM_flag_present .ascii "\206|" ; DW_AT_LLVM_ptrauth_extra_discriminator .byte 5 ; DW_FORM_data2 .ascii "\210|" ; DW_AT_LLVM_ptrauth_isa_pointer .byte 25 ; DW_FORM_flag_present .byte 0 ; EOM(1) .byte 0 ; EOM(2) .byte 7 ; Abbreviation Code .ascii "\200\206\001" ; DW_TAG_LLVM_ptrauth_type .byte 0 ; DW_CHILDREN_no .byte 73 ; DW_AT_type .byte 19 ; DW_FORM_ref4 .ascii "\204|" ; DW_AT_LLVM_ptrauth_key .byte 11 ; DW_FORM_data1 .ascii "\205|" ; DW_AT_LLVM_ptrauth_address_discriminated .byte 25 ; DW_FORM_flag_present .ascii "\206|" ; DW_AT_LLVM_ptrauth_extra_discriminator .byte 5 ; DW_FORM_data2 .ascii "\211|" ; DW_AT_LLVM_ptrauth_authenticates_null_values .byte 25 ; DW_FORM_flag_present .byte 0 ; EOM(1) .byte 0 ; EOM(2) .byte 8 ; Abbreviation Code .ascii "\200\206\001" ; DW_TAG_LLVM_ptrauth_type .byte 0 ; DW_CHILDREN_no .byte 73 ; DW_AT_type .byte 19 ; DW_FORM_ref4 .ascii "\204|" ; DW_AT_LLVM_ptrauth_key .byte 11 ; DW_FORM_data1 .ascii "\205|" ; DW_AT_LLVM_ptrauth_address_discriminated .byte 25 ; DW_FORM_flag_present .ascii "\206|" ; DW_AT_LLVM_ptrauth_extra_discriminator .byte 5 ; DW_FORM_data2 .ascii "\210|" ; DW_AT_LLVM_ptrauth_isa_pointer .byte 25 ; DW_FORM_flag_present .ascii "\211|" ; DW_AT_LLVM_ptrauth_authenticates_null_values .byte 25 ; DW_FORM_flag_present .byte 0 ; EOM(1) .byte 0 ; EOM(2) .byte 0 ; EOM(3) .section __DWARF,__debug_info,regular,debug Lsection_info: Lcu_begin0: .set Lset0, Ldebug_info_end0-Ldebug_info_start0 ; Length of Unit .long Lset0 Ldebug_info_start0: .short 4 ; DWARF version number .set Lset1, Lsection_abbrev-Lsection_abbrev ; Offset Into Abbrev. Section .long Lset1 .byte 8 ; Address Size (in bytes) .byte 1 ; Abbrev [1] 0xb:0x6b DW_TAG_compile_unit .long 0 ; DW_AT_producer .short 12 ; DW_AT_language .long 1 ; DW_AT_name .set Lset2, Lline_table_start0-Lsection_line ; DW_AT_stmt_list .long Lset2 .long 10 ; DW_AT_comp_dir .byte 2 ; Abbrev [2] 0x1e:0x15 DW_TAG_variable .long 12 ; DW_AT_name .long 51 ; DW_AT_type ; DW_AT_external .byte 1 ; DW_AT_decl_file .byte 1 ; DW_AT_decl_line .byte 9 ; DW_AT_location .byte 3 .quad _p .byte 3 ; Abbrev [3] 0x33:0x8 DW_TAG_LLVM_ptrauth_type .long 59 ; DW_AT_type .byte 4 ; DW_AT_LLVM_ptrauth_key ; DW_AT_LLVM_ptrauth_address_discriminated .short 1234 ; DW_AT_LLVM_ptrauth_extra_discriminator .byte 4 ; Abbrev [4] 0x3b:0x1 DW_TAG_pointer_type .byte 5 ; Abbrev [5] 0x3c:0xb DW_TAG_variable .long 15 ; DW_AT_name .long 71 ; DW_AT_type ; DW_AT_external .byte 1 ; DW_AT_decl_file .byte 1 ; DW_AT_decl_line .byte 6 ; Abbrev [6] 0x47:0x8 DW_TAG_LLVM_ptrauth_type .long 59 ; DW_AT_type .byte 4 ; DW_AT_LLVM_ptrauth_key ; DW_AT_LLVM_ptrauth_address_discriminated .short 1235 ; DW_AT_LLVM_ptrauth_extra_discriminator ; DW_AT_LLVM_ptrauth_isa_pointer .byte 5 ; Abbrev [5] 0x4f:0xb DW_TAG_variable .long 18 ; DW_AT_name .long 90 ; DW_AT_type ; DW_AT_external .byte 1 ; DW_AT_decl_file .byte 1 ; DW_AT_decl_line .byte 7 ; Abbrev [7] 0x5a:0x8 DW_TAG_LLVM_ptrauth_type .long 59 ; DW_AT_type .byte 4 ; DW_AT_LLVM_ptrauth_key ; DW_AT_LLVM_ptrauth_address_discriminated .short 1236 ; DW_AT_LLVM_ptrauth_extra_discriminator ; DW_AT_LLVM_ptrauth_authenticates_null_values .byte 5 ; Abbrev [5] 0x62:0xb DW_TAG_variable .long 21 ; DW_AT_name .long 109 ; DW_AT_type ; DW_AT_external .byte 1 ; DW_AT_decl_file .byte 1 ; DW_AT_decl_line .byte 8 ; Abbrev [8] 0x6d:0x8 DW_TAG_LLVM_ptrauth_type .long 59 ; DW_AT_type .byte 4 ; DW_AT_LLVM_ptrauth_key ; DW_AT_LLVM_ptrauth_address_discriminated .short 1237 ; DW_AT_LLVM_ptrauth_extra_discriminator ; DW_AT_LLVM_ptrauth_isa_pointer ; DW_AT_LLVM_ptrauth_authenticates_null_values .byte 0 ; End Of Children Mark Ldebug_info_end0: .section __DWARF,__debug_str,regular,debug Linfo_string: .byte 0 ; string offset=0 .asciz "/tmp/p.c" ; string offset=1 .asciz "/" ; string offset=10 .asciz "p1" ; string offset=12 .asciz "p2" ; string offset=15 .asciz "p3" ; string offset=18 .asciz "p4" ; string offset=21 .section __DWARF,__apple_names,regular,debug Lnames_begin: .long 1212240712 ; Header Magic .short 1 ; Header Version .short 0 ; Header Hash Function .long 1 ; Header Bucket Count .long 1 ; Header Hash Count .long 12 ; Header Data Length .long 0 ; HeaderData Die Offset Base .long 1 ; HeaderData Atom Count .short 1 ; DW_ATOM_die_offset .short 6 ; DW_FORM_data4 .long 0 ; Bucket 0 .long 5863654 ; Hash in Bucket 0 .set Lset3, LNames0-Lnames_begin ; Offset in Bucket 0 .long Lset3 LNames0: .long 12 ; p1 .long 1 ; Num DIEs .long 30 .long 0 .section __DWARF,__apple_objc,regular,debug Lobjc_begin: .long 1212240712 ; Header Magic .short 1 ; Header Version .short 0 ; Header Hash Function .long 1 ; Header Bucket Count .long 0 ; Header Hash Count .long 12 ; Header Data Length .long 0 ; HeaderData Die Offset Base .long 1 ; HeaderData Atom Count .short 1 ; DW_ATOM_die_offset .short 6 ; DW_FORM_data4 .long -1 ; Bucket 0 .section __DWARF,__apple_namespac,regular,debug Lnamespac_begin: .long 1212240712 ; Header Magic .short 1 ; Header Version .short 0 ; Header Hash Function .long 1 ; Header Bucket Count .long 0 ; Header Hash Count .long 12 ; Header Data Length .long 0 ; HeaderData Die Offset Base .long 1 ; HeaderData Atom Count .short 1 ; DW_ATOM_die_offset .short 6 ; DW_FORM_data4 .long -1 ; Bucket 0 .section __DWARF,__apple_types,regular,debug Ltypes_begin: .long 1212240712 ; Header Magic .short 1 ; Header Version .short 0 ; Header Hash Function .long 1 ; Header Bucket Count .long 0 ; Header Hash Count .long 20 ; Header Data Length .long 0 ; HeaderData Die Offset Base .long 3 ; HeaderData Atom Count .short 1 ; DW_ATOM_die_offset .short 6 ; DW_FORM_data4 .short 3 ; DW_ATOM_die_tag .short 5 ; DW_FORM_data2 .short 4 ; DW_ATOM_type_flags .short 11 ; DW_FORM_data1 .long -1 ; Bucket 0 .subsections_via_symbols .section __DWARF,__debug_line,regular,debug Lsection_line: Lline_table_start0: