Author: Jonas Devlieghere
Date: 2022-07-27T11:48:35-07:00
New Revision: a8c3d9815e0443bacf5315536ad356e4acb184f2

URL: 
https://github.com/llvm/llvm-project/commit/a8c3d9815e0443bacf5315536ad356e4acb184f2
DIFF: 
https://github.com/llvm/llvm-project/commit/a8c3d9815e0443bacf5315536ad356e4acb184f2.diff

LOG: [DebugInfo] Teach LLVM and LLDB about ptrauth in DWARF

Teach libDebugInfo (llvm-dwarfdump) and lldb about DWARF tags and
attributes for pointer authentication. These values have been emitted by
Apple clang for several releases. Although upstream LLVM doesn't emit
these values yet, we hope to upstream that part sometime soon.

Differential revision: https://reviews.llvm.org/D130215

Added: 
    llvm/test/tools/llvm-dwarfdump/AArch64/ptrauth.s

Modified: 
    lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
    llvm/include/llvm/BinaryFormat/Dwarf.def
    llvm/lib/DebugInfo/DWARF/DWARFTypePrinter.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp 
b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
index 06cdd877f7dcd..e1d0efa844c34 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
@@ -320,6 +320,18 @@ void DWARFDIE::AppendTypeName(Stream &s) const {
   case DW_TAG_volatile_type:
     s.PutCString("volatile ");
     break;
+  case DW_TAG_LLVM_ptrauth_type: {
+    unsigned key = GetAttributeValueAsUnsigned(DW_AT_LLVM_ptrauth_key, 0);
+    bool isAddressDiscriminated = GetAttributeValueAsUnsigned(
+        DW_AT_LLVM_ptrauth_address_discriminated, 0);
+    unsigned extraDiscriminator =
+        GetAttributeValueAsUnsigned(DW_AT_LLVM_ptrauth_extra_discriminator, 0);
+    bool isaPointer =
+        GetAttributeValueAsUnsigned(DW_AT_LLVM_ptrauth_isa_pointer, 0);
+    s.Printf("__ptrauth(%d, %d, 0x0%x, %d)", key, isAddressDiscriminated,
+             extraDiscriminator, isaPointer);
+    break;
+  }
   default:
     return;
   }

diff  --git a/llvm/include/llvm/BinaryFormat/Dwarf.def 
b/llvm/include/llvm/BinaryFormat/Dwarf.def
index 76e51b3157d3f..ef328ccde09b3 100644
--- a/llvm/include/llvm/BinaryFormat/Dwarf.def
+++ b/llvm/include/llvm/BinaryFormat/Dwarf.def
@@ -241,6 +241,9 @@ HANDLE_DW_TAG(0x420c, SUN_f90_interface, 0, SUN, 
DW_KIND_NONE)
 HANDLE_DW_TAG(0x420d, SUN_fortran_vax_structure, 0, SUN, DW_KIND_NONE)
 HANDLE_DW_TAG(0x42ff, SUN_hi, 0, SUN, DW_KIND_NONE)
 
+// LLVM
+HANDLE_DW_TAG(0x4300, LLVM_ptrauth_type, 0, LLVM, DW_KIND_NONE)
+
 // DSP-C/Starcore __circ, _rev
 HANDLE_DW_TAG(0x5101, ALTIUM_circ_type, 0, ALTIUM, DW_KIND_NONE)
 HANDLE_DW_TAG(0x5102, ALTIUM_mwa_circ_type, 0, ALTIUM, DW_KIND_NONE)
@@ -597,8 +600,12 @@ HANDLE_DW_AT(0x3e00, LLVM_include_path, 0, LLVM)
 HANDLE_DW_AT(0x3e01, LLVM_config_macros, 0, LLVM)
 HANDLE_DW_AT(0x3e02, LLVM_sysroot, 0, LLVM)
 HANDLE_DW_AT(0x3e03, LLVM_tag_offset, 0, LLVM)
-// The missing numbers here are reserved for ptrauth support.
+HANDLE_DW_AT(0x3e04, LLVM_ptrauth_key, 0, LLVM)
+HANDLE_DW_AT(0x3e05, LLVM_ptrauth_address_discriminated, 0, LLVM)
+HANDLE_DW_AT(0x3e06, LLVM_ptrauth_extra_discriminator, 0, LLVM)
 HANDLE_DW_AT(0x3e07, LLVM_apinotes, 0, APPLE)
+HANDLE_DW_AT(0x3e08, LLVM_ptrauth_isa_pointer, 0, LLVM)
+HANDLE_DW_AT(0x3e09, LLVM_ptrauth_authenticates_null_values, 0, LLVM)
 
 // Apple extensions.
 

diff  --git a/llvm/lib/DebugInfo/DWARF/DWARFTypePrinter.cpp 
b/llvm/lib/DebugInfo/DWARF/DWARFTypePrinter.cpp
index 86cc07b0d0f29..83711552ebd95 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFTypePrinter.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFTypePrinter.cpp
@@ -143,6 +143,9 @@ DWARFTypePrinter::appendUnqualifiedNameBefore(DWARFDie D,
     Word = false;
     break;
   }
+  case DW_TAG_LLVM_ptrauth_type:
+    appendQualifiedNameBefore(Inner());
+    break;
   case DW_TAG_const_type:
   case DW_TAG_volatile_type:
     appendConstVolatileQualifierBefore(D);
@@ -237,6 +240,35 @@ void DWARFTypePrinter::appendUnqualifiedNameAfter(
                                /*SkipFirstParamIfArtificial=*/D.getTag() ==
                                    DW_TAG_ptr_to_member_type);
     break;
+  }
+  case DW_TAG_LLVM_ptrauth_type: {
+    auto getValOrNull = [&](dwarf::Attribute Attr) -> uint64_t {
+      if (auto Form = D.find(Attr))
+        return *Form->getAsUnsignedConstant();
+      return 0;
+    };
+    SmallVector<const char *, 2> optionsVec;
+    if (getValOrNull(DW_AT_LLVM_ptrauth_isa_pointer))
+      optionsVec.push_back("isa-pointer");
+    if (getValOrNull(DW_AT_LLVM_ptrauth_authenticates_null_values))
+      optionsVec.push_back("authenticates-null-values");
+    std::string options;
+    for (auto option : optionsVec) {
+      if (options.size())
+        options += ",";
+      options += option;
+    }
+    if (options.size())
+      options = ", \"" + options + "\"";
+    std::string PtrauthString;
+    llvm::raw_string_ostream PtrauthStream(PtrauthString);
+    PtrauthStream
+        << "__ptrauth(" << getValOrNull(DW_AT_LLVM_ptrauth_key) << ", "
+        << getValOrNull(DW_AT_LLVM_ptrauth_address_discriminated) << ", 0x0"
+        << utohexstr(getValOrNull(DW_AT_LLVM_ptrauth_extra_discriminator), 
true)
+        << options << ")";
+    OS << PtrauthStream.str();
+    break;
   }
     /*
   case DW_TAG_structure_type:

diff  --git a/llvm/test/tools/llvm-dwarfdump/AArch64/ptrauth.s 
b/llvm/test/tools/llvm-dwarfdump/AArch64/ptrauth.s
new file mode 100644
index 0000000000000..4d93528557cb9
--- /dev/null
+++ b/llvm/test/tools/llvm-dwarfdump/AArch64/ptrauth.s
@@ -0,0 +1,310 @@
+# RUN: llvm-mc %s -filetype obj -triple arm64-apple-darwin -o - \
+# RUN: | llvm-dwarfdump --debug-info - \
+# RUN: | FileCheck %s
+
+# 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:


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to