[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