[lld] [llvm] [DWARFVerifier] Verify that DW_AT_LLVM_stmt_sequence is set correctly (PR #152807)

Peter Rong via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 28 15:06:53 PDT 2025


https://github.com/DataCorrupted updated https://github.com/llvm/llvm-project/pull/152807

>From cedce2128dc872a2f1024c9907fd78bdee4b7fe7 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Fri, 8 Aug 2025 15:22:40 -0700
Subject: [PATCH 01/13] [DWARFVerifier] Verify that DW_AT_LLVM_stmt_sequence is
 set correctly

Signed-off-by: Peter Rong <PeterRong at meta.com>
---
 llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp | 46 ++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
index 8ec3f1729b974..7d6a643560643 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
@@ -851,6 +851,52 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
     }
     break;
   }
+  case DW_AT_LLVM_stmt_sequence: {
+    // Make sure the offset in the DW_AT_LLVM_stmt_sequence attribute is valid
+    // and points to a valid sequence start in the line table.
+    auto SectionOffset = AttrValue.Value.getAsSectionOffset();
+    if (!SectionOffset) {
+      ReportError("Invalid DW_AT_LLVM_stmt_sequence encoding",
+                  "DIE has invalid DW_AT_LLVM_stmt_sequence encoding:");
+      break;
+    }
+    if (*SectionOffset >= U->getLineSection().Data.size()) {
+      ReportError(
+          "DW_AT_LLVM_stmt_sequence offset out of bounds",
+          "DW_AT_LLVM_stmt_sequence offset is beyond .debug_line bounds: " +
+              llvm::formatv("{0:x8}", *SectionOffset));
+      break;
+    }
+
+    // Check if the offset points to a valid sequence start
+    const auto *LineTable = DCtx.getLineTableForUnit(U);
+    if (!LineTable) {
+      ReportError("DW_AT_LLVM_stmt_sequence without line table",
+                  "DIE has DW_AT_LLVM_stmt_sequence but compile unit has no "
+                  "line table");
+      break;
+    }
+    bool ValidSequenceOffset = false;
+    // Check if the offset matches any of the sequence start offsets using
+    // binary search
+    auto it = std::lower_bound(LineTable->Sequences.begin(),
+                               LineTable->Sequences.end(), *SectionOffset,
+                               [](const auto &Sequence, const uint64_t Offset) {
+                                 return Sequence.StmtSeqOffset < Offset;
+                               });
+    if (it != LineTable->Sequences.end() &&
+        it->StmtSeqOffset == *SectionOffset) {
+      ValidSequenceOffset = true;
+    }
+
+    if (!ValidSequenceOffset)
+      ReportError(
+          "Invalid DW_AT_LLVM_stmt_sequence offset",
+          "DW_AT_LLVM_stmt_sequence offset " +
+              llvm::formatv("{0:x8}", *SectionOffset) +
+              " does not point to a valid sequence start in the line table");
+    break;
+  }
   default:
     break;
   }

>From e1a4ed7b751e134e8df8361833ae7a7d880a341f Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Mon, 11 Aug 2025 15:15:32 -0700
Subject: [PATCH 02/13] add t est

Signed-off-by: Peter Rong <PeterRong at meta.com>
---
 .../tools/llvm-dwarfdump/verify_stmt_seq.yaml | 1617 +++++++++++++++++
 1 file changed, 1617 insertions(+)
 create mode 100644 llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml

diff --git a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
new file mode 100644
index 0000000000000..1873eea9d49f3
--- /dev/null
+++ b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
@@ -0,0 +1,1617 @@
+# Object file copied from llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test
+# Then I manually tempered with some of the value of the attribute
+# I hope there are easier ways to construct tests like this.
+
+# RUN: yaml2obj %s -o verify_stmt_seq.o
+# RUN: not llvm-dwarfdump -verify -debug-info verify_stmt_seq.o | FileCheck %s --check-prefix=CHECK_INVALID
+
+# Line 1326 0XAB
+# CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset 0x000000ab does not point to a valid sequence start in the line table
+# Line 1372 0xEEEEE7
+# CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset is beyond .debug_line bounds: 0x00eeeee7
+
+# CHECK_INVALID: error: Aggregated error counts:
+# CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset out of bounds occurred 1 time(s).
+# CHECK_INVALID: error: Invalid DW_AT_LLVM_stmt_sequence offset occurred 1 time(s).
+
+# CHECK_INVALID-NOT: error:
+--- !mach-o
+IsLittleEndian: true
+FileHeader:
+  magic:           0xFEEDFACF
+  cputype:         0x100000C
+  cpusubtype:      0x0
+  filetype:        0x1
+  ncmds:           5
+  sizeofcmds:      1176
+  flags:           0x2000
+  reserved:        0x0
+LoadCommands:
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         1032
+    segname:         ''
+    vmaddr:          0
+    vmsize:          3125
+    fileoff:         1208
+    filesize:        3125
+    maxprot:         7
+    initprot:        7
+    nsects:          12
+    flags:           0
+    Sections:
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0
+        size:            148
+        offset:          0x4B8
+        align:           2
+        reloff:          0x10F0
+        nreloc:          8
+        flags:           0x80000400
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         00040011C0035FD600100011C0035FD600580051C0035FD600100011C0035FD600580051C0035FD6FFC300D1F44F01A9FD7B02A9FD8300916000805200000094F30300AA20058052000000941400130B6001805200000094F30300AA40058052000000947302000B0100009021000091E03F0091000000948002130BFD7B42A9F44F41A9FFC30091C0035FD600000014C0035FD6
+        relocations:
+          - address:         0x8C
+            symbolnum:       4
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x74
+            symbolnum:       3
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x6C
+            symbolnum:       1
+            pcrel:           false
+            length:          2
+            extern:          true
+            type:            4
+            scattered:       false
+            value:           0
+          - address:         0x68
+            symbolnum:       1
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            3
+            scattered:       false
+            value:           0
+          - address:         0x60
+            symbolnum:       5
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x54
+            symbolnum:       6
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x48
+            symbolnum:       9
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x3C
+            symbolnum:       7
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+      - sectname:        __cstring
+        segname:         __TEXT
+        addr:            0x94
+        size:            5
+        offset:          0x54C
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         '7465737400'
+      - sectname:        __debug_loc
+        segname:         __DWARF
+        addr:            0x99
+        size:            412
+        offset:          0x551
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         08000000000000000C000000000000000100500C0000000000000010000000000000000400A301509F0000000000000000000000000000000008000000000000000C00000000000000030070039F0000000000000000000000000000000010000000000000001400000000000000010050140000000000000018000000000000000400A301509F0000000000000000000000000000000018000000000000001C000000000000000100501C0000000000000020000000000000000400A301509F0000000000000000000000000000000018000000000000001C00000000000000030070039F0000000000000000000000000000000020000000000000002400000000000000010050240000000000000028000000000000000400A301509F00000000000000000000000000000000240000000000000028000000000000000100500000000000000000000000000000000038000000000000004400000000000000030011009F4400000000000000500000000000000001006350000000000000005C0000000000000001006400000000000000000000000000000000
+      - sectname:        __debug_abbrev
+        segname:         __DWARF
+        addr:            0x235
+        size:            372
+        offset:          0x6ED
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+      - sectname:        __debug_info
+        segname:         __DWARF
+        addr:            0x3A9
+        size:            747
+        offset:          0x861
+        align:           0
+        reloff:          0x1130
+        nreloc:          16
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        relocations:
+          - address:         0x2A7
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x28E
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x253
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1F5
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1E1
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1CE
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1BA
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1A7
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x169
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x12D
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xF1
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xC4
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x88
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x5F
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x37
+            symbolnum:       2
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x22
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+      - sectname:        __debug_str
+        segname:         __DWARF
+        addr:            0x694
+        size:            400
+        offset:          0xB4C
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+      - sectname:        __apple_names
+        segname:         __DWARF
+        addr:            0x824
+        size:            288
+        offset:          0xCDC
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000009000000090000000C00000000000000010000000100060000000000FFFFFFFFFFFFFFFF0100000003000000040000000600000007000000080000004A08311CC78E3C8288CB36CF89CB36CFD1125E53522B705390D9F86F6A7F9A7C4908311C8C0000009C000000AC000000BC000000CC000000DC000000EC00000000010000100100000601000001000000F000000000000000D6000000010000005E00000000000000F600000001000000C30000000000000016010000010000002C01000000000000440100000100000052020000000000005C01000001000000A6020000000000002B0100000200000052020000A60200000000000026010000010000006801000000000000E6000000010000008700000000000000
+      - sectname:        __apple_objc
+        segname:         __DWARF
+        addr:            0x944
+        size:            36
+        offset:          0xDFC
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
+      - sectname:        __apple_namespac
+        segname:         __DWARF
+        addr:            0x968
+        size:            36
+        offset:          0xE20
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
+      - sectname:        __apple_types
+        segname:         __DWARF
+        addr:            0x98C
+        size:            195
+        offset:          0xE44
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         48534148010000000500000005000000140000000000000003000000010006000300050004000B000000000002000000FFFFFFFF03000000040000007CA8F05D90D9F86F5B738CDC3080880B6320957C64000000770000008A0000009D000000B0000000380100000100000027020000130000000000002B010000010000000502000013000000000000C20000000100000057000000240000000000007401000001000000DE02000024000000000000BD000000010000005000000024000000000000
+      - sectname:        __debug_frame
+        segname:         __DWARF
+        addr:            0xA50
+        size:            232
+        offset:          0xF08
+        align:           3
+        reloff:          0x11B0
+        nreloc:          8
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         14000000FFFFFFFF0400080001781E0C1F00000000000000140000000000000000000000000000000800000000000000140000000000000008000000000000000800000000000000140000000000000010000000000000000800000000000000140000000000000018000000000000000800000000000000140000000000000020000000000000000800000000000000240000000000000028000000000000006400000000000000500C1D109E019D02930394040000000014000000000000008C000000000000000400000000000000140000000000000090000000000000000400000000000000
+        relocations:
+          - address:         0xD8
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xC0
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x98
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x80
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x68
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x50
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x38
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x20
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+      - sectname:        __debug_line
+        segname:         __DWARF
+        addr:            0xB38
+        size:            253
+        offset:          0xFF0
+        align:           0
+        reloff:          0x11F0
+        nreloc:          8
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        relocations:
+          - address:         0xED
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xD9
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xAA
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x96
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x7E
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x66
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x50
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x3A
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+  - cmd:             LC_BUILD_VERSION
+    cmdsize:         24
+    platform:        1
+    minos:           720896
+    sdk:             0
+    ntools:          0
+  - cmd:             LC_LINKER_OPTIMIZATION_HINT
+    cmdsize:         16
+    dataoff:         4656
+    datasize:        8
+  - cmd:             LC_SYMTAB
+    cmdsize:         24
+    symoff:          4664
+    nsyms:           11
+    stroff:          4840
+    strsize:         168
+  - cmd:             LC_DYSYMTAB
+    cmdsize:         80
+    ilocalsym:       0
+    nlocalsym:       3
+    iextdefsym:      3
+    nextdefsym:      8
+    iundefsym:       11
+    nundefsym:       0
+    tocoff:          0
+    ntoc:            0
+    modtaboff:       0
+    nmodtab:         0
+    extrefsymoff:    0
+    nextrefsyms:     0
+    indirectsymoff:  0
+    nindirectsyms:   0
+    extreloff:       0
+    nextrel:         0
+    locreloff:       0
+    nlocrel:         0
+LinkEditData:
+  NameList:
+    - n_strx:          155
+      n_type:          0xE
+      n_sect:          1
+      n_desc:          0
+      n_value:         0
+    - n_strx:          1
+      n_type:          0xE
+      n_sect:          2
+      n_desc:          0
+      n_value:         148
+    - n_strx:          149
+      n_type:          0xE
+      n_sect:          2
+      n_desc:          0
+      n_value:         148
+    - n_strx:          39
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          192
+      n_value:         140
+    - n_strx:          14
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          192
+      n_value:         144
+    - n_strx:          132
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         0
+    - n_strx:          115
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         16
+    - n_strx:          81
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         32
+    - n_strx:          98
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         8
+    - n_strx:          64
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         24
+    - n_strx:          8
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         40
+  StringTable:
+    - ''
+    - l_.str
+    - _main
+    - __ZN12length_errorC2EPKc
+    - __ZN12length_errorC1EPKc
+    - _function3_copy2
+    - _function2_copy2
+    - _function3_copy1
+    - _function2_copy1
+    - _function1_copy1
+    - ltmp1
+    - ltmp0
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+DWARF:
+  debug_str:
+    - 'Facebook clang version 19.1.5 (https://git.internal.tfbnw.net/repos/git/rw/osmeta/external/llvm-project b36c9ae1f8f2b39e4aafb9ca4700c608c3036365)'
+    - stmt_seq_macho.cpp
+    - '/'
+    - '/private/tmp/stmt_seq'
+    - char
+    - __ARRAY_SIZE_TYPE__
+    - function1_copy1
+    - function3_copy1
+    - function2_copy1
+    - function3_copy2
+    - function2_copy2
+    - main
+    - length_error
+    - logic_error
+    - _ZN12length_errorC1EPKc
+    - _ZN12length_errorC2EPKc
+    - int
+    - a
+    - b
+    - result
+    - e
+    - sum
+    - this
+    - s
+  debug_abbrev:
+    - ID:              0
+      Table:
+        - Code:            0x1
+          Tag:             DW_TAG_compile_unit
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_producer
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_language
+              Form:            DW_FORM_data2
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_LLVM_sysroot
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_stmt_list
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_comp_dir
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+        - Code:            0x2
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+        - Code:            0x3
+          Tag:             DW_TAG_array_type
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x4
+          Tag:             DW_TAG_subrange_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_count
+              Form:            DW_FORM_data1
+        - Code:            0x5
+          Tag:             DW_TAG_const_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x6
+          Tag:             DW_TAG_base_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_encoding
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+        - Code:            0x7
+          Tag:             DW_TAG_base_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_encoding
+              Form:            DW_FORM_data1
+        - Code:            0x8
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_APPLE_omit_frame_ptr
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0x9
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xA
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xB
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xC
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0xD
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xE
+          Tag:             DW_TAG_call_site
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_call_origin
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_return_pc
+              Form:            DW_FORM_addr
+        - Code:            0xF
+          Tag:             DW_TAG_call_site_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_value
+              Form:            DW_FORM_exprloc
+        - Code:            0x10
+          Tag:             DW_TAG_structure_type
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_calling_convention
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+        - Code:            0x11
+          Tag:             DW_TAG_inheritance
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_data_member_location
+              Form:            DW_FORM_data1
+        - Code:            0x12
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_declaration
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_explicit
+              Form:            DW_FORM_flag_present
+        - Code:            0x13
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_artificial
+              Form:            DW_FORM_flag_present
+        - Code:            0x14
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x15
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_declaration
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0x16
+          Tag:             DW_TAG_pointer_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x17
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_APPLE_omit_frame_ptr
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_object_pointer
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_linkage_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_specification
+              Form:            DW_FORM_ref4
+        - Code:            0x18
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_artificial
+              Form:            DW_FORM_flag_present
+        - Code:            0x19
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x1A
+          Tag:             DW_TAG_call_site
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_call_origin
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_tail_call
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_call_pc
+              Form:            DW_FORM_addr
+  debug_info:
+    - Length:          0x2E7
+      Version:         4
+      AbbrevTableID:   0
+      AbbrOffset:      0x0
+      AddrSize:        8
+      Entries:
+        - AbbrCode:        0x1
+          Values:
+            - Value:           0x0
+            - Value:           0x21
+            - Value:           0x92
+            - Value:           0xA5
+            - Value:           0x0
+            - Value:           0xA7
+            - Value:           0x1
+            - Value:           0x0
+            - Value:           0x94
+        - AbbrCode:        0x2
+          Values:
+            - Value:           0x3F
+            - Value:           0x1
+            - Value:           0x27
+            - Value:           0x9
+              BlockData:       [ 0x3, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+                                 0x0 ]
+        - AbbrCode:        0x3
+          Values:
+            - Value:           0x4B
+        - AbbrCode:        0x4
+          Values:
+            - Value:           0x57
+            - Value:           0x5
+        - AbbrCode:        0x0
+        - AbbrCode:        0x5
+          Values:
+            - Value:           0x50
+        - AbbrCode:        0x6
+          Values:
+            - Value:           0xBD
+            - Value:           0x6
+            - Value:           0x1
+        - AbbrCode:        0x7
+          Values:
+            - Value:           0xC2
+            - Value:           0x8
+            - Value:           0x7
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x0
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x34
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xD6
+            - Value:           0x1
+            - Value:           0x2
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x9
+          Values:
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x2
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x8
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x4A
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xE6
+            - Value:           0x1
+            - Value:           0x6
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x0
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x6
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x39
+            - Value:           0x17A
+            - Value:           0x1
+            - Value:           0x7
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x10
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x60
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xF6
+            - Value:           0x1
+            - Value:           0xB
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x5E
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0xB
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x18
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x78
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0x106
+            - Value:           0x1
+            - Value:           0xF
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x97
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0xF
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0xD0
+            - Value:           0x17A
+            - Value:           0x1
+            - Value:           0x10
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x20
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x90
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0x116
+            - Value:           0x1
+            - Value:           0x14
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0xF5
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x14
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x12E
+            - Value:           0x17C
+            - Value:           0x1
+            - Value:           0x15
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0xC
+          Values:
+            - Value:           0x28
+            - Value:           0x64
+            - Value:           0xA7
+            - Value:           0x1
+              BlockData:       [ 0x6D ]
+            - Value:           0x1
+            - Value:           0x126
+            - Value:           0x1
+            - Value:           0x21
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xD
+          Values:
+            - Value:           0x2
+              BlockData:       [ 0x8F, 0xF ]
+            - Value:           0x183
+            - Value:           0x1
+            - Value:           0x27
+            - Value:           0x205
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x151
+            - Value:           0x185
+            - Value:           0x1
+            - Value:           0x22
+            - Value:           0x2DE
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x12C
+            - Value:           0x40
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x1
+              BlockData:       [ 0x33 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0xF0
+            - Value:           0x4C
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x10, 0x29 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0xC3
+            - Value:           0x58
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x1
+              BlockData:       [ 0x3B ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x5E
+            - Value:           0x64
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x10, 0x2A ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x252
+            - Value:           0x78
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x8F, 0xF ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x10
+          Values:
+            - Value:           0x5
+            - Value:           0x12B
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1D
+        - AbbrCode:        0x11
+          Values:
+            - Value:           0x227
+            - Value:           0x0
+        - AbbrCode:        0x12
+          Values:
+            - Value:           0x12B
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x13
+          Values:
+            - Value:           0x24D
+            - Value:           0x1
+        - AbbrCode:        0x14
+          Values:
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x10
+          Values:
+            - Value:           0x5
+            - Value:           0x138
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x19
+        - AbbrCode:        0x15
+          Values:
+            - Value:           0x138
+            - Value:           0x1
+            - Value:           0x1A
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x13
+          Values:
+            - Value:           0x243
+            - Value:           0x1
+        - AbbrCode:        0x14
+          Values:
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x227
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x4B
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x205
+        - AbbrCode:        0x17
+          Values:
+            - Value:           0x8C
+            - Value:           0x4
+            - Value:           0x1
+            - Value:           0xAB
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x271
+            - Value:           0x1
+            - Value:           0x144
+            - Value:           0x214
+        - AbbrCode:        0x18
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x189
+            - Value:           0x2E5
+            - Value:           0x1
+        - AbbrCode:        0x19
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x18E
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x248
+        - AbbrCode:        0x1A
+          Values:
+            - Value:           0x2A6
+            - Value:           0x1
+            - Value:           0x8C
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x3
+              BlockData:       [ 0xA3, 0x1, 0x50 ]
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x3
+              BlockData:       [ 0xA3, 0x1, 0x51 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x17
+          Values:
+            - Value:           0x90
+            - Value:           0x4
+            - Value:           0x1
+            - Value:           0xEEEEE7
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x2C5
+            - Value:           0x1
+            - Value:           0x15C
+            - Value:           0x214
+        - AbbrCode:        0x18
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x189
+            - Value:           0x2E5
+            - Value:           0x1
+        - AbbrCode:        0x19
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x18E
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x6
+          Values:
+            - Value:           0x174
+            - Value:           0x5
+            - Value:           0x4
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x205
+        - AbbrCode:        0x0
+  debug_line:
+    - Length:          249
+      Version:         4
+      PrologueLength:  42
+      MinInstLength:   1
+      MaxOpsPerInst:   1
+      DefaultIsStmt:   1
+      LineBase:        251
+      LineRange:       14
+      OpcodeBase:      13
+      StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
+      Files:
+        - Name:            stmt_seq_macho.cpp
+          DirIdx:          0
+          ModTime:         0
+          Length:          0
+      Opcodes:
+        - Opcode:          DW_LNS_set_column
+          Data:            10
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            0
+        - Opcode:          0x14
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            3
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            8
+        - Opcode:          0x19
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            16
+        - Opcode:          DW_LNS_advance_line
+          SData:           11
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            24
+        - Opcode:          DW_LNS_advance_line
+          SData:           16
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            20
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            32
+        - Opcode:          DW_LNS_advance_line
+          SData:           20
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          0x4B
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            40
+        - Opcode:          DW_LNS_advance_line
+          SData:           32
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            12
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          0xF4
+          Data:            0
+        - Opcode:          0xBB
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x82
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            12
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4B
+          Data:            0
+        - Opcode:          0xBB
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          0x81
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            18
+        - Opcode:          0x4C
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          0xF1
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_set_epilogue_begin
+          Data:            0
+        - Opcode:          0x4C
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            85
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            140
+        - Opcode:          DW_LNS_advance_line
+          SData:           29
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            86
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            144
+        - Opcode:          DW_LNS_advance_line
+          SData:           29
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_advance_pc
+          Data:            4
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+...

>From c8f2305efad59c54da736fc7fd33857625345981 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Mon, 11 Aug 2025 16:27:02 -0700
Subject: [PATCH 03/13] [DWARF] Fix incorrect offset

Signed-off-by: Peter Rong <PeterRong at meta.com>
---
 .../X86/DW_AT_LLVM_stmt_seq_sec_offset.ll     |   2 +
 .../X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll   | 258 ++++++++++++++++++
 .../tools/dsymutil/ARM/stmt-seq-macho.test    |   2 +
 3 files changed, 262 insertions(+)
 create mode 100644 llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll

diff --git a/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset.ll b/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset.ll
index 58f6495924b90..41ed0acd28c48 100644
--- a/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset.ll
+++ b/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset.ll
@@ -4,6 +4,8 @@
 ; RUN: llc -O3 -mtriple=i686-w64-mingw32 -o %t_yes -filetype=obj %s -emit-func-debug-line-table-offsets
 ; RUN: llvm-dwarfdump -v -all %t_yes | FileCheck %s -check-prefix=STMT_SEQ
 
+; RUN: llvm-dwarfdump --verify %t_yes
+
 ; NO_STMT_SEQ-NOT:      DW_AT_LLVM_stmt_sequence
 
 ; STMT_SEQ:   [[[ABBREV_CODE1:[0-9]+]]] DW_TAG_subprogram
diff --git a/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll b/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll
new file mode 100644
index 0000000000000..d025dc8bfd0a0
--- /dev/null
+++ b/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll
@@ -0,0 +1,258 @@
+; RUN: llc -O3 -mtriple=arm64-apple-macosx11.0.0 -o %t_yes -filetype=obj %s -emit-func-debug-line-table-offsets
+; RUN: llvm-dwarfdump -verify %t_yes
+
+; generated from:
+; #define ATTRIB extern "C" __attribute__((noinline))
+; volatile int global_result = 0;
+;
+; ATTRIB int function1_copy1(int a) {
+;   return ++a;
+; }
+;
+; ATTRIB int function3_copy1(int a) {
+;     int b = a + 3;
+;     return b + 1;
+; }
+;
+; ATTRIB int function2_copy1(int a) {
+;     return a - 22;
+; }
+;
+; ATTRIB int function3_copy2(int a) {
+;     int b = a + 3;
+;     return b + 1;
+; }
+;
+; ATTRIB int function2_copy2(int a) {
+;     int result = a - 22;
+;     return result;
+; }
+;
+; struct logic_error {
+;     logic_error(const char* s) {}
+; };
+;
+; struct length_error : public logic_error {
+;     __attribute__((noinline)) explicit length_error(const char* s) : logic_error(s) {}
+; };
+;
+; int main() {
+;     int sum = 0;
+;     sum += function2_copy2(3);
+;     sum += function3_copy2(41);
+;     sum += function2_copy1(11);
+;     sum += function1_copy1(42);
+;     length_error e("test");
+;     return sum;
+; }
+; =====================
+
+; ModuleID = 'stmt-seq-macho.cpp'
+source_filename = "stmt-seq-macho.cpp"
+target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32"
+target triple = "arm64-apple-macosx11.0.0"
+
+%struct.length_error = type { i8 }
+
+ at .str = private unnamed_addr constant [5 x i8] c"test\00", align 1, !dbg !0
+
+; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
+define range(i32 -2147483647, -2147483648) i32 @function1_copy1(i32 noundef %a) local_unnamed_addr #0 !dbg !17 {
+entry:
+    #dbg_value(i32 %a, !22, !DIExpression(), !23)
+  %inc = add nsw i32 %a, 1, !dbg !24
+    #dbg_value(i32 %inc, !22, !DIExpression(), !23)
+  ret i32 %inc, !dbg !25
+}
+
+; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
+define range(i32 -2147483644, -2147483648) i32 @function3_copy1(i32 noundef %a) local_unnamed_addr #0 !dbg !26 {
+entry:
+    #dbg_value(i32 %a, !28, !DIExpression(), !30)
+    #dbg_value(i32 %a, !29, !DIExpression(DW_OP_plus_uconst, 3, DW_OP_stack_value), !30)
+  %add1 = add nsw i32 %a, 4, !dbg !31
+  ret i32 %add1, !dbg !32
+}
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
+
+; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
+declare void @llvm.lifetime.end.p0(ptr captures(none)) #1
+
+; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
+define range(i32 -2147483648, 2147483626) i32 @function2_copy1(i32 noundef %a) local_unnamed_addr #0 !dbg !33 {
+entry:
+    #dbg_value(i32 %a, !35, !DIExpression(), !36)
+  %sub = add nsw i32 %a, -22, !dbg !37
+  ret i32 %sub, !dbg !38
+}
+
+; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
+define range(i32 -2147483644, -2147483648) i32 @function3_copy2(i32 noundef %a) local_unnamed_addr #0 !dbg !39 {
+entry:
+    #dbg_value(i32 %a, !41, !DIExpression(), !43)
+    #dbg_value(i32 %a, !42, !DIExpression(DW_OP_plus_uconst, 3, DW_OP_stack_value), !43)
+  %add1 = add nsw i32 %a, 4, !dbg !44
+  ret i32 %add1, !dbg !45
+}
+
+; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
+define range(i32 -2147483648, 2147483626) i32 @function2_copy2(i32 noundef %a) local_unnamed_addr #0 !dbg !46 {
+entry:
+    #dbg_value(i32 %a, !48, !DIExpression(), !50)
+  %sub = add nsw i32 %a, -22, !dbg !51
+    #dbg_value(i32 %sub, !49, !DIExpression(), !50)
+  ret i32 %sub, !dbg !52
+}
+
+; Function Attrs: minsize mustprogress norecurse nounwind optsize ssp
+define noundef i32 @main() local_unnamed_addr #2 !dbg !53 {
+entry:
+  %e = alloca %struct.length_error, align 1
+    #dbg_value(i32 0, !57, !DIExpression(), !73)
+  %call = tail call i32 @function2_copy2(i32 noundef 3) #4, !dbg !74
+    #dbg_value(i32 %call, !57, !DIExpression(), !73)
+  %call1 = tail call i32 @function3_copy2(i32 noundef 41) #4, !dbg !75
+  %add2 = add nsw i32 %call1, %call, !dbg !76
+    #dbg_value(i32 %add2, !57, !DIExpression(), !73)
+  %call3 = tail call i32 @function2_copy1(i32 noundef 11) #4, !dbg !77
+  %add4 = add nsw i32 %add2, %call3, !dbg !78
+    #dbg_value(i32 %add4, !57, !DIExpression(), !73)
+  %call5 = tail call i32 @function1_copy1(i32 noundef 42) #4, !dbg !79
+  %add6 = add nsw i32 %add4, %call5, !dbg !80
+    #dbg_value(i32 %add6, !57, !DIExpression(), !73)
+  call void @llvm.lifetime.start.p0(ptr nonnull %e) #5, !dbg !81
+    #dbg_declare(ptr %e, !58, !DIExpression(), !82)
+  %call7 = call noundef ptr @_ZN12length_errorC1EPKc(ptr noundef nonnull align 1 dereferenceable(1) %e, ptr noundef nonnull @.str) #4, !dbg !82
+  call void @llvm.lifetime.end.p0(ptr nonnull %e) #5, !dbg !83
+  ret i32 %add6, !dbg !84
+}
+
+; Function Attrs: minsize mustprogress noinline nounwind optsize ssp
+define linkonce_odr noundef ptr @_ZN12length_errorC1EPKc(ptr noundef nonnull returned align 1 dereferenceable(1) %this, ptr noundef %s) unnamed_addr #3 !dbg !85 {
+entry:
+    #dbg_value(ptr %this, !87, !DIExpression(), !90)
+    #dbg_value(ptr %s, !89, !DIExpression(), !90)
+  %call = tail call noundef ptr @_ZN12length_errorC2EPKc(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %s) #4, !dbg !91
+  ret ptr %this, !dbg !92
+}
+
+; Function Attrs: minsize mustprogress noinline nounwind optsize ssp
+define linkonce_odr noundef ptr @_ZN12length_errorC2EPKc(ptr noundef nonnull returned align 1 dereferenceable(1) %this, ptr noundef %s) unnamed_addr #3 !dbg !93 {
+entry:
+    #dbg_value(ptr %this, !95, !DIExpression(), !97)
+    #dbg_value(ptr %s, !96, !DIExpression(), !97)
+  ret ptr %this, !dbg !98
+}
+
+attributes #0 = { minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none) "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+altnzcv,+ccdp,+ccidx,+ccpp,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fptoint,+fullfp16,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+sha3,+specrestrict,+ssbs,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a" }
+attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
+attributes #2 = { minsize mustprogress norecurse nounwind optsize ssp "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+altnzcv,+ccdp,+ccidx,+ccpp,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fptoint,+fullfp16,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+sha3,+specrestrict,+ssbs,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a" }
+attributes #3 = { minsize mustprogress noinline nounwind optsize ssp "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+altnzcv,+ccdp,+ccidx,+ccpp,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fptoint,+fullfp16,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+sha3,+specrestrict,+ssbs,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a" }
+attributes #4 = { minsize optsize }
+attributes #5 = { nounwind }
+
+!llvm.dbg.cu = !{!8}
+!llvm.module.flags = !{!11, !12, !13, !14, !15}
+!llvm.ident = !{!16}
+
+!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 51, type: !3, isLocal: true, isDefinition: true)
+!2 = !DIFile(filename: "stmt-seq-macho.cpp", directory: "")
+!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !6)
+!4 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !5)
+!5 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char)
+!6 = !{!7}
+!7 = !DISubrange(count: 5)
+!8 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !9, producer: "clang version 22.0.0git (git at github.com:DataCorrupted/llvm-project.git cedce2128dc872a2f1024c9907fd78bdee4b7fe7)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, globals: !10, splitDebugInlining: false, nameTableKind: Apple, sysroot: "/")
+!9 = !DIFile(filename: "stmt-seq-macho.cpp", directory: "/private/tmp/stmt_seq")
+!10 = !{!0}
+!11 = !{i32 7, !"Dwarf Version", i32 4}
+!12 = !{i32 2, !"Debug Info Version", i32 3}
+!13 = !{i32 1, !"wchar_size", i32 4}
+!14 = !{i32 8, !"PIC Level", i32 2}
+!15 = !{i32 7, !"frame-pointer", i32 1}
+!16 = !{!"clang version 22.0.0git (git at github.com:DataCorrupted/llvm-project.git cedce2128dc872a2f1024c9907fd78bdee4b7fe7)"}
+!17 = distinct !DISubprogram(name: "function1_copy1", scope: !2, file: !2, line: 14, type: !18, scopeLine: 14, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !21)
+!18 = !DISubroutineType(types: !19)
+!19 = !{!20, !20}
+!20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+!21 = !{!22}
+!22 = !DILocalVariable(name: "a", arg: 1, scope: !17, file: !2, line: 14, type: !20)
+!23 = !DILocation(line: 0, scope: !17)
+!24 = !DILocation(line: 15, column: 10, scope: !17)
+!25 = !DILocation(line: 15, column: 3, scope: !17)
+!26 = distinct !DISubprogram(name: "function3_copy1", scope: !2, file: !2, line: 18, type: !18, scopeLine: 18, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !27)
+!27 = !{!28, !29}
+!28 = !DILocalVariable(name: "a", arg: 1, scope: !26, file: !2, line: 18, type: !20)
+!29 = !DILocalVariable(name: "b", scope: !26, file: !2, line: 19, type: !20)
+!30 = !DILocation(line: 0, scope: !26)
+!31 = !DILocation(line: 20, column: 14, scope: !26)
+!32 = !DILocation(line: 20, column: 5, scope: !26)
+!33 = distinct !DISubprogram(name: "function2_copy1", scope: !2, file: !2, line: 23, type: !18, scopeLine: 23, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !34)
+!34 = !{!35}
+!35 = !DILocalVariable(name: "a", arg: 1, scope: !33, file: !2, line: 23, type: !20)
+!36 = !DILocation(line: 0, scope: !33)
+!37 = !DILocation(line: 24, column: 14, scope: !33)
+!38 = !DILocation(line: 24, column: 5, scope: !33)
+!39 = distinct !DISubprogram(name: "function3_copy2", scope: !2, file: !2, line: 27, type: !18, scopeLine: 27, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !40)
+!40 = !{!41, !42}
+!41 = !DILocalVariable(name: "a", arg: 1, scope: !39, file: !2, line: 27, type: !20)
+!42 = !DILocalVariable(name: "b", scope: !39, file: !2, line: 28, type: !20)
+!43 = !DILocation(line: 0, scope: !39)
+!44 = !DILocation(line: 29, column: 14, scope: !39)
+!45 = !DILocation(line: 29, column: 5, scope: !39)
+!46 = distinct !DISubprogram(name: "function2_copy2", scope: !2, file: !2, line: 32, type: !18, scopeLine: 32, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !47)
+!47 = !{!48, !49}
+!48 = !DILocalVariable(name: "a", arg: 1, scope: !46, file: !2, line: 32, type: !20)
+!49 = !DILocalVariable(name: "result", scope: !46, file: !2, line: 33, type: !20)
+!50 = !DILocation(line: 0, scope: !46)
+!51 = !DILocation(line: 33, column: 20, scope: !46)
+!52 = !DILocation(line: 34, column: 5, scope: !46)
+!53 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 45, type: !54, scopeLine: 45, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !56)
+!54 = !DISubroutineType(types: !55)
+!55 = !{!20}
+!56 = !{!57, !58}
+!57 = !DILocalVariable(name: "sum", scope: !53, file: !2, line: 46, type: !20)
+!58 = !DILocalVariable(name: "e", scope: !53, file: !2, line: 51, type: !59)
+!59 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "length_error", file: !2, line: 41, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !60, identifier: "_ZTS12length_error")
+!60 = !{!61, !69}
+!61 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !59, baseType: !62, extraData: i32 0)
+!62 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "logic_error", file: !2, line: 37, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !63, identifier: "_ZTS11logic_error")
+!63 = !{!64}
+!64 = !DISubprogram(name: "logic_error", scope: !62, file: !2, line: 38, type: !65, scopeLine: 38, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!65 = !DISubroutineType(types: !66)
+!66 = !{null, !67, !68}
+!67 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !62, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
+!68 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64)
+!69 = !DISubprogram(name: "length_error", scope: !59, file: !2, line: 42, type: !70, scopeLine: 42, flags: DIFlagExplicit | DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!70 = !DISubroutineType(types: !71)
+!71 = !{null, !72, !68}
+!72 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !59, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
+!73 = !DILocation(line: 0, scope: !53)
+!74 = !DILocation(line: 47, column: 12, scope: !53)
+!75 = !DILocation(line: 48, column: 12, scope: !53)
+!76 = !DILocation(line: 48, column: 9, scope: !53)
+!77 = !DILocation(line: 49, column: 12, scope: !53)
+!78 = !DILocation(line: 49, column: 9, scope: !53)
+!79 = !DILocation(line: 50, column: 12, scope: !53)
+!80 = !DILocation(line: 50, column: 9, scope: !53)
+!81 = !DILocation(line: 51, column: 5, scope: !53)
+!82 = !DILocation(line: 51, column: 18, scope: !53)
+!83 = !DILocation(line: 53, column: 1, scope: !53)
+!84 = !DILocation(line: 52, column: 5, scope: !53)
+!85 = distinct !DISubprogram(name: "length_error", linkageName: "_ZN12length_errorC1EPKc", scope: !59, file: !2, line: 42, type: !70, scopeLine: 42, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, declaration: !69, retainedNodes: !86)
+!86 = !{!87, !89}
+!87 = !DILocalVariable(name: "this", arg: 1, scope: !85, type: !88, flags: DIFlagArtificial | DIFlagObjectPointer)
+!88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !59, size: 64)
+!89 = !DILocalVariable(name: "s", arg: 2, scope: !85, file: !2, line: 42, type: !68)
+!90 = !DILocation(line: 0, scope: !85)
+!91 = !DILocation(line: 42, column: 85, scope: !85)
+!92 = !DILocation(line: 42, column: 86, scope: !85)
+!93 = distinct !DISubprogram(name: "length_error", linkageName: "_ZN12length_errorC2EPKc", scope: !59, file: !2, line: 42, type: !70, scopeLine: 42, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, declaration: !69, retainedNodes: !94)
+!94 = !{!95, !96}
+!95 = !DILocalVariable(name: "this", arg: 1, scope: !93, type: !88, flags: DIFlagArtificial | DIFlagObjectPointer)
+!96 = !DILocalVariable(name: "s", arg: 2, scope: !93, file: !2, line: 42, type: !68)
+!97 = !DILocation(line: 0, scope: !93)
+!98 = !DILocation(line: 42, column: 86, scope: !93)
diff --git a/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test b/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test
index db223cda43247..b42da261d8879 100644
--- a/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test
+++ b/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test
@@ -2,7 +2,9 @@
 
 # RUN: rm -rf %t && split-file %s %t && cd %t
 # RUN: yaml2obj %t/stmt_seq_macho.exe.yaml -o %t/stmt_seq_macho.exe
+# RUN: llvm-dwarfdump --verify %t/stmt_seq_macho.exe
 # RUN: yaml2obj %t/stmt_seq_macho.o.yaml   -o %t/stmt_seq_macho.o
+# RUN: llvm-dwarfdump --verify %t/stmt_seq_macho.o
 # RUN: dsymutil --flat --verify-dwarf=none -oso-prepend-path %t %t/stmt_seq_macho.exe -o %t/stmt_seq_macho.dSYM
 # RUN: llvm-dwarfdump --debug-info --debug-line -v %t/stmt_seq_macho.dSYM | sort | FileCheck %s -check-prefix=CHECK_DSYM
 # RUN: llvm-dwarfdump --debug-info --debug-line -v %t/stmt_seq_macho.dSYM > %t/stmt_seq_macho.dSYM.txt

>From 571552671c3483fb4df5fafaa34cd9cabc6a4c8e Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Thu, 14 Aug 2025 11:14:26 -0700
Subject: [PATCH 04/13] Address Review

---
 llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp    | 44 ++++++++++++++++---
 .../tools/dsymutil/ARM/stmt-seq-macho.cpp     | 41 +++++++++++++++++
 .../tools/llvm-dwarfdump/verify_stmt_seq.yaml | 24 +++++++---
 3 files changed, 97 insertions(+), 12 deletions(-)
 create mode 100644 llvm/test/tools/dsymutil/ARM/stmt-seq-macho.cpp

diff --git a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
index 7d6a643560643..16b1b0869ffbf 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
@@ -853,11 +853,11 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
   }
   case DW_AT_LLVM_stmt_sequence: {
     // Make sure the offset in the DW_AT_LLVM_stmt_sequence attribute is valid
-    // and points to a valid sequence start in the line table.
+    // and points to a valid sequence offset in the line table.
     auto SectionOffset = AttrValue.Value.getAsSectionOffset();
     if (!SectionOffset) {
       ReportError("Invalid DW_AT_LLVM_stmt_sequence encoding",
-                  "DIE has invalid DW_AT_LLVM_stmt_sequence encoding:");
+                  "DIE has invalid DW_AT_LLVM_stmt_sequence encoding");
       break;
     }
     if (*SectionOffset >= U->getLineSection().Data.size()) {
@@ -868,7 +868,7 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
       break;
     }
 
-    // Check if the offset points to a valid sequence start
+    // Get the line table for this unit to validate bounds
     const auto *LineTable = DCtx.getLineTableForUnit(U);
     if (!LineTable) {
       ReportError("DW_AT_LLVM_stmt_sequence without line table",
@@ -876,8 +876,42 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
                   "line table");
       break;
     }
+
+    // Get the DW_AT_stmt_list offset from the compile unit DIE
+    DWARFDie CUDie = U->getUnitDIE();
+    auto StmtListOffset = toSectionOffset(CUDie.find(DW_AT_stmt_list));
+    if (!StmtListOffset) {
+      ReportError("DW_AT_LLVM_stmt_sequence without DW_AT_stmt_list",
+                  "DIE has DW_AT_LLVM_stmt_sequence but compile unit has no "
+                  "DW_AT_stmt_list");
+      break;
+    }
+
+    // Calculate the bounds of this specific line table
+    uint64_t LineTableStart = *StmtListOffset;
+    uint64_t PrologueLength = LineTable->Prologue.PrologueLength;
+    uint64_t TotalLength = LineTable->Prologue.TotalLength;
+    uint64_t LineTableEnd =
+        LineTableStart + TotalLength +
+        (LineTable->Prologue.getFormParams().Format == dwarf::DWARF64 ? 12 : 4);
+    uint64_t SequencesStart =
+        LineTableStart + PrologueLength +
+        (LineTable->Prologue.getFormParams().Format == dwarf::DWARF64 ? 12 : 4);
+
+    // Check if the offset is within the bounds of this specific line table
+    if (*SectionOffset < SequencesStart || *SectionOffset >= LineTableEnd) {
+      ReportError("DW_AT_LLVM_stmt_sequence offset out of line table bounds",
+                  "DW_AT_LLVM_stmt_sequence offset " +
+                      llvm::formatv("{0:x8}", *SectionOffset) +
+                      " is not within the line table bounds [" +
+                      llvm::formatv("{0:x8}", SequencesStart) + ", " +
+                      llvm::formatv("{0:x8}", LineTableEnd) + ")");
+      break;
+    }
+
+    // Check if the offset points to a valid sequence offset
     bool ValidSequenceOffset = false;
-    // Check if the offset matches any of the sequence start offsets using
+    // Check if the offset matches any of the sequence offset offsets using
     // binary search
     auto it = std::lower_bound(LineTable->Sequences.begin(),
                                LineTable->Sequences.end(), *SectionOffset,
@@ -894,7 +928,7 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
           "Invalid DW_AT_LLVM_stmt_sequence offset",
           "DW_AT_LLVM_stmt_sequence offset " +
               llvm::formatv("{0:x8}", *SectionOffset) +
-              " does not point to a valid sequence start in the line table");
+              " does not point to a valid sequence offset in the line table");
     break;
   }
   default:
diff --git a/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.cpp b/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.cpp
new file mode 100644
index 0000000000000..20f85cc43254f
--- /dev/null
+++ b/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.cpp
@@ -0,0 +1,41 @@
+#define ATTRIB extern "C" __attribute__((noinline))
+ATTRIB int function1_copy1(int a) {
+  return ++a;
+}
+
+ATTRIB int function3_copy1(int a) {
+    int b = a + 3;
+    return b + 1;
+}
+
+ATTRIB int function2_copy1(int a) {
+    return a - 22;
+}
+
+ATTRIB int function3_copy2(int a) {
+    int b = a + 3;
+    return b + 1;
+}
+
+ATTRIB int function2_copy2(int a) {
+    int result = a - 22;
+    return result;
+}
+
+struct logic_error {
+    logic_error(const char* s) {}
+};
+
+struct length_error : public logic_error {
+    __attribute__((noinline)) explicit length_error(const char* s) : logic_error(s) {}
+};
+
+int main() {
+    int sum = 0;
+    sum += function2_copy2(3);
+    sum += function3_copy2(41);
+    sum += function2_copy1(11);
+    sum += function1_copy1(42);
+    length_error e("test");
+    return sum;
+}
diff --git a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
index 1873eea9d49f3..8a9407cd3c6ec 100644
--- a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
+++ b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
@@ -5,14 +5,24 @@
 # RUN: yaml2obj %s -o verify_stmt_seq.o
 # RUN: not llvm-dwarfdump -verify -debug-info verify_stmt_seq.o | FileCheck %s --check-prefix=CHECK_INVALID
 
-# Line 1326 0XAB
-# CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset 0x000000ab does not point to a valid sequence start in the line table
-# Line 1372 0xEEEEE7
+
+# CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset 0x00000000 is not within the line table bounds [0x0000002e, 0x000000fd)
+# CHECK_INVALID: DW_AT_LLVM_stmt_sequence [DW_FORM_sec_offset]     (0x00000000)
+
+# CHECK_INVALID: error: DIE has invalid DW_AT_LLVM_stmt_sequence encoding
+# CHECK_INVALID: DW_AT_LLVM_stmt_sequence [DW_FORM_data4]  (0x000000a7)
+
+# CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset 0x000000ab does not point to a valid sequence offset in the line table
+# CHECK_INVALID: DW_AT_LLVM_stmt_sequence [DW_FORM_sec_offset]     (0x000000ab)
+
 # CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset is beyond .debug_line bounds: 0x00eeeee7
+# CHECK_INVALID: DW_AT_LLVM_stmt_sequence [DW_FORM_sec_offset]     (0x00eeeee7)
 
 # CHECK_INVALID: error: Aggregated error counts:
-# CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset out of bounds occurred 1 time(s).
-# CHECK_INVALID: error: Invalid DW_AT_LLVM_stmt_sequence offset occurred 1 time(s).
+# CHECK_INVALID-NEXT: error: DW_AT_LLVM_stmt_sequence offset out of bounds occurred 1 time(s).
+# CHECK_INVALID-NEXT: error: DW_AT_LLVM_stmt_sequence offset out of line table bounds occurred 1 time(s).
+# CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence encoding occurred 1 time(s).
+# CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence offset occurred 1 time(s).
 
 # CHECK_INVALID-NOT: error:
 --- !mach-o
@@ -808,7 +818,7 @@ DWARF:
             - Attribute:       DW_AT_high_pc
               Form:            DW_FORM_data4
             - Attribute:       DW_AT_LLVM_stmt_sequence
-              Form:            DW_FORM_sec_offset
+              Form:            DW_FORM_data4
             - Attribute:       DW_AT_frame_base
               Form:            DW_FORM_exprloc
             - Attribute:       DW_AT_call_all_calls
@@ -1041,7 +1051,7 @@ DWARF:
             - Value:           0x0
             - Value:           0x8
             - Value:           0x1
-            - Value:           0x34
+            - BlockData:       [ 0x6F ]
             - Value:           0x1
               BlockData:       [ 0x6F ]
             - Value:           0x1

>From 01a59eb097192a69701509f499a0c70060df59d0 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Thu, 14 Aug 2025 11:18:36 -0700
Subject: [PATCH 05/13] Split input and test

---
 .../Inputs/verify_stmt_seq.yaml               | 1600 ++++++++++++++++
 .../tools/llvm-dwarfdump/verify_stmt_seq.yaml | 1604 +----------------
 2 files changed, 1602 insertions(+), 1602 deletions(-)
 create mode 100644 llvm/test/tools/llvm-dwarfdump/Inputs/verify_stmt_seq.yaml

diff --git a/llvm/test/tools/llvm-dwarfdump/Inputs/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/Inputs/verify_stmt_seq.yaml
new file mode 100644
index 0000000000000..a3d79613613fe
--- /dev/null
+++ b/llvm/test/tools/llvm-dwarfdump/Inputs/verify_stmt_seq.yaml
@@ -0,0 +1,1600 @@
+--- !mach-o
+IsLittleEndian: true
+FileHeader:
+  magic:           0xFEEDFACF
+  cputype:         0x100000C
+  cpusubtype:      0x0
+  filetype:        0x1
+  ncmds:           5
+  sizeofcmds:      1176
+  flags:           0x2000
+  reserved:        0x0
+LoadCommands:
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         1032
+    segname:         ''
+    vmaddr:          0
+    vmsize:          3125
+    fileoff:         1208
+    filesize:        3125
+    maxprot:         7
+    initprot:        7
+    nsects:          12
+    flags:           0
+    Sections:
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0
+        size:            148
+        offset:          0x4B8
+        align:           2
+        reloff:          0x10F0
+        nreloc:          8
+        flags:           0x80000400
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         00040011C0035FD600100011C0035FD600580051C0035FD600100011C0035FD600580051C0035FD6FFC300D1F44F01A9FD7B02A9FD8300916000805200000094F30300AA20058052000000941400130B6001805200000094F30300AA40058052000000947302000B0100009021000091E03F0091000000948002130BFD7B42A9F44F41A9FFC30091C0035FD600000014C0035FD6
+        relocations:
+          - address:         0x8C
+            symbolnum:       4
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x74
+            symbolnum:       3
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x6C
+            symbolnum:       1
+            pcrel:           false
+            length:          2
+            extern:          true
+            type:            4
+            scattered:       false
+            value:           0
+          - address:         0x68
+            symbolnum:       1
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            3
+            scattered:       false
+            value:           0
+          - address:         0x60
+            symbolnum:       5
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x54
+            symbolnum:       6
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x48
+            symbolnum:       9
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x3C
+            symbolnum:       7
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+      - sectname:        __cstring
+        segname:         __TEXT
+        addr:            0x94
+        size:            5
+        offset:          0x54C
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         '7465737400'
+      - sectname:        __debug_loc
+        segname:         __DWARF
+        addr:            0x99
+        size:            412
+        offset:          0x551
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         08000000000000000C000000000000000100500C0000000000000010000000000000000400A301509F0000000000000000000000000000000008000000000000000C00000000000000030070039F0000000000000000000000000000000010000000000000001400000000000000010050140000000000000018000000000000000400A301509F0000000000000000000000000000000018000000000000001C000000000000000100501C0000000000000020000000000000000400A301509F0000000000000000000000000000000018000000000000001C00000000000000030070039F0000000000000000000000000000000020000000000000002400000000000000010050240000000000000028000000000000000400A301509F00000000000000000000000000000000240000000000000028000000000000000100500000000000000000000000000000000038000000000000004400000000000000030011009F4400000000000000500000000000000001006350000000000000005C0000000000000001006400000000000000000000000000000000
+      - sectname:        __debug_abbrev
+        segname:         __DWARF
+        addr:            0x235
+        size:            372
+        offset:          0x6ED
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+      - sectname:        __debug_info
+        segname:         __DWARF
+        addr:            0x3A9
+        size:            747
+        offset:          0x861
+        align:           0
+        reloff:          0x1130
+        nreloc:          16
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        relocations:
+          - address:         0x2A7
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x28E
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x253
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1F5
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1E1
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1CE
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1BA
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1A7
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x169
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x12D
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xF1
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xC4
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x88
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x5F
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x37
+            symbolnum:       2
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x22
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+      - sectname:        __debug_str
+        segname:         __DWARF
+        addr:            0x694
+        size:            400
+        offset:          0xB4C
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+      - sectname:        __apple_names
+        segname:         __DWARF
+        addr:            0x824
+        size:            288
+        offset:          0xCDC
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000009000000090000000C00000000000000010000000100060000000000FFFFFFFFFFFFFFFF0100000003000000040000000600000007000000080000004A08311CC78E3C8288CB36CF89CB36CFD1125E53522B705390D9F86F6A7F9A7C4908311C8C0000009C000000AC000000BC000000CC000000DC000000EC00000000010000100100000601000001000000F000000000000000D6000000010000005E00000000000000F600000001000000C30000000000000016010000010000002C01000000000000440100000100000052020000000000005C01000001000000A6020000000000002B0100000200000052020000A60200000000000026010000010000006801000000000000E6000000010000008700000000000000
+      - sectname:        __apple_objc
+        segname:         __DWARF
+        addr:            0x944
+        size:            36
+        offset:          0xDFC
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
+      - sectname:        __apple_namespac
+        segname:         __DWARF
+        addr:            0x968
+        size:            36
+        offset:          0xE20
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
+      - sectname:        __apple_types
+        segname:         __DWARF
+        addr:            0x98C
+        size:            195
+        offset:          0xE44
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         48534148010000000500000005000000140000000000000003000000010006000300050004000B000000000002000000FFFFFFFF03000000040000007CA8F05D90D9F86F5B738CDC3080880B6320957C64000000770000008A0000009D000000B0000000380100000100000027020000130000000000002B010000010000000502000013000000000000C20000000100000057000000240000000000007401000001000000DE02000024000000000000BD000000010000005000000024000000000000
+      - sectname:        __debug_frame
+        segname:         __DWARF
+        addr:            0xA50
+        size:            232
+        offset:          0xF08
+        align:           3
+        reloff:          0x11B0
+        nreloc:          8
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         14000000FFFFFFFF0400080001781E0C1F00000000000000140000000000000000000000000000000800000000000000140000000000000008000000000000000800000000000000140000000000000010000000000000000800000000000000140000000000000018000000000000000800000000000000140000000000000020000000000000000800000000000000240000000000000028000000000000006400000000000000500C1D109E019D02930394040000000014000000000000008C000000000000000400000000000000140000000000000090000000000000000400000000000000
+        relocations:
+          - address:         0xD8
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xC0
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x98
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x80
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x68
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x50
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x38
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x20
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+      - sectname:        __debug_line
+        segname:         __DWARF
+        addr:            0xB38
+        size:            253
+        offset:          0xFF0
+        align:           0
+        reloff:          0x11F0
+        nreloc:          8
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        relocations:
+          - address:         0xED
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xD9
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xAA
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x96
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x7E
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x66
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x50
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x3A
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+  - cmd:             LC_BUILD_VERSION
+    cmdsize:         24
+    platform:        1
+    minos:           720896
+    sdk:             0
+    ntools:          0
+  - cmd:             LC_LINKER_OPTIMIZATION_HINT
+    cmdsize:         16
+    dataoff:         4656
+    datasize:        8
+  - cmd:             LC_SYMTAB
+    cmdsize:         24
+    symoff:          4664
+    nsyms:           11
+    stroff:          4840
+    strsize:         168
+  - cmd:             LC_DYSYMTAB
+    cmdsize:         80
+    ilocalsym:       0
+    nlocalsym:       3
+    iextdefsym:      3
+    nextdefsym:      8
+    iundefsym:       11
+    nundefsym:       0
+    tocoff:          0
+    ntoc:            0
+    modtaboff:       0
+    nmodtab:         0
+    extrefsymoff:    0
+    nextrefsyms:     0
+    indirectsymoff:  0
+    nindirectsyms:   0
+    extreloff:       0
+    nextrel:         0
+    locreloff:       0
+    nlocrel:         0
+LinkEditData:
+  NameList:
+    - n_strx:          155
+      n_type:          0xE
+      n_sect:          1
+      n_desc:          0
+      n_value:         0
+    - n_strx:          1
+      n_type:          0xE
+      n_sect:          2
+      n_desc:          0
+      n_value:         148
+    - n_strx:          149
+      n_type:          0xE
+      n_sect:          2
+      n_desc:          0
+      n_value:         148
+    - n_strx:          39
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          192
+      n_value:         140
+    - n_strx:          14
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          192
+      n_value:         144
+    - n_strx:          132
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         0
+    - n_strx:          115
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         16
+    - n_strx:          81
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         32
+    - n_strx:          98
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         8
+    - n_strx:          64
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         24
+    - n_strx:          8
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         40
+  StringTable:
+    - ''
+    - l_.str
+    - _main
+    - __ZN12length_errorC2EPKc
+    - __ZN12length_errorC1EPKc
+    - _function3_copy2
+    - _function2_copy2
+    - _function3_copy1
+    - _function2_copy1
+    - _function1_copy1
+    - ltmp1
+    - ltmp0
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+DWARF:
+  debug_str:
+    - 'Facebook clang version 19.1.5 (https://git.internal.tfbnw.net/repos/git/rw/osmeta/external/llvm-project b36c9ae1f8f2b39e4aafb9ca4700c608c3036365)'
+    - stmt_seq_macho.cpp
+    - '/'
+    - '/private/tmp/stmt_seq'
+    - char
+    - __ARRAY_SIZE_TYPE__
+    - function1_copy1
+    - function3_copy1
+    - function2_copy1
+    - function3_copy2
+    - function2_copy2
+    - main
+    - length_error
+    - logic_error
+    - _ZN12length_errorC1EPKc
+    - _ZN12length_errorC2EPKc
+    - int
+    - a
+    - b
+    - result
+    - e
+    - sum
+    - this
+    - s
+  debug_abbrev:
+    - ID:              0
+      Table:
+        - Code:            0x1
+          Tag:             DW_TAG_compile_unit
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_producer
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_language
+              Form:            DW_FORM_data2
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_LLVM_sysroot
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_stmt_list
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_comp_dir
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+        - Code:            0x2
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+        - Code:            0x3
+          Tag:             DW_TAG_array_type
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x4
+          Tag:             DW_TAG_subrange_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_count
+              Form:            DW_FORM_data1
+        - Code:            0x5
+          Tag:             DW_TAG_const_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x6
+          Tag:             DW_TAG_base_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_encoding
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+        - Code:            0x7
+          Tag:             DW_TAG_base_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_encoding
+              Form:            DW_FORM_data1
+        - Code:            0x8
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_APPLE_omit_frame_ptr
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0x9
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xA
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xB
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xC
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0xD
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xE
+          Tag:             DW_TAG_call_site
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_call_origin
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_return_pc
+              Form:            DW_FORM_addr
+        - Code:            0xF
+          Tag:             DW_TAG_call_site_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_value
+              Form:            DW_FORM_exprloc
+        - Code:            0x10
+          Tag:             DW_TAG_structure_type
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_calling_convention
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+        - Code:            0x11
+          Tag:             DW_TAG_inheritance
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_data_member_location
+              Form:            DW_FORM_data1
+        - Code:            0x12
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_declaration
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_explicit
+              Form:            DW_FORM_flag_present
+        - Code:            0x13
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_artificial
+              Form:            DW_FORM_flag_present
+        - Code:            0x14
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x15
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_declaration
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0x16
+          Tag:             DW_TAG_pointer_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x17
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_APPLE_omit_frame_ptr
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_object_pointer
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_linkage_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_specification
+              Form:            DW_FORM_ref4
+        - Code:            0x18
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_artificial
+              Form:            DW_FORM_flag_present
+        - Code:            0x19
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x1A
+          Tag:             DW_TAG_call_site
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_call_origin
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_tail_call
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_call_pc
+              Form:            DW_FORM_addr
+  debug_info:
+    - Length:          0x2E7
+      Version:         4
+      AbbrevTableID:   0
+      AbbrOffset:      0x0
+      AddrSize:        8
+      Entries:
+        - AbbrCode:        0x1
+          Values:
+            - Value:           0x0
+            - Value:           0x21
+            - Value:           0x92
+            - Value:           0xA5
+            - Value:           0x0
+            - Value:           0xA7
+            - Value:           0x1
+            - Value:           0x0
+            - Value:           0x94
+        - AbbrCode:        0x2
+          Values:
+            - Value:           0x3F
+            - Value:           0x1
+            - Value:           0x27
+            - Value:           0x9
+              BlockData:       [ 0x3, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+                                 0x0 ]
+        - AbbrCode:        0x3
+          Values:
+            - Value:           0x4B
+        - AbbrCode:        0x4
+          Values:
+            - Value:           0x57
+            - Value:           0x5
+        - AbbrCode:        0x0
+        - AbbrCode:        0x5
+          Values:
+            - Value:           0x50
+        - AbbrCode:        0x6
+          Values:
+            - Value:           0xBD
+            - Value:           0x6
+            - Value:           0x1
+        - AbbrCode:        0x7
+          Values:
+            - Value:           0xC2
+            - Value:           0x8
+            - Value:           0x7
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x0
+            - Value:           0x8
+            - Value:           0x1
+            - BlockData:       [ 0x6F ]
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xD6
+            - Value:           0x1
+            - Value:           0x2
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x9
+          Values:
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x2
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x8
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x4A
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xE6
+            - Value:           0x1
+            - Value:           0x6
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x0
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x6
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x39
+            - Value:           0x17A
+            - Value:           0x1
+            - Value:           0x7
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x10
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x60
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xF6
+            - Value:           0x1
+            - Value:           0xB
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x5E
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0xB
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x18
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x78
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0x106
+            - Value:           0x1
+            - Value:           0xF
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x97
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0xF
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0xD0
+            - Value:           0x17A
+            - Value:           0x1
+            - Value:           0x10
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x20
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x90
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0x116
+            - Value:           0x1
+            - Value:           0x14
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0xF5
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x14
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x12E
+            - Value:           0x17C
+            - Value:           0x1
+            - Value:           0x15
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0xC
+          Values:
+            - Value:           0x28
+            - Value:           0x64
+            - Value:           0xA7
+            - Value:           0x1
+              BlockData:       [ 0x6D ]
+            - Value:           0x1
+            - Value:           0x126
+            - Value:           0x1
+            - Value:           0x21
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xD
+          Values:
+            - Value:           0x2
+              BlockData:       [ 0x8F, 0xF ]
+            - Value:           0x183
+            - Value:           0x1
+            - Value:           0x27
+            - Value:           0x205
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x151
+            - Value:           0x185
+            - Value:           0x1
+            - Value:           0x22
+            - Value:           0x2DE
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x12C
+            - Value:           0x40
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x1
+              BlockData:       [ 0x33 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0xF0
+            - Value:           0x4C
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x10, 0x29 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0xC3
+            - Value:           0x58
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x1
+              BlockData:       [ 0x3B ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x5E
+            - Value:           0x64
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x10, 0x2A ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x252
+            - Value:           0x78
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x8F, 0xF ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x10
+          Values:
+            - Value:           0x5
+            - Value:           0x12B
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1D
+        - AbbrCode:        0x11
+          Values:
+            - Value:           0x227
+            - Value:           0x0
+        - AbbrCode:        0x12
+          Values:
+            - Value:           0x12B
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x13
+          Values:
+            - Value:           0x24D
+            - Value:           0x1
+        - AbbrCode:        0x14
+          Values:
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x10
+          Values:
+            - Value:           0x5
+            - Value:           0x138
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x19
+        - AbbrCode:        0x15
+          Values:
+            - Value:           0x138
+            - Value:           0x1
+            - Value:           0x1A
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x13
+          Values:
+            - Value:           0x243
+            - Value:           0x1
+        - AbbrCode:        0x14
+          Values:
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x227
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x4B
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x205
+        - AbbrCode:        0x17
+          Values:
+            - Value:           0x8C
+            - Value:           0x4
+            - Value:           0x1
+            - Value:           0xAB
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x271
+            - Value:           0x1
+            - Value:           0x144
+            - Value:           0x214
+        - AbbrCode:        0x18
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x189
+            - Value:           0x2E5
+            - Value:           0x1
+        - AbbrCode:        0x19
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x18E
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x248
+        - AbbrCode:        0x1A
+          Values:
+            - Value:           0x2A6
+            - Value:           0x1
+            - Value:           0x8C
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x3
+              BlockData:       [ 0xA3, 0x1, 0x50 ]
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x3
+              BlockData:       [ 0xA3, 0x1, 0x51 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x17
+          Values:
+            - Value:           0x90
+            - Value:           0x4
+            - Value:           0x1
+            - Value:           0xEEEEE7
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x2C5
+            - Value:           0x1
+            - Value:           0x15C
+            - Value:           0x214
+        - AbbrCode:        0x18
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x189
+            - Value:           0x2E5
+            - Value:           0x1
+        - AbbrCode:        0x19
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x18E
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x6
+          Values:
+            - Value:           0x174
+            - Value:           0x5
+            - Value:           0x4
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x205
+        - AbbrCode:        0x0
+  debug_line:
+    - Length:          249
+      Version:         4
+      PrologueLength:  42
+      MinInstLength:   1
+      MaxOpsPerInst:   1
+      DefaultIsStmt:   1
+      LineBase:        251
+      LineRange:       14
+      OpcodeBase:      13
+      StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
+      Files:
+        - Name:            stmt_seq_macho.cpp
+          DirIdx:          0
+          ModTime:         0
+          Length:          0
+      Opcodes:
+        - Opcode:          DW_LNS_set_column
+          Data:            10
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            0
+        - Opcode:          0x14
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            3
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            8
+        - Opcode:          0x19
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            16
+        - Opcode:          DW_LNS_advance_line
+          SData:           11
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            24
+        - Opcode:          DW_LNS_advance_line
+          SData:           16
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            20
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            32
+        - Opcode:          DW_LNS_advance_line
+          SData:           20
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          0x4B
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            40
+        - Opcode:          DW_LNS_advance_line
+          SData:           32
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            12
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          0xF4
+          Data:            0
+        - Opcode:          0xBB
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x82
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            12
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4B
+          Data:            0
+        - Opcode:          0xBB
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          0x81
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            18
+        - Opcode:          0x4C
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          0xF1
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_set_epilogue_begin
+          Data:            0
+        - Opcode:          0x4C
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            85
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            140
+        - Opcode:          DW_LNS_advance_line
+          SData:           29
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            86
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            144
+        - Opcode:          DW_LNS_advance_line
+          SData:           29
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_advance_pc
+          Data:            4
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+...
diff --git a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
index 8a9407cd3c6ec..271fd3c9517f2 100644
--- a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
+++ b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
@@ -1,8 +1,8 @@
 # Object file copied from llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test
-# Then I manually tempered with some of the value of the attribute
+# Then manually tempered with some of the value of the attribute
 # I hope there are easier ways to construct tests like this.
 
-# RUN: yaml2obj %s -o verify_stmt_seq.o
+# RUN: yaml2obj %p/Inputs/verify_stmt_seq.yaml -o verify_stmt_seq.o
 # RUN: not llvm-dwarfdump -verify -debug-info verify_stmt_seq.o | FileCheck %s --check-prefix=CHECK_INVALID
 
 
@@ -25,1603 +25,3 @@
 # CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence offset occurred 1 time(s).
 
 # CHECK_INVALID-NOT: error:
---- !mach-o
-IsLittleEndian: true
-FileHeader:
-  magic:           0xFEEDFACF
-  cputype:         0x100000C
-  cpusubtype:      0x0
-  filetype:        0x1
-  ncmds:           5
-  sizeofcmds:      1176
-  flags:           0x2000
-  reserved:        0x0
-LoadCommands:
-  - cmd:             LC_SEGMENT_64
-    cmdsize:         1032
-    segname:         ''
-    vmaddr:          0
-    vmsize:          3125
-    fileoff:         1208
-    filesize:        3125
-    maxprot:         7
-    initprot:        7
-    nsects:          12
-    flags:           0
-    Sections:
-      - sectname:        __text
-        segname:         __TEXT
-        addr:            0x0
-        size:            148
-        offset:          0x4B8
-        align:           2
-        reloff:          0x10F0
-        nreloc:          8
-        flags:           0x80000400
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         00040011C0035FD600100011C0035FD600580051C0035FD600100011C0035FD600580051C0035FD6FFC300D1F44F01A9FD7B02A9FD8300916000805200000094F30300AA20058052000000941400130B6001805200000094F30300AA40058052000000947302000B0100009021000091E03F0091000000948002130BFD7B42A9F44F41A9FFC30091C0035FD600000014C0035FD6
-        relocations:
-          - address:         0x8C
-            symbolnum:       4
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x74
-            symbolnum:       3
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x6C
-            symbolnum:       1
-            pcrel:           false
-            length:          2
-            extern:          true
-            type:            4
-            scattered:       false
-            value:           0
-          - address:         0x68
-            symbolnum:       1
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            3
-            scattered:       false
-            value:           0
-          - address:         0x60
-            symbolnum:       5
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x54
-            symbolnum:       6
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x48
-            symbolnum:       9
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x3C
-            symbolnum:       7
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-      - sectname:        __cstring
-        segname:         __TEXT
-        addr:            0x94
-        size:            5
-        offset:          0x54C
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         '7465737400'
-      - sectname:        __debug_loc
-        segname:         __DWARF
-        addr:            0x99
-        size:            412
-        offset:          0x551
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         08000000000000000C000000000000000100500C0000000000000010000000000000000400A301509F0000000000000000000000000000000008000000000000000C00000000000000030070039F0000000000000000000000000000000010000000000000001400000000000000010050140000000000000018000000000000000400A301509F0000000000000000000000000000000018000000000000001C000000000000000100501C0000000000000020000000000000000400A301509F0000000000000000000000000000000018000000000000001C00000000000000030070039F0000000000000000000000000000000020000000000000002400000000000000010050240000000000000028000000000000000400A301509F00000000000000000000000000000000240000000000000028000000000000000100500000000000000000000000000000000038000000000000004400000000000000030011009F4400000000000000500000000000000001006350000000000000005C0000000000000001006400000000000000000000000000000000
-      - sectname:        __debug_abbrev
-        segname:         __DWARF
-        addr:            0x235
-        size:            372
-        offset:          0x6ED
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-      - sectname:        __debug_info
-        segname:         __DWARF
-        addr:            0x3A9
-        size:            747
-        offset:          0x861
-        align:           0
-        reloff:          0x1130
-        nreloc:          16
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        relocations:
-          - address:         0x2A7
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x28E
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x253
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1F5
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1E1
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1CE
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1BA
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1A7
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x169
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x12D
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xF1
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xC4
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x88
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x5F
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x37
-            symbolnum:       2
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x22
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-      - sectname:        __debug_str
-        segname:         __DWARF
-        addr:            0x694
-        size:            400
-        offset:          0xB4C
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-      - sectname:        __apple_names
-        segname:         __DWARF
-        addr:            0x824
-        size:            288
-        offset:          0xCDC
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         485341480100000009000000090000000C00000000000000010000000100060000000000FFFFFFFFFFFFFFFF0100000003000000040000000600000007000000080000004A08311CC78E3C8288CB36CF89CB36CFD1125E53522B705390D9F86F6A7F9A7C4908311C8C0000009C000000AC000000BC000000CC000000DC000000EC00000000010000100100000601000001000000F000000000000000D6000000010000005E00000000000000F600000001000000C30000000000000016010000010000002C01000000000000440100000100000052020000000000005C01000001000000A6020000000000002B0100000200000052020000A60200000000000026010000010000006801000000000000E6000000010000008700000000000000
-      - sectname:        __apple_objc
-        segname:         __DWARF
-        addr:            0x944
-        size:            36
-        offset:          0xDFC
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
-      - sectname:        __apple_namespac
-        segname:         __DWARF
-        addr:            0x968
-        size:            36
-        offset:          0xE20
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
-      - sectname:        __apple_types
-        segname:         __DWARF
-        addr:            0x98C
-        size:            195
-        offset:          0xE44
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         48534148010000000500000005000000140000000000000003000000010006000300050004000B000000000002000000FFFFFFFF03000000040000007CA8F05D90D9F86F5B738CDC3080880B6320957C64000000770000008A0000009D000000B0000000380100000100000027020000130000000000002B010000010000000502000013000000000000C20000000100000057000000240000000000007401000001000000DE02000024000000000000BD000000010000005000000024000000000000
-      - sectname:        __debug_frame
-        segname:         __DWARF
-        addr:            0xA50
-        size:            232
-        offset:          0xF08
-        align:           3
-        reloff:          0x11B0
-        nreloc:          8
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         14000000FFFFFFFF0400080001781E0C1F00000000000000140000000000000000000000000000000800000000000000140000000000000008000000000000000800000000000000140000000000000010000000000000000800000000000000140000000000000018000000000000000800000000000000140000000000000020000000000000000800000000000000240000000000000028000000000000006400000000000000500C1D109E019D02930394040000000014000000000000008C000000000000000400000000000000140000000000000090000000000000000400000000000000
-        relocations:
-          - address:         0xD8
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xC0
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x98
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x80
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x68
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x50
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x38
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x20
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-      - sectname:        __debug_line
-        segname:         __DWARF
-        addr:            0xB38
-        size:            253
-        offset:          0xFF0
-        align:           0
-        reloff:          0x11F0
-        nreloc:          8
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        relocations:
-          - address:         0xED
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xD9
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xAA
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x96
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x7E
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x66
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x50
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x3A
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-  - cmd:             LC_BUILD_VERSION
-    cmdsize:         24
-    platform:        1
-    minos:           720896
-    sdk:             0
-    ntools:          0
-  - cmd:             LC_LINKER_OPTIMIZATION_HINT
-    cmdsize:         16
-    dataoff:         4656
-    datasize:        8
-  - cmd:             LC_SYMTAB
-    cmdsize:         24
-    symoff:          4664
-    nsyms:           11
-    stroff:          4840
-    strsize:         168
-  - cmd:             LC_DYSYMTAB
-    cmdsize:         80
-    ilocalsym:       0
-    nlocalsym:       3
-    iextdefsym:      3
-    nextdefsym:      8
-    iundefsym:       11
-    nundefsym:       0
-    tocoff:          0
-    ntoc:            0
-    modtaboff:       0
-    nmodtab:         0
-    extrefsymoff:    0
-    nextrefsyms:     0
-    indirectsymoff:  0
-    nindirectsyms:   0
-    extreloff:       0
-    nextrel:         0
-    locreloff:       0
-    nlocrel:         0
-LinkEditData:
-  NameList:
-    - n_strx:          155
-      n_type:          0xE
-      n_sect:          1
-      n_desc:          0
-      n_value:         0
-    - n_strx:          1
-      n_type:          0xE
-      n_sect:          2
-      n_desc:          0
-      n_value:         148
-    - n_strx:          149
-      n_type:          0xE
-      n_sect:          2
-      n_desc:          0
-      n_value:         148
-    - n_strx:          39
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          192
-      n_value:         140
-    - n_strx:          14
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          192
-      n_value:         144
-    - n_strx:          132
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         0
-    - n_strx:          115
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         16
-    - n_strx:          81
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         32
-    - n_strx:          98
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         8
-    - n_strx:          64
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         24
-    - n_strx:          8
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         40
-  StringTable:
-    - ''
-    - l_.str
-    - _main
-    - __ZN12length_errorC2EPKc
-    - __ZN12length_errorC1EPKc
-    - _function3_copy2
-    - _function2_copy2
-    - _function3_copy1
-    - _function2_copy1
-    - _function1_copy1
-    - ltmp1
-    - ltmp0
-    - ''
-    - ''
-    - ''
-    - ''
-    - ''
-    - ''
-    - ''
-DWARF:
-  debug_str:
-    - 'Facebook clang version 19.1.5 (https://git.internal.tfbnw.net/repos/git/rw/osmeta/external/llvm-project b36c9ae1f8f2b39e4aafb9ca4700c608c3036365)'
-    - stmt_seq_macho.cpp
-    - '/'
-    - '/private/tmp/stmt_seq'
-    - char
-    - __ARRAY_SIZE_TYPE__
-    - function1_copy1
-    - function3_copy1
-    - function2_copy1
-    - function3_copy2
-    - function2_copy2
-    - main
-    - length_error
-    - logic_error
-    - _ZN12length_errorC1EPKc
-    - _ZN12length_errorC2EPKc
-    - int
-    - a
-    - b
-    - result
-    - e
-    - sum
-    - this
-    - s
-  debug_abbrev:
-    - ID:              0
-      Table:
-        - Code:            0x1
-          Tag:             DW_TAG_compile_unit
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_producer
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_language
-              Form:            DW_FORM_data2
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_LLVM_sysroot
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_stmt_list
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_comp_dir
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_low_pc
-              Form:            DW_FORM_addr
-            - Attribute:       DW_AT_high_pc
-              Form:            DW_FORM_data4
-        - Code:            0x2
-          Tag:             DW_TAG_variable
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-        - Code:            0x3
-          Tag:             DW_TAG_array_type
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x4
-          Tag:             DW_TAG_subrange_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_count
-              Form:            DW_FORM_data1
-        - Code:            0x5
-          Tag:             DW_TAG_const_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x6
-          Tag:             DW_TAG_base_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_encoding
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_byte_size
-              Form:            DW_FORM_data1
-        - Code:            0x7
-          Tag:             DW_TAG_base_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_byte_size
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_encoding
-              Form:            DW_FORM_data1
-        - Code:            0x8
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_low_pc
-              Form:            DW_FORM_addr
-            - Attribute:       DW_AT_high_pc
-              Form:            DW_FORM_data4
-            - Attribute:       DW_AT_APPLE_omit_frame_ptr
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_LLVM_stmt_sequence
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_frame_base
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_call_all_calls
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_external
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-        - Code:            0x9
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0xA
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0xB
-          Tag:             DW_TAG_variable
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0xC
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_low_pc
-              Form:            DW_FORM_addr
-            - Attribute:       DW_AT_high_pc
-              Form:            DW_FORM_data4
-            - Attribute:       DW_AT_LLVM_stmt_sequence
-              Form:            DW_FORM_data4
-            - Attribute:       DW_AT_frame_base
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_call_all_calls
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_external
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-        - Code:            0xD
-          Tag:             DW_TAG_variable
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0xE
-          Tag:             DW_TAG_call_site
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_call_origin
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_call_return_pc
-              Form:            DW_FORM_addr
-        - Code:            0xF
-          Tag:             DW_TAG_call_site_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_call_value
-              Form:            DW_FORM_exprloc
-        - Code:            0x10
-          Tag:             DW_TAG_structure_type
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_calling_convention
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_byte_size
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-        - Code:            0x11
-          Tag:             DW_TAG_inheritance
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_data_member_location
-              Form:            DW_FORM_data1
-        - Code:            0x12
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_declaration
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_external
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_explicit
-              Form:            DW_FORM_flag_present
-        - Code:            0x13
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_artificial
-              Form:            DW_FORM_flag_present
-        - Code:            0x14
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x15
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_declaration
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_external
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-        - Code:            0x16
-          Tag:             DW_TAG_pointer_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x17
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_low_pc
-              Form:            DW_FORM_addr
-            - Attribute:       DW_AT_high_pc
-              Form:            DW_FORM_data4
-            - Attribute:       DW_AT_APPLE_omit_frame_ptr
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_LLVM_stmt_sequence
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_frame_base
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_object_pointer
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_call_all_calls
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_linkage_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_specification
-              Form:            DW_FORM_ref4
-        - Code:            0x18
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_artificial
-              Form:            DW_FORM_flag_present
-        - Code:            0x19
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x1A
-          Tag:             DW_TAG_call_site
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_call_origin
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_call_tail_call
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_call_pc
-              Form:            DW_FORM_addr
-  debug_info:
-    - Length:          0x2E7
-      Version:         4
-      AbbrevTableID:   0
-      AbbrOffset:      0x0
-      AddrSize:        8
-      Entries:
-        - AbbrCode:        0x1
-          Values:
-            - Value:           0x0
-            - Value:           0x21
-            - Value:           0x92
-            - Value:           0xA5
-            - Value:           0x0
-            - Value:           0xA7
-            - Value:           0x1
-            - Value:           0x0
-            - Value:           0x94
-        - AbbrCode:        0x2
-          Values:
-            - Value:           0x3F
-            - Value:           0x1
-            - Value:           0x27
-            - Value:           0x9
-              BlockData:       [ 0x3, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                                 0x0 ]
-        - AbbrCode:        0x3
-          Values:
-            - Value:           0x4B
-        - AbbrCode:        0x4
-          Values:
-            - Value:           0x57
-            - Value:           0x5
-        - AbbrCode:        0x0
-        - AbbrCode:        0x5
-          Values:
-            - Value:           0x50
-        - AbbrCode:        0x6
-          Values:
-            - Value:           0xBD
-            - Value:           0x6
-            - Value:           0x1
-        - AbbrCode:        0x7
-          Values:
-            - Value:           0xC2
-            - Value:           0x8
-            - Value:           0x7
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x0
-            - Value:           0x8
-            - Value:           0x1
-            - BlockData:       [ 0x6F ]
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0xD6
-            - Value:           0x1
-            - Value:           0x2
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0x9
-          Values:
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0x2
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x8
-            - Value:           0x8
-            - Value:           0x1
-            - Value:           0x4A
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0xE6
-            - Value:           0x1
-            - Value:           0x6
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xA
-          Values:
-            - Value:           0x0
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0x6
-            - Value:           0x2DE
-        - AbbrCode:        0xB
-          Values:
-            - Value:           0x39
-            - Value:           0x17A
-            - Value:           0x1
-            - Value:           0x7
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x10
-            - Value:           0x8
-            - Value:           0x1
-            - Value:           0x60
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0xF6
-            - Value:           0x1
-            - Value:           0xB
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xA
-          Values:
-            - Value:           0x5E
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0xB
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x18
-            - Value:           0x8
-            - Value:           0x1
-            - Value:           0x78
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0x106
-            - Value:           0x1
-            - Value:           0xF
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xA
-          Values:
-            - Value:           0x97
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0xF
-            - Value:           0x2DE
-        - AbbrCode:        0xB
-          Values:
-            - Value:           0xD0
-            - Value:           0x17A
-            - Value:           0x1
-            - Value:           0x10
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x20
-            - Value:           0x8
-            - Value:           0x1
-            - Value:           0x90
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0x116
-            - Value:           0x1
-            - Value:           0x14
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xA
-          Values:
-            - Value:           0xF5
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0x14
-            - Value:           0x2DE
-        - AbbrCode:        0xB
-          Values:
-            - Value:           0x12E
-            - Value:           0x17C
-            - Value:           0x1
-            - Value:           0x15
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0xC
-          Values:
-            - Value:           0x28
-            - Value:           0x64
-            - Value:           0xA7
-            - Value:           0x1
-              BlockData:       [ 0x6D ]
-            - Value:           0x1
-            - Value:           0x126
-            - Value:           0x1
-            - Value:           0x21
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xD
-          Values:
-            - Value:           0x2
-              BlockData:       [ 0x8F, 0xF ]
-            - Value:           0x183
-            - Value:           0x1
-            - Value:           0x27
-            - Value:           0x205
-        - AbbrCode:        0xB
-          Values:
-            - Value:           0x151
-            - Value:           0x185
-            - Value:           0x1
-            - Value:           0x22
-            - Value:           0x2DE
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0x12C
-            - Value:           0x40
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x1
-              BlockData:       [ 0x33 ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0xF0
-            - Value:           0x4C
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x2
-              BlockData:       [ 0x10, 0x29 ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0xC3
-            - Value:           0x58
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x1
-              BlockData:       [ 0x3B ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0x5E
-            - Value:           0x64
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x2
-              BlockData:       [ 0x10, 0x2A ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0x252
-            - Value:           0x78
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x2
-              BlockData:       [ 0x8F, 0xF ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0x0
-        - AbbrCode:        0x10
-          Values:
-            - Value:           0x5
-            - Value:           0x12B
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x1D
-        - AbbrCode:        0x11
-          Values:
-            - Value:           0x227
-            - Value:           0x0
-        - AbbrCode:        0x12
-          Values:
-            - Value:           0x12B
-            - Value:           0x1
-            - Value:           0x1E
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0x13
-          Values:
-            - Value:           0x24D
-            - Value:           0x1
-        - AbbrCode:        0x14
-          Values:
-            - Value:           0x248
-        - AbbrCode:        0x0
-        - AbbrCode:        0x0
-        - AbbrCode:        0x10
-          Values:
-            - Value:           0x5
-            - Value:           0x138
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x19
-        - AbbrCode:        0x15
-          Values:
-            - Value:           0x138
-            - Value:           0x1
-            - Value:           0x1A
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0x13
-          Values:
-            - Value:           0x243
-            - Value:           0x1
-        - AbbrCode:        0x14
-          Values:
-            - Value:           0x248
-        - AbbrCode:        0x0
-        - AbbrCode:        0x0
-        - AbbrCode:        0x16
-          Values:
-            - Value:           0x227
-        - AbbrCode:        0x16
-          Values:
-            - Value:           0x4B
-        - AbbrCode:        0x16
-          Values:
-            - Value:           0x205
-        - AbbrCode:        0x17
-          Values:
-            - Value:           0x8C
-            - Value:           0x4
-            - Value:           0x1
-            - Value:           0xAB
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x271
-            - Value:           0x1
-            - Value:           0x144
-            - Value:           0x214
-        - AbbrCode:        0x18
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x189
-            - Value:           0x2E5
-            - Value:           0x1
-        - AbbrCode:        0x19
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x51 ]
-            - Value:           0x18E
-            - Value:           0x1
-            - Value:           0x1E
-            - Value:           0x248
-        - AbbrCode:        0x1A
-          Values:
-            - Value:           0x2A6
-            - Value:           0x1
-            - Value:           0x8C
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x3
-              BlockData:       [ 0xA3, 0x1, 0x50 ]
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x51 ]
-            - Value:           0x3
-              BlockData:       [ 0xA3, 0x1, 0x51 ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0x0
-        - AbbrCode:        0x17
-          Values:
-            - Value:           0x90
-            - Value:           0x4
-            - Value:           0x1
-            - Value:           0xEEEEE7
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x2C5
-            - Value:           0x1
-            - Value:           0x15C
-            - Value:           0x214
-        - AbbrCode:        0x18
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x189
-            - Value:           0x2E5
-            - Value:           0x1
-        - AbbrCode:        0x19
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x51 ]
-            - Value:           0x18E
-            - Value:           0x1
-            - Value:           0x1E
-            - Value:           0x248
-        - AbbrCode:        0x0
-        - AbbrCode:        0x6
-          Values:
-            - Value:           0x174
-            - Value:           0x5
-            - Value:           0x4
-        - AbbrCode:        0x16
-          Values:
-            - Value:           0x205
-        - AbbrCode:        0x0
-  debug_line:
-    - Length:          249
-      Version:         4
-      PrologueLength:  42
-      MinInstLength:   1
-      MaxOpsPerInst:   1
-      DefaultIsStmt:   1
-      LineBase:        251
-      LineRange:       14
-      OpcodeBase:      13
-      StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
-      Files:
-        - Name:            stmt_seq_macho.cpp
-          DirIdx:          0
-          ModTime:         0
-          Length:          0
-      Opcodes:
-        - Opcode:          DW_LNS_set_column
-          Data:            10
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            0
-        - Opcode:          0x14
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            3
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4A
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            14
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            8
-        - Opcode:          0x19
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4A
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            14
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            16
-        - Opcode:          DW_LNS_advance_line
-          SData:           11
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4A
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            14
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            24
-        - Opcode:          DW_LNS_advance_line
-          SData:           16
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4A
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            20
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            32
-        - Opcode:          DW_LNS_advance_line
-          SData:           20
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          0x4B
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            40
-        - Opcode:          DW_LNS_advance_line
-          SData:           32
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            12
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          0xF4
-          Data:            0
-        - Opcode:          0xBB
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            9
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x82
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            12
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4B
-          Data:            0
-        - Opcode:          0xBB
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            9
-        - Opcode:          0x81
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            18
-        - Opcode:          0x4C
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            9
-        - Opcode:          0xF1
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          DW_LNS_set_epilogue_begin
-          Data:            0
-        - Opcode:          0x4C
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            85
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            140
-        - Opcode:          DW_LNS_advance_line
-          SData:           29
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            86
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            144
-        - Opcode:          DW_LNS_advance_line
-          SData:           29
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_advance_pc
-          Data:            4
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-...

>From 8fc1a3bc39ff519219daadbc8df58fb696bf32d1 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Thu, 14 Aug 2025 11:22:16 -0700
Subject: [PATCH 06/13] Revert unrelated change

---
 .../X86/DW_AT_LLVM_stmt_seq_sec_offset.ll     |   2 -
 .../X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll   | 258 ------------------
 .../tools/dsymutil/ARM/stmt-seq-macho.cpp     |  41 ---
 .../tools/dsymutil/ARM/stmt-seq-macho.test    |   2 -
 4 files changed, 303 deletions(-)
 delete mode 100644 llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll
 delete mode 100644 llvm/test/tools/dsymutil/ARM/stmt-seq-macho.cpp

diff --git a/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset.ll b/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset.ll
index 41ed0acd28c48..58f6495924b90 100644
--- a/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset.ll
+++ b/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset.ll
@@ -4,8 +4,6 @@
 ; RUN: llc -O3 -mtriple=i686-w64-mingw32 -o %t_yes -filetype=obj %s -emit-func-debug-line-table-offsets
 ; RUN: llvm-dwarfdump -v -all %t_yes | FileCheck %s -check-prefix=STMT_SEQ
 
-; RUN: llvm-dwarfdump --verify %t_yes
-
 ; NO_STMT_SEQ-NOT:      DW_AT_LLVM_stmt_sequence
 
 ; STMT_SEQ:   [[[ABBREV_CODE1:[0-9]+]]] DW_TAG_subprogram
diff --git a/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll b/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll
deleted file mode 100644
index d025dc8bfd0a0..0000000000000
--- a/llvm/test/DebugInfo/X86/DW_AT_LLVM_stmt_seq_sec_offset_2.ll
+++ /dev/null
@@ -1,258 +0,0 @@
-; RUN: llc -O3 -mtriple=arm64-apple-macosx11.0.0 -o %t_yes -filetype=obj %s -emit-func-debug-line-table-offsets
-; RUN: llvm-dwarfdump -verify %t_yes
-
-; generated from:
-; #define ATTRIB extern "C" __attribute__((noinline))
-; volatile int global_result = 0;
-;
-; ATTRIB int function1_copy1(int a) {
-;   return ++a;
-; }
-;
-; ATTRIB int function3_copy1(int a) {
-;     int b = a + 3;
-;     return b + 1;
-; }
-;
-; ATTRIB int function2_copy1(int a) {
-;     return a - 22;
-; }
-;
-; ATTRIB int function3_copy2(int a) {
-;     int b = a + 3;
-;     return b + 1;
-; }
-;
-; ATTRIB int function2_copy2(int a) {
-;     int result = a - 22;
-;     return result;
-; }
-;
-; struct logic_error {
-;     logic_error(const char* s) {}
-; };
-;
-; struct length_error : public logic_error {
-;     __attribute__((noinline)) explicit length_error(const char* s) : logic_error(s) {}
-; };
-;
-; int main() {
-;     int sum = 0;
-;     sum += function2_copy2(3);
-;     sum += function3_copy2(41);
-;     sum += function2_copy1(11);
-;     sum += function1_copy1(42);
-;     length_error e("test");
-;     return sum;
-; }
-; =====================
-
-; ModuleID = 'stmt-seq-macho.cpp'
-source_filename = "stmt-seq-macho.cpp"
-target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32"
-target triple = "arm64-apple-macosx11.0.0"
-
-%struct.length_error = type { i8 }
-
- at .str = private unnamed_addr constant [5 x i8] c"test\00", align 1, !dbg !0
-
-; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
-define range(i32 -2147483647, -2147483648) i32 @function1_copy1(i32 noundef %a) local_unnamed_addr #0 !dbg !17 {
-entry:
-    #dbg_value(i32 %a, !22, !DIExpression(), !23)
-  %inc = add nsw i32 %a, 1, !dbg !24
-    #dbg_value(i32 %inc, !22, !DIExpression(), !23)
-  ret i32 %inc, !dbg !25
-}
-
-; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
-define range(i32 -2147483644, -2147483648) i32 @function3_copy1(i32 noundef %a) local_unnamed_addr #0 !dbg !26 {
-entry:
-    #dbg_value(i32 %a, !28, !DIExpression(), !30)
-    #dbg_value(i32 %a, !29, !DIExpression(DW_OP_plus_uconst, 3, DW_OP_stack_value), !30)
-  %add1 = add nsw i32 %a, 4, !dbg !31
-  ret i32 %add1, !dbg !32
-}
-
-; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
-
-; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
-declare void @llvm.lifetime.end.p0(ptr captures(none)) #1
-
-; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
-define range(i32 -2147483648, 2147483626) i32 @function2_copy1(i32 noundef %a) local_unnamed_addr #0 !dbg !33 {
-entry:
-    #dbg_value(i32 %a, !35, !DIExpression(), !36)
-  %sub = add nsw i32 %a, -22, !dbg !37
-  ret i32 %sub, !dbg !38
-}
-
-; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
-define range(i32 -2147483644, -2147483648) i32 @function3_copy2(i32 noundef %a) local_unnamed_addr #0 !dbg !39 {
-entry:
-    #dbg_value(i32 %a, !41, !DIExpression(), !43)
-    #dbg_value(i32 %a, !42, !DIExpression(DW_OP_plus_uconst, 3, DW_OP_stack_value), !43)
-  %add1 = add nsw i32 %a, 4, !dbg !44
-  ret i32 %add1, !dbg !45
-}
-
-; Function Attrs: minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none)
-define range(i32 -2147483648, 2147483626) i32 @function2_copy2(i32 noundef %a) local_unnamed_addr #0 !dbg !46 {
-entry:
-    #dbg_value(i32 %a, !48, !DIExpression(), !50)
-  %sub = add nsw i32 %a, -22, !dbg !51
-    #dbg_value(i32 %sub, !49, !DIExpression(), !50)
-  ret i32 %sub, !dbg !52
-}
-
-; Function Attrs: minsize mustprogress norecurse nounwind optsize ssp
-define noundef i32 @main() local_unnamed_addr #2 !dbg !53 {
-entry:
-  %e = alloca %struct.length_error, align 1
-    #dbg_value(i32 0, !57, !DIExpression(), !73)
-  %call = tail call i32 @function2_copy2(i32 noundef 3) #4, !dbg !74
-    #dbg_value(i32 %call, !57, !DIExpression(), !73)
-  %call1 = tail call i32 @function3_copy2(i32 noundef 41) #4, !dbg !75
-  %add2 = add nsw i32 %call1, %call, !dbg !76
-    #dbg_value(i32 %add2, !57, !DIExpression(), !73)
-  %call3 = tail call i32 @function2_copy1(i32 noundef 11) #4, !dbg !77
-  %add4 = add nsw i32 %add2, %call3, !dbg !78
-    #dbg_value(i32 %add4, !57, !DIExpression(), !73)
-  %call5 = tail call i32 @function1_copy1(i32 noundef 42) #4, !dbg !79
-  %add6 = add nsw i32 %add4, %call5, !dbg !80
-    #dbg_value(i32 %add6, !57, !DIExpression(), !73)
-  call void @llvm.lifetime.start.p0(ptr nonnull %e) #5, !dbg !81
-    #dbg_declare(ptr %e, !58, !DIExpression(), !82)
-  %call7 = call noundef ptr @_ZN12length_errorC1EPKc(ptr noundef nonnull align 1 dereferenceable(1) %e, ptr noundef nonnull @.str) #4, !dbg !82
-  call void @llvm.lifetime.end.p0(ptr nonnull %e) #5, !dbg !83
-  ret i32 %add6, !dbg !84
-}
-
-; Function Attrs: minsize mustprogress noinline nounwind optsize ssp
-define linkonce_odr noundef ptr @_ZN12length_errorC1EPKc(ptr noundef nonnull returned align 1 dereferenceable(1) %this, ptr noundef %s) unnamed_addr #3 !dbg !85 {
-entry:
-    #dbg_value(ptr %this, !87, !DIExpression(), !90)
-    #dbg_value(ptr %s, !89, !DIExpression(), !90)
-  %call = tail call noundef ptr @_ZN12length_errorC2EPKc(ptr noundef nonnull align 1 dereferenceable(1) %this, ptr noundef %s) #4, !dbg !91
-  ret ptr %this, !dbg !92
-}
-
-; Function Attrs: minsize mustprogress noinline nounwind optsize ssp
-define linkonce_odr noundef ptr @_ZN12length_errorC2EPKc(ptr noundef nonnull returned align 1 dereferenceable(1) %this, ptr noundef %s) unnamed_addr #3 !dbg !93 {
-entry:
-    #dbg_value(ptr %this, !95, !DIExpression(), !97)
-    #dbg_value(ptr %s, !96, !DIExpression(), !97)
-  ret ptr %this, !dbg !98
-}
-
-attributes #0 = { minsize mustprogress nofree noinline norecurse nosync nounwind optsize ssp willreturn memory(none) "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+altnzcv,+ccdp,+ccidx,+ccpp,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fptoint,+fullfp16,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+sha3,+specrestrict,+ssbs,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a" }
-attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
-attributes #2 = { minsize mustprogress norecurse nounwind optsize ssp "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+altnzcv,+ccdp,+ccidx,+ccpp,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fptoint,+fullfp16,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+sha3,+specrestrict,+ssbs,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a" }
-attributes #3 = { minsize mustprogress noinline nounwind optsize ssp "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="apple-m1" "target-features"="+aes,+altnzcv,+ccdp,+ccidx,+ccpp,+complxnum,+crc,+dit,+dotprod,+flagm,+fp-armv8,+fp16fml,+fptoint,+fullfp16,+jsconv,+lse,+neon,+pauth,+perfmon,+predres,+ras,+rcpc,+rdm,+sb,+sha2,+sha3,+specrestrict,+ssbs,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8a" }
-attributes #4 = { minsize optsize }
-attributes #5 = { nounwind }
-
-!llvm.dbg.cu = !{!8}
-!llvm.module.flags = !{!11, !12, !13, !14, !15}
-!llvm.ident = !{!16}
-
-!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
-!1 = distinct !DIGlobalVariable(scope: null, file: !2, line: 51, type: !3, isLocal: true, isDefinition: true)
-!2 = !DIFile(filename: "stmt-seq-macho.cpp", directory: "")
-!3 = !DICompositeType(tag: DW_TAG_array_type, baseType: !4, size: 40, elements: !6)
-!4 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !5)
-!5 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char)
-!6 = !{!7}
-!7 = !DISubrange(count: 5)
-!8 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !9, producer: "clang version 22.0.0git (git at github.com:DataCorrupted/llvm-project.git cedce2128dc872a2f1024c9907fd78bdee4b7fe7)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, globals: !10, splitDebugInlining: false, nameTableKind: Apple, sysroot: "/")
-!9 = !DIFile(filename: "stmt-seq-macho.cpp", directory: "/private/tmp/stmt_seq")
-!10 = !{!0}
-!11 = !{i32 7, !"Dwarf Version", i32 4}
-!12 = !{i32 2, !"Debug Info Version", i32 3}
-!13 = !{i32 1, !"wchar_size", i32 4}
-!14 = !{i32 8, !"PIC Level", i32 2}
-!15 = !{i32 7, !"frame-pointer", i32 1}
-!16 = !{!"clang version 22.0.0git (git at github.com:DataCorrupted/llvm-project.git cedce2128dc872a2f1024c9907fd78bdee4b7fe7)"}
-!17 = distinct !DISubprogram(name: "function1_copy1", scope: !2, file: !2, line: 14, type: !18, scopeLine: 14, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !21)
-!18 = !DISubroutineType(types: !19)
-!19 = !{!20, !20}
-!20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
-!21 = !{!22}
-!22 = !DILocalVariable(name: "a", arg: 1, scope: !17, file: !2, line: 14, type: !20)
-!23 = !DILocation(line: 0, scope: !17)
-!24 = !DILocation(line: 15, column: 10, scope: !17)
-!25 = !DILocation(line: 15, column: 3, scope: !17)
-!26 = distinct !DISubprogram(name: "function3_copy1", scope: !2, file: !2, line: 18, type: !18, scopeLine: 18, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !27)
-!27 = !{!28, !29}
-!28 = !DILocalVariable(name: "a", arg: 1, scope: !26, file: !2, line: 18, type: !20)
-!29 = !DILocalVariable(name: "b", scope: !26, file: !2, line: 19, type: !20)
-!30 = !DILocation(line: 0, scope: !26)
-!31 = !DILocation(line: 20, column: 14, scope: !26)
-!32 = !DILocation(line: 20, column: 5, scope: !26)
-!33 = distinct !DISubprogram(name: "function2_copy1", scope: !2, file: !2, line: 23, type: !18, scopeLine: 23, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !34)
-!34 = !{!35}
-!35 = !DILocalVariable(name: "a", arg: 1, scope: !33, file: !2, line: 23, type: !20)
-!36 = !DILocation(line: 0, scope: !33)
-!37 = !DILocation(line: 24, column: 14, scope: !33)
-!38 = !DILocation(line: 24, column: 5, scope: !33)
-!39 = distinct !DISubprogram(name: "function3_copy2", scope: !2, file: !2, line: 27, type: !18, scopeLine: 27, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !40)
-!40 = !{!41, !42}
-!41 = !DILocalVariable(name: "a", arg: 1, scope: !39, file: !2, line: 27, type: !20)
-!42 = !DILocalVariable(name: "b", scope: !39, file: !2, line: 28, type: !20)
-!43 = !DILocation(line: 0, scope: !39)
-!44 = !DILocation(line: 29, column: 14, scope: !39)
-!45 = !DILocation(line: 29, column: 5, scope: !39)
-!46 = distinct !DISubprogram(name: "function2_copy2", scope: !2, file: !2, line: 32, type: !18, scopeLine: 32, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !47)
-!47 = !{!48, !49}
-!48 = !DILocalVariable(name: "a", arg: 1, scope: !46, file: !2, line: 32, type: !20)
-!49 = !DILocalVariable(name: "result", scope: !46, file: !2, line: 33, type: !20)
-!50 = !DILocation(line: 0, scope: !46)
-!51 = !DILocation(line: 33, column: 20, scope: !46)
-!52 = !DILocation(line: 34, column: 5, scope: !46)
-!53 = distinct !DISubprogram(name: "main", scope: !2, file: !2, line: 45, type: !54, scopeLine: 45, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, retainedNodes: !56)
-!54 = !DISubroutineType(types: !55)
-!55 = !{!20}
-!56 = !{!57, !58}
-!57 = !DILocalVariable(name: "sum", scope: !53, file: !2, line: 46, type: !20)
-!58 = !DILocalVariable(name: "e", scope: !53, file: !2, line: 51, type: !59)
-!59 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "length_error", file: !2, line: 41, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !60, identifier: "_ZTS12length_error")
-!60 = !{!61, !69}
-!61 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !59, baseType: !62, extraData: i32 0)
-!62 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "logic_error", file: !2, line: 37, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !63, identifier: "_ZTS11logic_error")
-!63 = !{!64}
-!64 = !DISubprogram(name: "logic_error", scope: !62, file: !2, line: 38, type: !65, scopeLine: 38, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized)
-!65 = !DISubroutineType(types: !66)
-!66 = !{null, !67, !68}
-!67 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !62, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
-!68 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64)
-!69 = !DISubprogram(name: "length_error", scope: !59, file: !2, line: 42, type: !70, scopeLine: 42, flags: DIFlagExplicit | DIFlagPrototyped, spFlags: DISPFlagOptimized)
-!70 = !DISubroutineType(types: !71)
-!71 = !{null, !72, !68}
-!72 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !59, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
-!73 = !DILocation(line: 0, scope: !53)
-!74 = !DILocation(line: 47, column: 12, scope: !53)
-!75 = !DILocation(line: 48, column: 12, scope: !53)
-!76 = !DILocation(line: 48, column: 9, scope: !53)
-!77 = !DILocation(line: 49, column: 12, scope: !53)
-!78 = !DILocation(line: 49, column: 9, scope: !53)
-!79 = !DILocation(line: 50, column: 12, scope: !53)
-!80 = !DILocation(line: 50, column: 9, scope: !53)
-!81 = !DILocation(line: 51, column: 5, scope: !53)
-!82 = !DILocation(line: 51, column: 18, scope: !53)
-!83 = !DILocation(line: 53, column: 1, scope: !53)
-!84 = !DILocation(line: 52, column: 5, scope: !53)
-!85 = distinct !DISubprogram(name: "length_error", linkageName: "_ZN12length_errorC1EPKc", scope: !59, file: !2, line: 42, type: !70, scopeLine: 42, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, declaration: !69, retainedNodes: !86)
-!86 = !{!87, !89}
-!87 = !DILocalVariable(name: "this", arg: 1, scope: !85, type: !88, flags: DIFlagArtificial | DIFlagObjectPointer)
-!88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !59, size: 64)
-!89 = !DILocalVariable(name: "s", arg: 2, scope: !85, file: !2, line: 42, type: !68)
-!90 = !DILocation(line: 0, scope: !85)
-!91 = !DILocation(line: 42, column: 85, scope: !85)
-!92 = !DILocation(line: 42, column: 86, scope: !85)
-!93 = distinct !DISubprogram(name: "length_error", linkageName: "_ZN12length_errorC2EPKc", scope: !59, file: !2, line: 42, type: !70, scopeLine: 42, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !8, declaration: !69, retainedNodes: !94)
-!94 = !{!95, !96}
-!95 = !DILocalVariable(name: "this", arg: 1, scope: !93, type: !88, flags: DIFlagArtificial | DIFlagObjectPointer)
-!96 = !DILocalVariable(name: "s", arg: 2, scope: !93, file: !2, line: 42, type: !68)
-!97 = !DILocation(line: 0, scope: !93)
-!98 = !DILocation(line: 42, column: 86, scope: !93)
diff --git a/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.cpp b/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.cpp
deleted file mode 100644
index 20f85cc43254f..0000000000000
--- a/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#define ATTRIB extern "C" __attribute__((noinline))
-ATTRIB int function1_copy1(int a) {
-  return ++a;
-}
-
-ATTRIB int function3_copy1(int a) {
-    int b = a + 3;
-    return b + 1;
-}
-
-ATTRIB int function2_copy1(int a) {
-    return a - 22;
-}
-
-ATTRIB int function3_copy2(int a) {
-    int b = a + 3;
-    return b + 1;
-}
-
-ATTRIB int function2_copy2(int a) {
-    int result = a - 22;
-    return result;
-}
-
-struct logic_error {
-    logic_error(const char* s) {}
-};
-
-struct length_error : public logic_error {
-    __attribute__((noinline)) explicit length_error(const char* s) : logic_error(s) {}
-};
-
-int main() {
-    int sum = 0;
-    sum += function2_copy2(3);
-    sum += function3_copy2(41);
-    sum += function2_copy1(11);
-    sum += function1_copy1(42);
-    length_error e("test");
-    return sum;
-}
diff --git a/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test b/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test
index b42da261d8879..db223cda43247 100644
--- a/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test
+++ b/llvm/test/tools/dsymutil/ARM/stmt-seq-macho.test
@@ -2,9 +2,7 @@
 
 # RUN: rm -rf %t && split-file %s %t && cd %t
 # RUN: yaml2obj %t/stmt_seq_macho.exe.yaml -o %t/stmt_seq_macho.exe
-# RUN: llvm-dwarfdump --verify %t/stmt_seq_macho.exe
 # RUN: yaml2obj %t/stmt_seq_macho.o.yaml   -o %t/stmt_seq_macho.o
-# RUN: llvm-dwarfdump --verify %t/stmt_seq_macho.o
 # RUN: dsymutil --flat --verify-dwarf=none -oso-prepend-path %t %t/stmt_seq_macho.exe -o %t/stmt_seq_macho.dSYM
 # RUN: llvm-dwarfdump --debug-info --debug-line -v %t/stmt_seq_macho.dSYM | sort | FileCheck %s -check-prefix=CHECK_DSYM
 # RUN: llvm-dwarfdump --debug-info --debug-line -v %t/stmt_seq_macho.dSYM > %t/stmt_seq_macho.dSYM.txt

>From 41a9fbf0b85bce51108ad90f17c39837aa7a1894 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Mon, 18 Aug 2025 10:29:20 -0700
Subject: [PATCH 07/13] address comments

---
 llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp          | 6 ++----
 llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml | 4 +---
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
index 16b1b0869ffbf..b433faf15ce20 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
@@ -918,10 +918,8 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
                                [](const auto &Sequence, const uint64_t Offset) {
                                  return Sequence.StmtSeqOffset < Offset;
                                });
-    if (it != LineTable->Sequences.end() &&
-        it->StmtSeqOffset == *SectionOffset) {
-      ValidSequenceOffset = true;
-    }
+    ValidSequenceOffset =
+        it != LineTable->Sequences.end() && it->StmtSeqOffset == *SectionOffset;
 
     if (!ValidSequenceOffset)
       ReportError(
diff --git a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
index 271fd3c9517f2..a8ead5983bf57 100644
--- a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
+++ b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
@@ -3,7 +3,7 @@
 # I hope there are easier ways to construct tests like this.
 
 # RUN: yaml2obj %p/Inputs/verify_stmt_seq.yaml -o verify_stmt_seq.o
-# RUN: not llvm-dwarfdump -verify -debug-info verify_stmt_seq.o | FileCheck %s --check-prefix=CHECK_INVALID
+# RUN: not llvm-dwarfdump -verify -debug-info verify_stmt_seq.o | FileCheck %s --check-prefix=CHECK_INVALID --implicit-check-not=error:
 
 
 # CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset 0x00000000 is not within the line table bounds [0x0000002e, 0x000000fd)
@@ -23,5 +23,3 @@
 # CHECK_INVALID-NEXT: error: DW_AT_LLVM_stmt_sequence offset out of line table bounds occurred 1 time(s).
 # CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence encoding occurred 1 time(s).
 # CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence offset occurred 1 time(s).
-
-# CHECK_INVALID-NOT: error:

>From dc053bca8ad47e2b4e7abab350654470a9a8f5e9 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Wed, 20 Aug 2025 17:22:37 -0700
Subject: [PATCH 08/13] Address comments

---
 llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp    |   44 +-
 .../Inputs/verify_stmt_seq.yaml               | 1600 ----------------
 .../tools/llvm-dwarfdump/verify_stmt_seq.yaml | 1603 ++++++++++++++++-
 3 files changed, 1637 insertions(+), 1610 deletions(-)
 delete mode 100644 llvm/test/tools/llvm-dwarfdump/Inputs/verify_stmt_seq.yaml

diff --git a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
index b433faf15ce20..e654f229d0873 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
@@ -887,16 +887,14 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
       break;
     }
 
+    const int8_t DwarfOffset =
+        LineTable->Prologue.getFormParams().getDwarfOffsetByteSize();
     // Calculate the bounds of this specific line table
     uint64_t LineTableStart = *StmtListOffset;
     uint64_t PrologueLength = LineTable->Prologue.PrologueLength;
     uint64_t TotalLength = LineTable->Prologue.TotalLength;
-    uint64_t LineTableEnd =
-        LineTableStart + TotalLength +
-        (LineTable->Prologue.getFormParams().Format == dwarf::DWARF64 ? 12 : 4);
-    uint64_t SequencesStart =
-        LineTableStart + PrologueLength +
-        (LineTable->Prologue.getFormParams().Format == dwarf::DWARF64 ? 12 : 4);
+    uint64_t LineTableEnd = LineTableStart + TotalLength + DwarfOffset;
+    uint64_t SequencesStart = LineTableStart + PrologueLength + DwarfOffset;
 
     // Check if the offset is within the bounds of this specific line table
     if (*SectionOffset < SequencesStart || *SectionOffset >= LineTableEnd) {
@@ -913,13 +911,41 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
     bool ValidSequenceOffset = false;
     // Check if the offset matches any of the sequence offset offsets using
     // binary search
-    auto it = std::lower_bound(LineTable->Sequences.begin(),
+    auto It = std::lower_bound(LineTable->Sequences.begin(),
                                LineTable->Sequences.end(), *SectionOffset,
                                [](const auto &Sequence, const uint64_t Offset) {
                                  return Sequence.StmtSeqOffset < Offset;
                                });
-    ValidSequenceOffset =
-        it != LineTable->Sequences.end() && it->StmtSeqOffset == *SectionOffset;
+
+    if (It == LineTable->Sequences.end()) {
+      ReportError("DW_AT_LLVM_stmt_sequence offset sequence not found",
+                  "There is no line table sequences that contains the offset" +
+                      llvm::formatv("{0:x8}", *SectionOffset));
+      break;
+    }
+
+    ValidSequenceOffset = It->StmtSeqOffset == *SectionOffset;
+    if (!ValidSequenceOffset) {
+      // Go over all Rows in this Section (It) and make sure that the
+      // previous Row of the SectionOffset is EndSequence
+      for (unsigned RowIdx = It->FirstRowIndex; RowIdx < It->LastRowIndex;
+           ++RowIdx) {
+        const auto &CurrentRow = LineTable->Rows[RowIdx];
+
+        auto IsPrevRowEndSequence = [&](unsigned RowIdx) {
+          // There is no previous row in the first place.
+          return RowIdx != 0 && LineTable->Rows[RowIdx - 1].EndSequence;
+        };
+
+        // Check if current row's address matches our section offset
+        // and if the previous row has EndSequence set
+        if (CurrentRow.Address.Address == *SectionOffset &&
+            IsPrevRowEndSequence(RowIdx)) {
+          ValidSequenceOffset = true;
+          break;
+        }
+      }
+    }
 
     if (!ValidSequenceOffset)
       ReportError(
diff --git a/llvm/test/tools/llvm-dwarfdump/Inputs/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/Inputs/verify_stmt_seq.yaml
deleted file mode 100644
index a3d79613613fe..0000000000000
--- a/llvm/test/tools/llvm-dwarfdump/Inputs/verify_stmt_seq.yaml
+++ /dev/null
@@ -1,1600 +0,0 @@
---- !mach-o
-IsLittleEndian: true
-FileHeader:
-  magic:           0xFEEDFACF
-  cputype:         0x100000C
-  cpusubtype:      0x0
-  filetype:        0x1
-  ncmds:           5
-  sizeofcmds:      1176
-  flags:           0x2000
-  reserved:        0x0
-LoadCommands:
-  - cmd:             LC_SEGMENT_64
-    cmdsize:         1032
-    segname:         ''
-    vmaddr:          0
-    vmsize:          3125
-    fileoff:         1208
-    filesize:        3125
-    maxprot:         7
-    initprot:        7
-    nsects:          12
-    flags:           0
-    Sections:
-      - sectname:        __text
-        segname:         __TEXT
-        addr:            0x0
-        size:            148
-        offset:          0x4B8
-        align:           2
-        reloff:          0x10F0
-        nreloc:          8
-        flags:           0x80000400
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         00040011C0035FD600100011C0035FD600580051C0035FD600100011C0035FD600580051C0035FD6FFC300D1F44F01A9FD7B02A9FD8300916000805200000094F30300AA20058052000000941400130B6001805200000094F30300AA40058052000000947302000B0100009021000091E03F0091000000948002130BFD7B42A9F44F41A9FFC30091C0035FD600000014C0035FD6
-        relocations:
-          - address:         0x8C
-            symbolnum:       4
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x74
-            symbolnum:       3
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x6C
-            symbolnum:       1
-            pcrel:           false
-            length:          2
-            extern:          true
-            type:            4
-            scattered:       false
-            value:           0
-          - address:         0x68
-            symbolnum:       1
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            3
-            scattered:       false
-            value:           0
-          - address:         0x60
-            symbolnum:       5
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x54
-            symbolnum:       6
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x48
-            symbolnum:       9
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-          - address:         0x3C
-            symbolnum:       7
-            pcrel:           true
-            length:          2
-            extern:          true
-            type:            2
-            scattered:       false
-            value:           0
-      - sectname:        __cstring
-        segname:         __TEXT
-        addr:            0x94
-        size:            5
-        offset:          0x54C
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         '7465737400'
-      - sectname:        __debug_loc
-        segname:         __DWARF
-        addr:            0x99
-        size:            412
-        offset:          0x551
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         08000000000000000C000000000000000100500C0000000000000010000000000000000400A301509F0000000000000000000000000000000008000000000000000C00000000000000030070039F0000000000000000000000000000000010000000000000001400000000000000010050140000000000000018000000000000000400A301509F0000000000000000000000000000000018000000000000001C000000000000000100501C0000000000000020000000000000000400A301509F0000000000000000000000000000000018000000000000001C00000000000000030070039F0000000000000000000000000000000020000000000000002400000000000000010050240000000000000028000000000000000400A301509F00000000000000000000000000000000240000000000000028000000000000000100500000000000000000000000000000000038000000000000004400000000000000030011009F4400000000000000500000000000000001006350000000000000005C0000000000000001006400000000000000000000000000000000
-      - sectname:        __debug_abbrev
-        segname:         __DWARF
-        addr:            0x235
-        size:            372
-        offset:          0x6ED
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-      - sectname:        __debug_info
-        segname:         __DWARF
-        addr:            0x3A9
-        size:            747
-        offset:          0x861
-        align:           0
-        reloff:          0x1130
-        nreloc:          16
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        relocations:
-          - address:         0x2A7
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x28E
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x253
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1F5
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1E1
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1CE
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1BA
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x1A7
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x169
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x12D
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xF1
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xC4
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x88
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x5F
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x37
-            symbolnum:       2
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x22
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-      - sectname:        __debug_str
-        segname:         __DWARF
-        addr:            0x694
-        size:            400
-        offset:          0xB4C
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-      - sectname:        __apple_names
-        segname:         __DWARF
-        addr:            0x824
-        size:            288
-        offset:          0xCDC
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         485341480100000009000000090000000C00000000000000010000000100060000000000FFFFFFFFFFFFFFFF0100000003000000040000000600000007000000080000004A08311CC78E3C8288CB36CF89CB36CFD1125E53522B705390D9F86F6A7F9A7C4908311C8C0000009C000000AC000000BC000000CC000000DC000000EC00000000010000100100000601000001000000F000000000000000D6000000010000005E00000000000000F600000001000000C30000000000000016010000010000002C01000000000000440100000100000052020000000000005C01000001000000A6020000000000002B0100000200000052020000A60200000000000026010000010000006801000000000000E6000000010000008700000000000000
-      - sectname:        __apple_objc
-        segname:         __DWARF
-        addr:            0x944
-        size:            36
-        offset:          0xDFC
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
-      - sectname:        __apple_namespac
-        segname:         __DWARF
-        addr:            0x968
-        size:            36
-        offset:          0xE20
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
-      - sectname:        __apple_types
-        segname:         __DWARF
-        addr:            0x98C
-        size:            195
-        offset:          0xE44
-        align:           0
-        reloff:          0x0
-        nreloc:          0
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         48534148010000000500000005000000140000000000000003000000010006000300050004000B000000000002000000FFFFFFFF03000000040000007CA8F05D90D9F86F5B738CDC3080880B6320957C64000000770000008A0000009D000000B0000000380100000100000027020000130000000000002B010000010000000502000013000000000000C20000000100000057000000240000000000007401000001000000DE02000024000000000000BD000000010000005000000024000000000000
-      - sectname:        __debug_frame
-        segname:         __DWARF
-        addr:            0xA50
-        size:            232
-        offset:          0xF08
-        align:           3
-        reloff:          0x11B0
-        nreloc:          8
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        content:         14000000FFFFFFFF0400080001781E0C1F00000000000000140000000000000000000000000000000800000000000000140000000000000008000000000000000800000000000000140000000000000010000000000000000800000000000000140000000000000018000000000000000800000000000000140000000000000020000000000000000800000000000000240000000000000028000000000000006400000000000000500C1D109E019D02930394040000000014000000000000008C000000000000000400000000000000140000000000000090000000000000000400000000000000
-        relocations:
-          - address:         0xD8
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xC0
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x98
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x80
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x68
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x50
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x38
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x20
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-      - sectname:        __debug_line
-        segname:         __DWARF
-        addr:            0xB38
-        size:            253
-        offset:          0xFF0
-        align:           0
-        reloff:          0x11F0
-        nreloc:          8
-        flags:           0x2000000
-        reserved1:       0x0
-        reserved2:       0x0
-        reserved3:       0x0
-        relocations:
-          - address:         0xED
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xD9
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0xAA
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x96
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x7E
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x66
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x50
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-          - address:         0x3A
-            symbolnum:       1
-            pcrel:           false
-            length:          3
-            extern:          false
-            type:            0
-            scattered:       false
-            value:           0
-  - cmd:             LC_BUILD_VERSION
-    cmdsize:         24
-    platform:        1
-    minos:           720896
-    sdk:             0
-    ntools:          0
-  - cmd:             LC_LINKER_OPTIMIZATION_HINT
-    cmdsize:         16
-    dataoff:         4656
-    datasize:        8
-  - cmd:             LC_SYMTAB
-    cmdsize:         24
-    symoff:          4664
-    nsyms:           11
-    stroff:          4840
-    strsize:         168
-  - cmd:             LC_DYSYMTAB
-    cmdsize:         80
-    ilocalsym:       0
-    nlocalsym:       3
-    iextdefsym:      3
-    nextdefsym:      8
-    iundefsym:       11
-    nundefsym:       0
-    tocoff:          0
-    ntoc:            0
-    modtaboff:       0
-    nmodtab:         0
-    extrefsymoff:    0
-    nextrefsyms:     0
-    indirectsymoff:  0
-    nindirectsyms:   0
-    extreloff:       0
-    nextrel:         0
-    locreloff:       0
-    nlocrel:         0
-LinkEditData:
-  NameList:
-    - n_strx:          155
-      n_type:          0xE
-      n_sect:          1
-      n_desc:          0
-      n_value:         0
-    - n_strx:          1
-      n_type:          0xE
-      n_sect:          2
-      n_desc:          0
-      n_value:         148
-    - n_strx:          149
-      n_type:          0xE
-      n_sect:          2
-      n_desc:          0
-      n_value:         148
-    - n_strx:          39
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          192
-      n_value:         140
-    - n_strx:          14
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          192
-      n_value:         144
-    - n_strx:          132
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         0
-    - n_strx:          115
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         16
-    - n_strx:          81
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         32
-    - n_strx:          98
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         8
-    - n_strx:          64
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         24
-    - n_strx:          8
-      n_type:          0xF
-      n_sect:          1
-      n_desc:          0
-      n_value:         40
-  StringTable:
-    - ''
-    - l_.str
-    - _main
-    - __ZN12length_errorC2EPKc
-    - __ZN12length_errorC1EPKc
-    - _function3_copy2
-    - _function2_copy2
-    - _function3_copy1
-    - _function2_copy1
-    - _function1_copy1
-    - ltmp1
-    - ltmp0
-    - ''
-    - ''
-    - ''
-    - ''
-    - ''
-    - ''
-    - ''
-DWARF:
-  debug_str:
-    - 'Facebook clang version 19.1.5 (https://git.internal.tfbnw.net/repos/git/rw/osmeta/external/llvm-project b36c9ae1f8f2b39e4aafb9ca4700c608c3036365)'
-    - stmt_seq_macho.cpp
-    - '/'
-    - '/private/tmp/stmt_seq'
-    - char
-    - __ARRAY_SIZE_TYPE__
-    - function1_copy1
-    - function3_copy1
-    - function2_copy1
-    - function3_copy2
-    - function2_copy2
-    - main
-    - length_error
-    - logic_error
-    - _ZN12length_errorC1EPKc
-    - _ZN12length_errorC2EPKc
-    - int
-    - a
-    - b
-    - result
-    - e
-    - sum
-    - this
-    - s
-  debug_abbrev:
-    - ID:              0
-      Table:
-        - Code:            0x1
-          Tag:             DW_TAG_compile_unit
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_producer
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_language
-              Form:            DW_FORM_data2
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_LLVM_sysroot
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_stmt_list
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_comp_dir
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_low_pc
-              Form:            DW_FORM_addr
-            - Attribute:       DW_AT_high_pc
-              Form:            DW_FORM_data4
-        - Code:            0x2
-          Tag:             DW_TAG_variable
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-        - Code:            0x3
-          Tag:             DW_TAG_array_type
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x4
-          Tag:             DW_TAG_subrange_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_count
-              Form:            DW_FORM_data1
-        - Code:            0x5
-          Tag:             DW_TAG_const_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x6
-          Tag:             DW_TAG_base_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_encoding
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_byte_size
-              Form:            DW_FORM_data1
-        - Code:            0x7
-          Tag:             DW_TAG_base_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_byte_size
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_encoding
-              Form:            DW_FORM_data1
-        - Code:            0x8
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_low_pc
-              Form:            DW_FORM_addr
-            - Attribute:       DW_AT_high_pc
-              Form:            DW_FORM_data4
-            - Attribute:       DW_AT_APPLE_omit_frame_ptr
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_LLVM_stmt_sequence
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_frame_base
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_call_all_calls
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_external
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-        - Code:            0x9
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0xA
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0xB
-          Tag:             DW_TAG_variable
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0xC
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_low_pc
-              Form:            DW_FORM_addr
-            - Attribute:       DW_AT_high_pc
-              Form:            DW_FORM_data4
-            - Attribute:       DW_AT_LLVM_stmt_sequence
-              Form:            DW_FORM_data4
-            - Attribute:       DW_AT_frame_base
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_call_all_calls
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_external
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-        - Code:            0xD
-          Tag:             DW_TAG_variable
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0xE
-          Tag:             DW_TAG_call_site
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_call_origin
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_call_return_pc
-              Form:            DW_FORM_addr
-        - Code:            0xF
-          Tag:             DW_TAG_call_site_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_call_value
-              Form:            DW_FORM_exprloc
-        - Code:            0x10
-          Tag:             DW_TAG_structure_type
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_calling_convention
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_byte_size
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-        - Code:            0x11
-          Tag:             DW_TAG_inheritance
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_data_member_location
-              Form:            DW_FORM_data1
-        - Code:            0x12
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_declaration
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_external
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_explicit
-              Form:            DW_FORM_flag_present
-        - Code:            0x13
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_artificial
-              Form:            DW_FORM_flag_present
-        - Code:            0x14
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x15
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_declaration
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_external
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_APPLE_optimized
-              Form:            DW_FORM_flag_present
-        - Code:            0x16
-          Tag:             DW_TAG_pointer_type
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x17
-          Tag:             DW_TAG_subprogram
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_low_pc
-              Form:            DW_FORM_addr
-            - Attribute:       DW_AT_high_pc
-              Form:            DW_FORM_data4
-            - Attribute:       DW_AT_APPLE_omit_frame_ptr
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_LLVM_stmt_sequence
-              Form:            DW_FORM_sec_offset
-            - Attribute:       DW_AT_frame_base
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_object_pointer
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_call_all_calls
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_linkage_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_specification
-              Form:            DW_FORM_ref4
-        - Code:            0x18
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_artificial
-              Form:            DW_FORM_flag_present
-        - Code:            0x19
-          Tag:             DW_TAG_formal_parameter
-          Children:        DW_CHILDREN_no
-          Attributes:
-            - Attribute:       DW_AT_location
-              Form:            DW_FORM_exprloc
-            - Attribute:       DW_AT_name
-              Form:            DW_FORM_strp
-            - Attribute:       DW_AT_decl_file
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_decl_line
-              Form:            DW_FORM_data1
-            - Attribute:       DW_AT_type
-              Form:            DW_FORM_ref4
-        - Code:            0x1A
-          Tag:             DW_TAG_call_site
-          Children:        DW_CHILDREN_yes
-          Attributes:
-            - Attribute:       DW_AT_call_origin
-              Form:            DW_FORM_ref4
-            - Attribute:       DW_AT_call_tail_call
-              Form:            DW_FORM_flag_present
-            - Attribute:       DW_AT_call_pc
-              Form:            DW_FORM_addr
-  debug_info:
-    - Length:          0x2E7
-      Version:         4
-      AbbrevTableID:   0
-      AbbrOffset:      0x0
-      AddrSize:        8
-      Entries:
-        - AbbrCode:        0x1
-          Values:
-            - Value:           0x0
-            - Value:           0x21
-            - Value:           0x92
-            - Value:           0xA5
-            - Value:           0x0
-            - Value:           0xA7
-            - Value:           0x1
-            - Value:           0x0
-            - Value:           0x94
-        - AbbrCode:        0x2
-          Values:
-            - Value:           0x3F
-            - Value:           0x1
-            - Value:           0x27
-            - Value:           0x9
-              BlockData:       [ 0x3, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-                                 0x0 ]
-        - AbbrCode:        0x3
-          Values:
-            - Value:           0x4B
-        - AbbrCode:        0x4
-          Values:
-            - Value:           0x57
-            - Value:           0x5
-        - AbbrCode:        0x0
-        - AbbrCode:        0x5
-          Values:
-            - Value:           0x50
-        - AbbrCode:        0x6
-          Values:
-            - Value:           0xBD
-            - Value:           0x6
-            - Value:           0x1
-        - AbbrCode:        0x7
-          Values:
-            - Value:           0xC2
-            - Value:           0x8
-            - Value:           0x7
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x0
-            - Value:           0x8
-            - Value:           0x1
-            - BlockData:       [ 0x6F ]
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0xD6
-            - Value:           0x1
-            - Value:           0x2
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0x9
-          Values:
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0x2
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x8
-            - Value:           0x8
-            - Value:           0x1
-            - Value:           0x4A
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0xE6
-            - Value:           0x1
-            - Value:           0x6
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xA
-          Values:
-            - Value:           0x0
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0x6
-            - Value:           0x2DE
-        - AbbrCode:        0xB
-          Values:
-            - Value:           0x39
-            - Value:           0x17A
-            - Value:           0x1
-            - Value:           0x7
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x10
-            - Value:           0x8
-            - Value:           0x1
-            - Value:           0x60
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0xF6
-            - Value:           0x1
-            - Value:           0xB
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xA
-          Values:
-            - Value:           0x5E
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0xB
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x18
-            - Value:           0x8
-            - Value:           0x1
-            - Value:           0x78
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0x106
-            - Value:           0x1
-            - Value:           0xF
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xA
-          Values:
-            - Value:           0x97
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0xF
-            - Value:           0x2DE
-        - AbbrCode:        0xB
-          Values:
-            - Value:           0xD0
-            - Value:           0x17A
-            - Value:           0x1
-            - Value:           0x10
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0x8
-          Values:
-            - Value:           0x20
-            - Value:           0x8
-            - Value:           0x1
-            - Value:           0x90
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x1
-            - Value:           0x116
-            - Value:           0x1
-            - Value:           0x14
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xA
-          Values:
-            - Value:           0xF5
-            - Value:           0x178
-            - Value:           0x1
-            - Value:           0x14
-            - Value:           0x2DE
-        - AbbrCode:        0xB
-          Values:
-            - Value:           0x12E
-            - Value:           0x17C
-            - Value:           0x1
-            - Value:           0x15
-            - Value:           0x2DE
-        - AbbrCode:        0x0
-        - AbbrCode:        0xC
-          Values:
-            - Value:           0x28
-            - Value:           0x64
-            - Value:           0xA7
-            - Value:           0x1
-              BlockData:       [ 0x6D ]
-            - Value:           0x1
-            - Value:           0x126
-            - Value:           0x1
-            - Value:           0x21
-            - Value:           0x2DE
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0xD
-          Values:
-            - Value:           0x2
-              BlockData:       [ 0x8F, 0xF ]
-            - Value:           0x183
-            - Value:           0x1
-            - Value:           0x27
-            - Value:           0x205
-        - AbbrCode:        0xB
-          Values:
-            - Value:           0x151
-            - Value:           0x185
-            - Value:           0x1
-            - Value:           0x22
-            - Value:           0x2DE
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0x12C
-            - Value:           0x40
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x1
-              BlockData:       [ 0x33 ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0xF0
-            - Value:           0x4C
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x2
-              BlockData:       [ 0x10, 0x29 ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0xC3
-            - Value:           0x58
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x1
-              BlockData:       [ 0x3B ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0x5E
-            - Value:           0x64
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x2
-              BlockData:       [ 0x10, 0x2A ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0xE
-          Values:
-            - Value:           0x252
-            - Value:           0x78
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x2
-              BlockData:       [ 0x8F, 0xF ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0x0
-        - AbbrCode:        0x10
-          Values:
-            - Value:           0x5
-            - Value:           0x12B
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x1D
-        - AbbrCode:        0x11
-          Values:
-            - Value:           0x227
-            - Value:           0x0
-        - AbbrCode:        0x12
-          Values:
-            - Value:           0x12B
-            - Value:           0x1
-            - Value:           0x1E
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0x13
-          Values:
-            - Value:           0x24D
-            - Value:           0x1
-        - AbbrCode:        0x14
-          Values:
-            - Value:           0x248
-        - AbbrCode:        0x0
-        - AbbrCode:        0x0
-        - AbbrCode:        0x10
-          Values:
-            - Value:           0x5
-            - Value:           0x138
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x19
-        - AbbrCode:        0x15
-          Values:
-            - Value:           0x138
-            - Value:           0x1
-            - Value:           0x1A
-            - Value:           0x1
-            - Value:           0x1
-            - Value:           0x1
-        - AbbrCode:        0x13
-          Values:
-            - Value:           0x243
-            - Value:           0x1
-        - AbbrCode:        0x14
-          Values:
-            - Value:           0x248
-        - AbbrCode:        0x0
-        - AbbrCode:        0x0
-        - AbbrCode:        0x16
-          Values:
-            - Value:           0x227
-        - AbbrCode:        0x16
-          Values:
-            - Value:           0x4B
-        - AbbrCode:        0x16
-          Values:
-            - Value:           0x205
-        - AbbrCode:        0x17
-          Values:
-            - Value:           0x8C
-            - Value:           0x4
-            - Value:           0x1
-            - Value:           0xAB
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x271
-            - Value:           0x1
-            - Value:           0x144
-            - Value:           0x214
-        - AbbrCode:        0x18
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x189
-            - Value:           0x2E5
-            - Value:           0x1
-        - AbbrCode:        0x19
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x51 ]
-            - Value:           0x18E
-            - Value:           0x1
-            - Value:           0x1E
-            - Value:           0x248
-        - AbbrCode:        0x1A
-          Values:
-            - Value:           0x2A6
-            - Value:           0x1
-            - Value:           0x8C
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x3
-              BlockData:       [ 0xA3, 0x1, 0x50 ]
-        - AbbrCode:        0xF
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x51 ]
-            - Value:           0x3
-              BlockData:       [ 0xA3, 0x1, 0x51 ]
-        - AbbrCode:        0x0
-        - AbbrCode:        0x0
-        - AbbrCode:        0x17
-          Values:
-            - Value:           0x90
-            - Value:           0x4
-            - Value:           0x1
-            - Value:           0xEEEEE7
-            - Value:           0x1
-              BlockData:       [ 0x6F ]
-            - Value:           0x2C5
-            - Value:           0x1
-            - Value:           0x15C
-            - Value:           0x214
-        - AbbrCode:        0x18
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x50 ]
-            - Value:           0x189
-            - Value:           0x2E5
-            - Value:           0x1
-        - AbbrCode:        0x19
-          Values:
-            - Value:           0x1
-              BlockData:       [ 0x51 ]
-            - Value:           0x18E
-            - Value:           0x1
-            - Value:           0x1E
-            - Value:           0x248
-        - AbbrCode:        0x0
-        - AbbrCode:        0x6
-          Values:
-            - Value:           0x174
-            - Value:           0x5
-            - Value:           0x4
-        - AbbrCode:        0x16
-          Values:
-            - Value:           0x205
-        - AbbrCode:        0x0
-  debug_line:
-    - Length:          249
-      Version:         4
-      PrologueLength:  42
-      MinInstLength:   1
-      MaxOpsPerInst:   1
-      DefaultIsStmt:   1
-      LineBase:        251
-      LineRange:       14
-      OpcodeBase:      13
-      StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
-      Files:
-        - Name:            stmt_seq_macho.cpp
-          DirIdx:          0
-          ModTime:         0
-          Length:          0
-      Opcodes:
-        - Opcode:          DW_LNS_set_column
-          Data:            10
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            0
-        - Opcode:          0x14
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            3
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4A
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            14
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            8
-        - Opcode:          0x19
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4A
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            14
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            16
-        - Opcode:          DW_LNS_advance_line
-          SData:           11
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4A
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            14
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            24
-        - Opcode:          DW_LNS_advance_line
-          SData:           16
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4A
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            20
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            32
-        - Opcode:          DW_LNS_advance_line
-          SData:           20
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          0x4B
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            40
-        - Opcode:          DW_LNS_advance_line
-          SData:           32
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            12
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          0xF4
-          Data:            0
-        - Opcode:          0xBB
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            9
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x82
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            12
-        - Opcode:          DW_LNS_negate_stmt
-          Data:            0
-        - Opcode:          0x4B
-          Data:            0
-        - Opcode:          0xBB
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            9
-        - Opcode:          0x81
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            18
-        - Opcode:          0x4C
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            9
-        - Opcode:          0xF1
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            5
-        - Opcode:          DW_LNS_set_epilogue_begin
-          Data:            0
-        - Opcode:          0x4C
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            85
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            140
-        - Opcode:          DW_LNS_advance_line
-          SData:           29
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-        - Opcode:          DW_LNS_set_column
-          Data:            86
-        - Opcode:          DW_LNS_set_prologue_end
-          Data:            0
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          9
-          SubOpcode:       DW_LNE_set_address
-          Data:            144
-        - Opcode:          DW_LNS_advance_line
-          SData:           29
-          Data:            0
-        - Opcode:          DW_LNS_copy
-          Data:            0
-        - Opcode:          DW_LNS_advance_pc
-          Data:            4
-        - Opcode:          DW_LNS_extended_op
-          ExtLen:          1
-          SubOpcode:       DW_LNE_end_sequence
-          Data:            0
-...
diff --git a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
index a8ead5983bf57..dea4d904c1d9f 100644
--- a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
+++ b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
@@ -2,7 +2,7 @@
 # Then manually tempered with some of the value of the attribute
 # I hope there are easier ways to construct tests like this.
 
-# RUN: yaml2obj %p/Inputs/verify_stmt_seq.yaml -o verify_stmt_seq.o
+# RUN: yaml2obj %s -o verify_stmt_seq.o
 # RUN: not llvm-dwarfdump -verify -debug-info verify_stmt_seq.o | FileCheck %s --check-prefix=CHECK_INVALID --implicit-check-not=error:
 
 
@@ -23,3 +23,1604 @@
 # CHECK_INVALID-NEXT: error: DW_AT_LLVM_stmt_sequence offset out of line table bounds occurred 1 time(s).
 # CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence encoding occurred 1 time(s).
 # CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence offset occurred 1 time(s).
+
+--- !mach-o
+IsLittleEndian: true
+FileHeader:
+  magic:           0xFEEDFACF
+  cputype:         0x100000C
+  cpusubtype:      0x0
+  filetype:        0x1
+  ncmds:           5
+  sizeofcmds:      1176
+  flags:           0x2000
+  reserved:        0x0
+LoadCommands:
+  - cmd:             LC_SEGMENT_64
+    cmdsize:         1032
+    segname:         ''
+    vmaddr:          0
+    vmsize:          3125
+    fileoff:         1208
+    filesize:        3125
+    maxprot:         7
+    initprot:        7
+    nsects:          12
+    flags:           0
+    Sections:
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0
+        size:            148
+        offset:          0x4B8
+        align:           2
+        reloff:          0x10F0
+        nreloc:          8
+        flags:           0x80000400
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         00040011C0035FD600100011C0035FD600580051C0035FD600100011C0035FD600580051C0035FD6FFC300D1F44F01A9FD7B02A9FD8300916000805200000094F30300AA20058052000000941400130B6001805200000094F30300AA40058052000000947302000B0100009021000091E03F0091000000948002130BFD7B42A9F44F41A9FFC30091C0035FD600000014C0035FD6
+        relocations:
+          - address:         0x8C
+            symbolnum:       4
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x74
+            symbolnum:       3
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x6C
+            symbolnum:       1
+            pcrel:           false
+            length:          2
+            extern:          true
+            type:            4
+            scattered:       false
+            value:           0
+          - address:         0x68
+            symbolnum:       1
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            3
+            scattered:       false
+            value:           0
+          - address:         0x60
+            symbolnum:       5
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x54
+            symbolnum:       6
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x48
+            symbolnum:       9
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+          - address:         0x3C
+            symbolnum:       7
+            pcrel:           true
+            length:          2
+            extern:          true
+            type:            2
+            scattered:       false
+            value:           0
+      - sectname:        __cstring
+        segname:         __TEXT
+        addr:            0x94
+        size:            5
+        offset:          0x54C
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         '7465737400'
+      - sectname:        __debug_loc
+        segname:         __DWARF
+        addr:            0x99
+        size:            412
+        offset:          0x551
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         08000000000000000C000000000000000100500C0000000000000010000000000000000400A301509F0000000000000000000000000000000008000000000000000C00000000000000030070039F0000000000000000000000000000000010000000000000001400000000000000010050140000000000000018000000000000000400A301509F0000000000000000000000000000000018000000000000001C000000000000000100501C0000000000000020000000000000000400A301509F0000000000000000000000000000000018000000000000001C00000000000000030070039F0000000000000000000000000000000020000000000000002400000000000000010050240000000000000028000000000000000400A301509F00000000000000000000000000000000240000000000000028000000000000000100500000000000000000000000000000000038000000000000004400000000000000030011009F4400000000000000500000000000000001006350000000000000005C0000000000000001006400000000000000000000000000000000
+      - sectname:        __debug_abbrev
+        segname:         __DWARF
+        addr:            0x235
+        size:            372
+        offset:          0x6ED
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+      - sectname:        __debug_info
+        segname:         __DWARF
+        addr:            0x3A9
+        size:            747
+        offset:          0x861
+        align:           0
+        reloff:          0x1130
+        nreloc:          16
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        relocations:
+          - address:         0x2A7
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x28E
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x253
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1F5
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1E1
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1CE
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1BA
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x1A7
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x169
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x12D
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xF1
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xC4
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x88
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x5F
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x37
+            symbolnum:       2
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x22
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+      - sectname:        __debug_str
+        segname:         __DWARF
+        addr:            0x694
+        size:            400
+        offset:          0xB4C
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+      - sectname:        __apple_names
+        segname:         __DWARF
+        addr:            0x824
+        size:            288
+        offset:          0xCDC
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000009000000090000000C00000000000000010000000100060000000000FFFFFFFFFFFFFFFF0100000003000000040000000600000007000000080000004A08311CC78E3C8288CB36CF89CB36CFD1125E53522B705390D9F86F6A7F9A7C4908311C8C0000009C000000AC000000BC000000CC000000DC000000EC00000000010000100100000601000001000000F000000000000000D6000000010000005E00000000000000F600000001000000C30000000000000016010000010000002C01000000000000440100000100000052020000000000005C01000001000000A6020000000000002B0100000200000052020000A60200000000000026010000010000006801000000000000E6000000010000008700000000000000
+      - sectname:        __apple_objc
+        segname:         __DWARF
+        addr:            0x944
+        size:            36
+        offset:          0xDFC
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
+      - sectname:        __apple_namespac
+        segname:         __DWARF
+        addr:            0x968
+        size:            36
+        offset:          0xE20
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         485341480100000001000000000000000C000000000000000100000001000600FFFFFFFF
+      - sectname:        __apple_types
+        segname:         __DWARF
+        addr:            0x98C
+        size:            195
+        offset:          0xE44
+        align:           0
+        reloff:          0x0
+        nreloc:          0
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         48534148010000000500000005000000140000000000000003000000010006000300050004000B000000000002000000FFFFFFFF03000000040000007CA8F05D90D9F86F5B738CDC3080880B6320957C64000000770000008A0000009D000000B0000000380100000100000027020000130000000000002B010000010000000502000013000000000000C20000000100000057000000240000000000007401000001000000DE02000024000000000000BD000000010000005000000024000000000000
+      - sectname:        __debug_frame
+        segname:         __DWARF
+        addr:            0xA50
+        size:            232
+        offset:          0xF08
+        align:           3
+        reloff:          0x11B0
+        nreloc:          8
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        content:         14000000FFFFFFFF0400080001781E0C1F00000000000000140000000000000000000000000000000800000000000000140000000000000008000000000000000800000000000000140000000000000010000000000000000800000000000000140000000000000018000000000000000800000000000000140000000000000020000000000000000800000000000000240000000000000028000000000000006400000000000000500C1D109E019D02930394040000000014000000000000008C000000000000000400000000000000140000000000000090000000000000000400000000000000
+        relocations:
+          - address:         0xD8
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xC0
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x98
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x80
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x68
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x50
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x38
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x20
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+      - sectname:        __debug_line
+        segname:         __DWARF
+        addr:            0xB38
+        size:            253
+        offset:          0xFF0
+        align:           0
+        reloff:          0x11F0
+        nreloc:          8
+        flags:           0x2000000
+        reserved1:       0x0
+        reserved2:       0x0
+        reserved3:       0x0
+        relocations:
+          - address:         0xED
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xD9
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0xAA
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x96
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x7E
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x66
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x50
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+          - address:         0x3A
+            symbolnum:       1
+            pcrel:           false
+            length:          3
+            extern:          false
+            type:            0
+            scattered:       false
+            value:           0
+  - cmd:             LC_BUILD_VERSION
+    cmdsize:         24
+    platform:        1
+    minos:           720896
+    sdk:             0
+    ntools:          0
+  - cmd:             LC_LINKER_OPTIMIZATION_HINT
+    cmdsize:         16
+    dataoff:         4656
+    datasize:        8
+  - cmd:             LC_SYMTAB
+    cmdsize:         24
+    symoff:          4664
+    nsyms:           11
+    stroff:          4840
+    strsize:         168
+  - cmd:             LC_DYSYMTAB
+    cmdsize:         80
+    ilocalsym:       0
+    nlocalsym:       3
+    iextdefsym:      3
+    nextdefsym:      8
+    iundefsym:       11
+    nundefsym:       0
+    tocoff:          0
+    ntoc:            0
+    modtaboff:       0
+    nmodtab:         0
+    extrefsymoff:    0
+    nextrefsyms:     0
+    indirectsymoff:  0
+    nindirectsyms:   0
+    extreloff:       0
+    nextrel:         0
+    locreloff:       0
+    nlocrel:         0
+LinkEditData:
+  NameList:
+    - n_strx:          155
+      n_type:          0xE
+      n_sect:          1
+      n_desc:          0
+      n_value:         0
+    - n_strx:          1
+      n_type:          0xE
+      n_sect:          2
+      n_desc:          0
+      n_value:         148
+    - n_strx:          149
+      n_type:          0xE
+      n_sect:          2
+      n_desc:          0
+      n_value:         148
+    - n_strx:          39
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          192
+      n_value:         140
+    - n_strx:          14
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          192
+      n_value:         144
+    - n_strx:          132
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         0
+    - n_strx:          115
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         16
+    - n_strx:          81
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         32
+    - n_strx:          98
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         8
+    - n_strx:          64
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         24
+    - n_strx:          8
+      n_type:          0xF
+      n_sect:          1
+      n_desc:          0
+      n_value:         40
+  StringTable:
+    - ''
+    - l_.str
+    - _main
+    - __ZN12length_errorC2EPKc
+    - __ZN12length_errorC1EPKc
+    - _function3_copy2
+    - _function2_copy2
+    - _function3_copy1
+    - _function2_copy1
+    - _function1_copy1
+    - ltmp1
+    - ltmp0
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+    - ''
+DWARF:
+  debug_str:
+    - 'Facebook clang version 19.1.5 (https://git.internal.tfbnw.net/repos/git/rw/osmeta/external/llvm-project b36c9ae1f8f2b39e4aafb9ca4700c608c3036365)'
+    - stmt_seq_macho.cpp
+    - '/'
+    - '/private/tmp/stmt_seq'
+    - char
+    - __ARRAY_SIZE_TYPE__
+    - function1_copy1
+    - function3_copy1
+    - function2_copy1
+    - function3_copy2
+    - function2_copy2
+    - main
+    - length_error
+    - logic_error
+    - _ZN12length_errorC1EPKc
+    - _ZN12length_errorC2EPKc
+    - int
+    - a
+    - b
+    - result
+    - e
+    - sum
+    - this
+    - s
+  debug_abbrev:
+    - ID:              0
+      Table:
+        - Code:            0x1
+          Tag:             DW_TAG_compile_unit
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_producer
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_language
+              Form:            DW_FORM_data2
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_LLVM_sysroot
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_stmt_list
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_comp_dir
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+        - Code:            0x2
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+        - Code:            0x3
+          Tag:             DW_TAG_array_type
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x4
+          Tag:             DW_TAG_subrange_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_count
+              Form:            DW_FORM_data1
+        - Code:            0x5
+          Tag:             DW_TAG_const_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x6
+          Tag:             DW_TAG_base_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_encoding
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+        - Code:            0x7
+          Tag:             DW_TAG_base_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_encoding
+              Form:            DW_FORM_data1
+        - Code:            0x8
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_APPLE_omit_frame_ptr
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0x9
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xA
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xB
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xC
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0xD
+          Tag:             DW_TAG_variable
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0xE
+          Tag:             DW_TAG_call_site
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_call_origin
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_return_pc
+              Form:            DW_FORM_addr
+        - Code:            0xF
+          Tag:             DW_TAG_call_site_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_call_value
+              Form:            DW_FORM_exprloc
+        - Code:            0x10
+          Tag:             DW_TAG_structure_type
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_calling_convention
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_byte_size
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+        - Code:            0x11
+          Tag:             DW_TAG_inheritance
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_data_member_location
+              Form:            DW_FORM_data1
+        - Code:            0x12
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_declaration
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_explicit
+              Form:            DW_FORM_flag_present
+        - Code:            0x13
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_artificial
+              Form:            DW_FORM_flag_present
+        - Code:            0x14
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x15
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_declaration
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_external
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_APPLE_optimized
+              Form:            DW_FORM_flag_present
+        - Code:            0x16
+          Tag:             DW_TAG_pointer_type
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x17
+          Tag:             DW_TAG_subprogram
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_low_pc
+              Form:            DW_FORM_addr
+            - Attribute:       DW_AT_high_pc
+              Form:            DW_FORM_data4
+            - Attribute:       DW_AT_APPLE_omit_frame_ptr
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_LLVM_stmt_sequence
+              Form:            DW_FORM_sec_offset
+            - Attribute:       DW_AT_frame_base
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_object_pointer
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_all_calls
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_linkage_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_specification
+              Form:            DW_FORM_ref4
+        - Code:            0x18
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_artificial
+              Form:            DW_FORM_flag_present
+        - Code:            0x19
+          Tag:             DW_TAG_formal_parameter
+          Children:        DW_CHILDREN_no
+          Attributes:
+            - Attribute:       DW_AT_location
+              Form:            DW_FORM_exprloc
+            - Attribute:       DW_AT_name
+              Form:            DW_FORM_strp
+            - Attribute:       DW_AT_decl_file
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_decl_line
+              Form:            DW_FORM_data1
+            - Attribute:       DW_AT_type
+              Form:            DW_FORM_ref4
+        - Code:            0x1A
+          Tag:             DW_TAG_call_site
+          Children:        DW_CHILDREN_yes
+          Attributes:
+            - Attribute:       DW_AT_call_origin
+              Form:            DW_FORM_ref4
+            - Attribute:       DW_AT_call_tail_call
+              Form:            DW_FORM_flag_present
+            - Attribute:       DW_AT_call_pc
+              Form:            DW_FORM_addr
+  debug_info:
+    - Length:          0x2E7
+      Version:         4
+      AbbrevTableID:   0
+      AbbrOffset:      0x0
+      AddrSize:        8
+      Entries:
+        - AbbrCode:        0x1
+          Values:
+            - Value:           0x0
+            - Value:           0x21
+            - Value:           0x92
+            - Value:           0xA5
+            - Value:           0x0
+            - Value:           0xA7
+            - Value:           0x1
+            - Value:           0x0
+            - Value:           0x94
+        - AbbrCode:        0x2
+          Values:
+            - Value:           0x3F
+            - Value:           0x1
+            - Value:           0x27
+            - Value:           0x9
+              BlockData:       [ 0x3, 0x94, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+                                 0x0 ]
+        - AbbrCode:        0x3
+          Values:
+            - Value:           0x4B
+        - AbbrCode:        0x4
+          Values:
+            - Value:           0x57
+            - Value:           0x5
+        - AbbrCode:        0x0
+        - AbbrCode:        0x5
+          Values:
+            - Value:           0x50
+        - AbbrCode:        0x6
+          Values:
+            - Value:           0xBD
+            - Value:           0x6
+            - Value:           0x1
+        - AbbrCode:        0x7
+          Values:
+            - Value:           0xC2
+            - Value:           0x8
+            - Value:           0x7
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x0
+            - Value:           0x8
+            - Value:           0x1
+            - BlockData:       [ 0x6F ]
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xD6
+            - Value:           0x1
+            - Value:           0x2
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x9
+          Values:
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x2
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x8
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x4A
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xE6
+            - Value:           0x1
+            - Value:           0x6
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x0
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x6
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x39
+            - Value:           0x17A
+            - Value:           0x1
+            - Value:           0x7
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x10
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x60
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0xF6
+            - Value:           0x1
+            - Value:           0xB
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x5E
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0xB
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x18
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x78
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0x106
+            - Value:           0x1
+            - Value:           0xF
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0x97
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0xF
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0xD0
+            - Value:           0x17A
+            - Value:           0x1
+            - Value:           0x10
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0x8
+          Values:
+            - Value:           0x20
+            - Value:           0x8
+            - Value:           0x1
+            - Value:           0x90
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x1
+            - Value:           0x116
+            - Value:           0x1
+            - Value:           0x14
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xA
+          Values:
+            - Value:           0xF5
+            - Value:           0x178
+            - Value:           0x1
+            - Value:           0x14
+            - Value:           0x2DE
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x12E
+            - Value:           0x17C
+            - Value:           0x1
+            - Value:           0x15
+            - Value:           0x2DE
+        - AbbrCode:        0x0
+        - AbbrCode:        0xC
+          Values:
+            - Value:           0x28
+            - Value:           0x64
+            - Value:           0xA7
+            - Value:           0x1
+              BlockData:       [ 0x6D ]
+            - Value:           0x1
+            - Value:           0x126
+            - Value:           0x1
+            - Value:           0x21
+            - Value:           0x2DE
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0xD
+          Values:
+            - Value:           0x2
+              BlockData:       [ 0x8F, 0xF ]
+            - Value:           0x183
+            - Value:           0x1
+            - Value:           0x27
+            - Value:           0x205
+        - AbbrCode:        0xB
+          Values:
+            - Value:           0x151
+            - Value:           0x185
+            - Value:           0x1
+            - Value:           0x22
+            - Value:           0x2DE
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x12C
+            - Value:           0x40
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x1
+              BlockData:       [ 0x33 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0xF0
+            - Value:           0x4C
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x10, 0x29 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0xC3
+            - Value:           0x58
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x1
+              BlockData:       [ 0x3B ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x5E
+            - Value:           0x64
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x10, 0x2A ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0xE
+          Values:
+            - Value:           0x252
+            - Value:           0x78
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x2
+              BlockData:       [ 0x8F, 0xF ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x10
+          Values:
+            - Value:           0x5
+            - Value:           0x12B
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1D
+        - AbbrCode:        0x11
+          Values:
+            - Value:           0x227
+            - Value:           0x0
+        - AbbrCode:        0x12
+          Values:
+            - Value:           0x12B
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x13
+          Values:
+            - Value:           0x24D
+            - Value:           0x1
+        - AbbrCode:        0x14
+          Values:
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x10
+          Values:
+            - Value:           0x5
+            - Value:           0x138
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x19
+        - AbbrCode:        0x15
+          Values:
+            - Value:           0x138
+            - Value:           0x1
+            - Value:           0x1A
+            - Value:           0x1
+            - Value:           0x1
+            - Value:           0x1
+        - AbbrCode:        0x13
+          Values:
+            - Value:           0x243
+            - Value:           0x1
+        - AbbrCode:        0x14
+          Values:
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x227
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x4B
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x205
+        - AbbrCode:        0x17
+          Values:
+            - Value:           0x8C
+            - Value:           0x4
+            - Value:           0x1
+            - Value:           0xAB
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x271
+            - Value:           0x1
+            - Value:           0x144
+            - Value:           0x214
+        - AbbrCode:        0x18
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x189
+            - Value:           0x2E5
+            - Value:           0x1
+        - AbbrCode:        0x19
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x18E
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x248
+        - AbbrCode:        0x1A
+          Values:
+            - Value:           0x2A6
+            - Value:           0x1
+            - Value:           0x8C
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x3
+              BlockData:       [ 0xA3, 0x1, 0x50 ]
+        - AbbrCode:        0xF
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x3
+              BlockData:       [ 0xA3, 0x1, 0x51 ]
+        - AbbrCode:        0x0
+        - AbbrCode:        0x0
+        - AbbrCode:        0x17
+          Values:
+            - Value:           0x90
+            - Value:           0x4
+            - Value:           0x1
+            - Value:           0xEEEEE7
+            - Value:           0x1
+              BlockData:       [ 0x6F ]
+            - Value:           0x2C5
+            - Value:           0x1
+            - Value:           0x15C
+            - Value:           0x214
+        - AbbrCode:        0x18
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x50 ]
+            - Value:           0x189
+            - Value:           0x2E5
+            - Value:           0x1
+        - AbbrCode:        0x19
+          Values:
+            - Value:           0x1
+              BlockData:       [ 0x51 ]
+            - Value:           0x18E
+            - Value:           0x1
+            - Value:           0x1E
+            - Value:           0x248
+        - AbbrCode:        0x0
+        - AbbrCode:        0x6
+          Values:
+            - Value:           0x174
+            - Value:           0x5
+            - Value:           0x4
+        - AbbrCode:        0x16
+          Values:
+            - Value:           0x205
+        - AbbrCode:        0x0
+  debug_line:
+    - Length:          249
+      Version:         4
+      PrologueLength:  42
+      MinInstLength:   1
+      MaxOpsPerInst:   1
+      DefaultIsStmt:   1
+      LineBase:        251
+      LineRange:       14
+      OpcodeBase:      13
+      StandardOpcodeLengths: [ 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1 ]
+      Files:
+        - Name:            stmt_seq_macho.cpp
+          DirIdx:          0
+          ModTime:         0
+          Length:          0
+      Opcodes:
+        - Opcode:          DW_LNS_set_column
+          Data:            10
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            0
+        - Opcode:          0x14
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            3
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            8
+        - Opcode:          0x19
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            16
+        - Opcode:          DW_LNS_advance_line
+          SData:           11
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            14
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            24
+        - Opcode:          DW_LNS_advance_line
+          SData:           16
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4A
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            20
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            32
+        - Opcode:          DW_LNS_advance_line
+          SData:           20
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          0x4B
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            40
+        - Opcode:          DW_LNS_advance_line
+          SData:           32
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            12
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          0xF4
+          Data:            0
+        - Opcode:          0xBB
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x82
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            12
+        - Opcode:          DW_LNS_negate_stmt
+          Data:            0
+        - Opcode:          0x4B
+          Data:            0
+        - Opcode:          0xBB
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          0x81
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            18
+        - Opcode:          0x4C
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            9
+        - Opcode:          0xF1
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            5
+        - Opcode:          DW_LNS_set_epilogue_begin
+          Data:            0
+        - Opcode:          0x4C
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            85
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            140
+        - Opcode:          DW_LNS_advance_line
+          SData:           29
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+        - Opcode:          DW_LNS_set_column
+          Data:            86
+        - Opcode:          DW_LNS_set_prologue_end
+          Data:            0
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          9
+          SubOpcode:       DW_LNE_set_address
+          Data:            144
+        - Opcode:          DW_LNS_advance_line
+          SData:           29
+          Data:            0
+        - Opcode:          DW_LNS_copy
+          Data:            0
+        - Opcode:          DW_LNS_advance_pc
+          Data:            4
+        - Opcode:          DW_LNS_extended_op
+          ExtLen:          1
+          SubOpcode:       DW_LNE_end_sequence
+          Data:            0
+...

>From c7461d3bfedf1448ca60b49f2722bae312ca2652 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Thu, 21 Aug 2025 15:11:38 -0700
Subject: [PATCH 09/13] Not testing

---
 llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp    | 45 +++----------------
 .../tools/llvm-dwarfdump/verify_stmt_seq.yaml |  4 +-
 2 files changed, 8 insertions(+), 41 deletions(-)

diff --git a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
index e654f229d0873..55450a92402ed 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
@@ -907,47 +907,14 @@ unsigned DWARFVerifier::verifyDebugInfoAttribute(const DWARFDie &Die,
       break;
     }
 
-    // Check if the offset points to a valid sequence offset
-    bool ValidSequenceOffset = false;
     // Check if the offset matches any of the sequence offset offsets using
-    // binary search
-    auto It = std::lower_bound(LineTable->Sequences.begin(),
-                               LineTable->Sequences.end(), *SectionOffset,
-                               [](const auto &Sequence, const uint64_t Offset) {
-                                 return Sequence.StmtSeqOffset < Offset;
-                               });
-
-    if (It == LineTable->Sequences.end()) {
-      ReportError("DW_AT_LLVM_stmt_sequence offset sequence not found",
-                  "There is no line table sequences that contains the offset" +
-                      llvm::formatv("{0:x8}", *SectionOffset));
-      break;
-    }
-
-    ValidSequenceOffset = It->StmtSeqOffset == *SectionOffset;
-    if (!ValidSequenceOffset) {
-      // Go over all Rows in this Section (It) and make sure that the
-      // previous Row of the SectionOffset is EndSequence
-      for (unsigned RowIdx = It->FirstRowIndex; RowIdx < It->LastRowIndex;
-           ++RowIdx) {
-        const auto &CurrentRow = LineTable->Rows[RowIdx];
-
-        auto IsPrevRowEndSequence = [&](unsigned RowIdx) {
-          // There is no previous row in the first place.
-          return RowIdx != 0 && LineTable->Rows[RowIdx - 1].EndSequence;
-        };
-
-        // Check if current row's address matches our section offset
-        // and if the previous row has EndSequence set
-        if (CurrentRow.Address.Address == *SectionOffset &&
-            IsPrevRowEndSequence(RowIdx)) {
-          ValidSequenceOffset = true;
-          break;
-        }
-      }
-    }
+    auto It =
+        std::find_if(LineTable->Sequences.begin(), LineTable->Sequences.end(),
+                     [SectionOffset](const auto &Sequence) {
+                       return Sequence.StmtSeqOffset == *SectionOffset;
+                     });
 
-    if (!ValidSequenceOffset)
+    if (It == LineTable->Sequences.end())
       ReportError(
           "Invalid DW_AT_LLVM_stmt_sequence offset",
           "DW_AT_LLVM_stmt_sequence offset " +
diff --git a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
index dea4d904c1d9f..559c087363d91 100644
--- a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
+++ b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
@@ -1125,7 +1125,7 @@ DWARF:
             - Value:           0x18
             - Value:           0x8
             - Value:           0x1
-            - Value:           0x78
+            - Value:           0xD3
             - Value:           0x1
               BlockData:       [ 0x6F ]
             - Value:           0x1
@@ -1155,7 +1155,7 @@ DWARF:
             - Value:           0x20
             - Value:           0x8
             - Value:           0x1
-            - Value:           0x90
+            - Value:           0xE7
             - Value:           0x1
               BlockData:       [ 0x6F ]
             - Value:           0x1

>From 5e7d6d418ff8bc935ed57a82796f5feeeea64c1e Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Fri, 22 Aug 2025 09:48:56 -0700
Subject: [PATCH 10/13] [ICF] Add a NOP after branch in ICF thunk to improve
 debugability

---
 lld/MachO/Arch/ARM64.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lld/MachO/Arch/ARM64.cpp b/lld/MachO/Arch/ARM64.cpp
index 04da702b48764..2479c2e2c72b8 100644
--- a/lld/MachO/Arch/ARM64.cpp
+++ b/lld/MachO/Arch/ARM64.cpp
@@ -176,6 +176,7 @@ void ARM64::populateThunk(InputSection *thunk, Symbol *funcSym) {
 // Just a single direct branch to the target function.
 static constexpr uint32_t icfSafeThunkCode[] = {
     0x14000000, // 08: b    target
+    0xD503201F, // 0c: nop
 };
 
 void ARM64::initICFSafeThunkBody(InputSection *thunk, Symbol *targetSym) const {

>From 55692f921180e59ddd09ced353ded4e77b03a3e4 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Fri, 22 Aug 2025 11:19:10 -0700
Subject: [PATCH 11/13] Update comment and test

---
 lld/MachO/Arch/ARM64.cpp          |  8 +++++++-
 lld/test/MachO/icf-safe-thunks.ll | 11 +++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/lld/MachO/Arch/ARM64.cpp b/lld/MachO/Arch/ARM64.cpp
index 2479c2e2c72b8..d819839fea438 100644
--- a/lld/MachO/Arch/ARM64.cpp
+++ b/lld/MachO/Arch/ARM64.cpp
@@ -173,7 +173,13 @@ void ARM64::populateThunk(InputSection *thunk, Symbol *funcSym) {
                              /*offset=*/0, /*addend=*/0,
                              /*referent=*/funcSym);
 }
-// Just a single direct branch to the target function.
+// Just a single direct branch to the target function and a nop.
+// The nop will improve the debuggability.
+//
+// Debug lines in DWARF does not recognize one-instruction sequence, and this
+// thunk will be merged into other sequences if it only had one instruction.
+// Adding a nop after the branch has no runtime cost, and little size impact,
+// but it would make DWARF linker and debuggers happier.
 static constexpr uint32_t icfSafeThunkCode[] = {
     0x14000000, // 08: b    target
     0xD503201F, // 0c: nop
diff --git a/lld/test/MachO/icf-safe-thunks.ll b/lld/test/MachO/icf-safe-thunks.ll
index 12f1e81bdf3e8..384716eb667a2 100644
--- a/lld/test/MachO/icf-safe-thunks.ll
+++ b/lld/test/MachO/icf-safe-thunks.ll
@@ -39,12 +39,15 @@
 ;
 ; CHECK-ARM64:        _func_2identical_v2:
 ; CHECK-ARM64-NEXT:        b  _func_2identical_v1
+; CHECK-ARM64-NEXT:        nop
 ; CHECK-ARM64-NEXT:   _func_3identical_v2:
 ; CHECK-ARM64-NEXT:        b  _func_3identical_v1
+; CHECK-ARM64-NEXT:        nop
 ; CHECK-ARM64-NEXT:   _func_3identical_v3:
 ; CHECK-ARM64-NEXT:        b  _func_3identical_v1
+; CHECK-ARM64-NEXT:        nop
 
-
+; Check the size of each functions. Thunks' size will change from 4-> 8 because of added nop.
 ; CHECK-ARM64-MAP:      0x00000010 [  2] _func_unique_1
 ; CHECK-ARM64-MAP-NEXT: 0x00000010 [  2] _func_2identical_v1
 ; CHECK-ARM64-MAP-NEXT: 0x00000000 [  2] _func_unique_2_canmerge
@@ -57,9 +60,9 @@
 ; CHECK-ARM64-MAP-NEXT: 0x00000000 [  2] _func_call_thunked_2_merge
 ; CHECK-ARM64-MAP-NEXT: 0x00000034 [  2] _call_all_funcs
 ; CHECK-ARM64-MAP-NEXT: 0x00000050 [  2] _take_func_addr
-; CHECK-ARM64-MAP-NEXT: 0x00000004 [  2] _func_2identical_v2
-; CHECK-ARM64-MAP-NEXT: 0x00000004 [  2] _func_3identical_v2
-; CHECK-ARM64-MAP-NEXT: 0x00000004 [  2] _func_3identical_v3
+; CHECK-ARM64-MAP-NEXT: 0x00000008 [  2] _func_2identical_v2
+; CHECK-ARM64-MAP-NEXT: 0x00000008 [  2] _func_3identical_v2
+; CHECK-ARM64-MAP-NEXT: 0x00000008 [  2] _func_3identical_v3
 
 ;--- a.cpp
 #define ATTR __attribute__((noinline)) extern "C"

>From 43128e125bb837c9f873e141baa5f4e28601641b Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Fri, 22 Aug 2025 16:08:12 -0700
Subject: [PATCH 12/13] Dont emit for single line functions

Signed-off-by: Peter Rong <PeterRong at meta.com>
---
 llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
index 67f526fe91464..861a74091e8eb 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
@@ -553,9 +553,18 @@ DIE &DwarfCompileUnit::updateSubprogramScopeDIE(const DISubprogram *SP,
     addFlag(*SPDie, dwarf::DW_AT_APPLE_omit_frame_ptr);
 
   if (emitFuncLineTableOffsets() && LineTableSym) {
-    addSectionLabel(
-        *SPDie, dwarf::DW_AT_LLVM_stmt_sequence, LineTableSym,
-        Asm->getObjFileLowering().getDwarfLineSection()->getBeginSymbol());
+    // Check if we have meaningful code ranges before adding LLVM_stmt_sequence
+    // Only add it if there are multiple basic block sections or if the single
+    // range represents substantial code (not just a trivial function)
+    bool hasSubstantialCode =
+        BB_List.size() > 1 ||
+        (BB_List.size() == 1 && BB_List[0].Begin != BB_List[0].End);
+
+    if (hasSubstantialCode) {
+      addSectionLabel(
+          *SPDie, dwarf::DW_AT_LLVM_stmt_sequence, LineTableSym,
+          Asm->getObjFileLowering().getDwarfLineSection()->getBeginSymbol());
+    }
   }
 
   // Only include DW_AT_frame_base in full debug info

>From bcadc8cbba007fb21266079994ab8e69edfb0e07 Mon Sep 17 00:00:00 2001
From: Peter Rong <PeterRong at meta.com>
Date: Thu, 28 Aug 2025 14:40:48 -0700
Subject: [PATCH 13/13] We should not bend if the line table is wrong

---
 llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
index 559c087363d91..ced0dcf9c8277 100644
--- a/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
+++ b/llvm/test/tools/llvm-dwarfdump/verify_stmt_seq.yaml
@@ -9,6 +9,9 @@
 # CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset 0x00000000 is not within the line table bounds [0x0000002e, 0x000000fd)
 # CHECK_INVALID: DW_AT_LLVM_stmt_sequence [DW_FORM_sec_offset]     (0x00000000)
 
+# CHECK_INVALID: error: DW_AT_LLVM_stmt_sequence offset 0x000000d3 does not point to a valid sequence offset in the line table
+# CHECK_INVALID: DW_AT_LLVM_stmt_sequence [DW_FORM_sec_offset]     (0x000000d3)
+
 # CHECK_INVALID: error: DIE has invalid DW_AT_LLVM_stmt_sequence encoding
 # CHECK_INVALID: DW_AT_LLVM_stmt_sequence [DW_FORM_data4]  (0x000000a7)
 
@@ -22,7 +25,7 @@
 # CHECK_INVALID-NEXT: error: DW_AT_LLVM_stmt_sequence offset out of bounds occurred 1 time(s).
 # CHECK_INVALID-NEXT: error: DW_AT_LLVM_stmt_sequence offset out of line table bounds occurred 1 time(s).
 # CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence encoding occurred 1 time(s).
-# CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence offset occurred 1 time(s).
+# CHECK_INVALID-NEXT: error: Invalid DW_AT_LLVM_stmt_sequence offset occurred 2 time(s).
 
 --- !mach-o
 IsLittleEndian: true



More information about the llvm-commits mailing list