[Lldb-commits] [lldb] [lldb] Use `llvm::APInt` for `VariantMember` Discriminants (PR #188487)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Apr 14 21:10:37 PDT 2026
https://github.com/Walnut356 updated https://github.com/llvm/llvm-project/pull/188487
>From 2feb0dde6dc49145b21a5b8edd087a9a93af187f Mon Sep 17 00:00:00 2001
From: Walnut <39544927+Walnut356 at users.noreply.github.com>
Date: Sat, 11 Apr 2026 04:32:12 -0500
Subject: [PATCH 1/2] use `llvm::APInt` for variant discriminants
---
.../SymbolFile/DWARF/DWARFASTParserClang.cpp | 45 ++++++++++++++++---
1 file changed, 39 insertions(+), 6 deletions(-)
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
index cb33fc21bfba9..a98c9855a339b 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -13,6 +13,7 @@
#include "DWARFDebugInfo.h"
#include "DWARFDeclContext.h"
#include "DWARFDefines.h"
+#include "DWARFFormValue.h"
#include "SymbolFileDWARF.h"
#include "SymbolFileDWARFDebugMap.h"
#include "SymbolFileDWARFDwo.h"
@@ -2568,7 +2569,7 @@ struct VariantMember {
explicit VariantMember(DWARFDIE &die, ModuleSP module_sp);
bool IsDefault() const;
- std::optional<uint32_t> discr_value;
+ std::optional<llvm::APInt> discr_value;
DWARFFormValue type_ref;
ConstString variant_name;
uint32_t byte_offset;
@@ -2596,8 +2597,35 @@ bool VariantMember::IsDefault() const { return !discr_value; }
VariantMember::VariantMember(DWARFDIE &die, lldb::ModuleSP module_sp) {
assert(die.Tag() == llvm::dwarf::DW_TAG_variant);
- this->discr_value =
- die.GetAttributeValueAsOptionalUnsigned(DW_AT_discr_value);
+
+ DWARFFormValue discr_form;
+ die.GetDIE()->GetAttributeValue(die.GetCU(), DW_AT_discr_value, discr_form);
+
+ // Rust can output 128-bit discrs (e.g. NonNull<u128>) as `DW_FORM_block1`.
+ // There is a `data16`, but the DIE function treats it as a block anyway.
+ // Handling is included for it just in case rust's output changes to the
+ // `data16` version.
+ dw_form_t form = discr_form.Form();
+ if ((form == DW_FORM_block1 && discr_form.Unsigned() == 16) ||
+ form == DW_FORM_data16) {
+ const uint8_t *block_data = discr_form.BlockData();
+
+ DataExtractor extractor(block_data, 16, die.GetCU()->GetByteOrder(),
+ die.GetCU()->GetAddressByteSize());
+ lldb::offset_t offset = 0;
+ uint64_t lo = extractor.GetU64(&offset);
+ uint64_t hi = extractor.GetU64(&offset);
+ uint64_t words[] = {lo, hi};
+ this->discr_value = llvm::APInt(128, words);
+ } else {
+ if (auto result =
+ die.GetAttributeValueAsOptionalUnsigned(DW_AT_discr_value)) {
+ this->discr_value =
+ llvm::APInt(sizeof(uint64_t) * 8, result.value(), false);
+ } else {
+ this->discr_value = std::nullopt;
+ };
+ }
for (auto child_die : die.children()) {
switch (child_die.Tag()) {
@@ -3834,9 +3862,14 @@ void DWARFASTParserClang::ParseRustVariantPart(
m_ast.CompleteTagDeclarationDefinition(field_type);
- auto name = has_discriminant
- ? llvm::formatv("$variant${0}", member.discr_value.value())
- : std::string("$variant$");
+ auto name = std::string("$variant$");
+ if (has_discriminant) {
+ // u128::MAX = 340282366920938463463374607431768211455 which is 39 digits
+ // long + 1 for null terminator.
+ llvm::SmallString<40> discr_str;
+ member.discr_value.value().toStringUnsigned(discr_str);
+ name.append(discr_str.c_str());
+ }
auto variant_decl = m_ast.AddFieldToRecordType(
inner_holder, llvm::StringRef(name), field_type, 0);
>From 6ad087a3cb8244179b0b24d8bfca1be4a9eef162 Mon Sep 17 00:00:00 2001
From: Walnut <39544927+Walnut356 at users.noreply.github.com>
Date: Tue, 14 Apr 2026 23:10:17 -0500
Subject: [PATCH 2/2] add test for 128 bit variants
---
.../unittests/SymbolFile/DWARF/CMakeLists.txt | 3 +-
.../DWARF/DWARFASTParserClangTests.cpp | 30 +
.../Inputs/DW_TAG_variant_rust-test.yaml | 871 ++++++++++++++++++
3 files changed, 903 insertions(+), 1 deletion(-)
create mode 100644 lldb/unittests/SymbolFile/DWARF/Inputs/DW_TAG_variant_rust-test.yaml
diff --git a/lldb/unittests/SymbolFile/DWARF/CMakeLists.txt b/lldb/unittests/SymbolFile/DWARF/CMakeLists.txt
index 88492188e794b..185cad60f74d9 100644
--- a/lldb/unittests/SymbolFile/DWARF/CMakeLists.txt
+++ b/lldb/unittests/SymbolFile/DWARF/CMakeLists.txt
@@ -28,6 +28,7 @@ add_lldb_unittest(SymbolFileDWARFTests
set(test_inputs
test-dwarf.exe
DW_AT_default_value-test.yaml
- DW_AT_spec_decl_exists-test.yaml)
+ DW_AT_spec_decl_exists-test.yaml
+ DW_TAG_variant_rust-test.yaml)
add_unittest_inputs(SymbolFileDWARFTests "${test_inputs}")
diff --git a/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp b/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp
index 6a753b6b33edf..2f797dc26b3e5 100644
--- a/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp
+++ b/lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp
@@ -2118,3 +2118,33 @@ TEST_F(DWARFASTParserClangTests,
EXPECT_EQ(type_sp->GetName(), "Bar<int>");
EXPECT_EQ(type_sp->GetForwardCompilerType().GetTypeName(), "Foo::Bar<int>");
}
+
+TEST_F(DWARFASTParserClangTests, TestRustVariantMember) {
+ // Tests that 128-bit discriminants are output to variant names correctly
+ auto yamldata = llvm::MemoryBuffer::getFile(
+ GetInputFilePath("DW_TAG_variant_rust-test.yaml"), /*IsText=*/true);
+ ASSERT_TRUE(yamldata);
+
+ DWARFASTParserClangYAMLTester tester(yamldata->get()->getBuffer());
+
+ auto &ts_clang = tester.GetTypeSystem();
+ auto *symbol_file = ts_clang.GetSymbolFile();
+
+ TypeQuery query{ConstString("BigDiscr")};
+ TypeResults result{};
+ symbol_file->FindTypes(query, result);
+
+ auto type = result.GetFirstType();
+ auto enum_type = type.get()->GetFullCompilerType();
+ std::string f_name;
+ auto all_variants =
+ enum_type.GetFieldAtIndex(0, f_name, nullptr, nullptr, nullptr);
+ ASSERT_EQ(f_name, "$variants$");
+
+ f_name.clear();
+ all_variants.GetFieldAtIndex(0, f_name, nullptr, nullptr, nullptr);
+ ASSERT_EQ(f_name, "$variant$0");
+
+ all_variants.GetFieldAtIndex(1, f_name, nullptr, nullptr, nullptr);
+ ASSERT_EQ(f_name, "$variant$29352461300415899028694309177919734273");
+}
\ No newline at end of file
diff --git a/lldb/unittests/SymbolFile/DWARF/Inputs/DW_TAG_variant_rust-test.yaml b/lldb/unittests/SymbolFile/DWARF/Inputs/DW_TAG_variant_rust-test.yaml
new file mode 100644
index 0000000000000..b7089e362cf13
--- /dev/null
+++ b/lldb/unittests/SymbolFile/DWARF/Inputs/DW_TAG_variant_rust-test.yaml
@@ -0,0 +1,871 @@
+# Below code compiled with rustc src/main.rs --target=x86_64-unknown-linux-gnu -g -C panic=abort
+#
+# #![no_std]
+# #![no_main]
+#
+# #[allow(unused)]
+# #[repr(u128)]
+# enum BigDiscr {
+# Value(u64),
+# None = 0x16151413121110090807060504030201,
+# }
+#
+# fn use_it(_: &BigDiscr) {}
+#
+# #[panic_handler]
+# fn panic(_info: &core::panic::PanicInfo) -> ! {
+# loop {}
+# }
+#
+# #[unsafe(no_mangle)]
+# extern "C" fn main() {
+# let none = BigDiscr::None;
+# let some = BigDiscr::Value(31);
+#
+# use_it(&none);
+# use_it(&some);
+# }
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_X86_64
+ SectionHeaderStringTable: .strtab
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ AddressAlign: 0x4
+ - Name: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ AddressAlign: 0x10
+ Content: 48897C24F8EBFE
+ - Name: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ AddressAlign: 0x10
+ Content: 48897C24F8C3
+ - Name: .text.main
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ AddressAlign: 0x10
+ Content: 4883EC4848B80910111213141516488944240848B801020304050607084889042448C74424301F00000048C74424280000000048C7442420000000004889E7E800000000488D7C2420E8000000004883C448C3
+ - Name: .debug_gdb_scripts
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_MERGE, SHF_STRINGS ]
+ AddressAlign: 0x1
+ EntSize: 0x1
+ Content: 016764625F6C6F61645F727573745F7072657474795F7072696E746572732E707900
+ - Name: .debug_abbrev
+ Type: SHT_PROGBITS
+ AddressAlign: 0x1
+ Content: 011101250E1305030E10171B0E110155170000023901030E0000032E011101120640186E0E030E3A0B3B0B87011900000405000218030E3A0B3B0B49130000052E011101120640186E0E030E3A0B3B0B000006050002183A0B3B0B49130000072E01110112064018030E3A0B3B0B3F190000080B011101120600000934000218030E88010F3A0B3B0B491300000A1301030E0B0B320B88010F00000B3301151300000C0D00491388010F380B341900000D1901160A00000E0D00030E491388010F380B00000F0D00030E491388010F380B320B0000101300030E0B0B320B88010F0000110F004913030E330600001219010000131901160B0000142F004913030E0000152400030E3E0B0B0B00001615014913000017050049130000181301030E0B0B88010F0000190F004913330600001A1300030E0B0B88010F00001B0101491300001C21004913220D370B00001D2400030E0B0B3E0B000000
+ - Name: .debug_info
+ Type: SHT_PROGBITS
+ AddressAlign: 0x1
+ Content: 5F0500000400000000000801000000001C0000000000000000000000000000000000000000000000000002000000000300000000000000000700000001570000000000000000010E0402917800000000010E3B010000000500000000000000000600000001570000000000000000010B06029178010B4E050000000700000000000000005300000001570000000001130800000000000000002D0000000902910000000000100114CB000000080000000000000000120000000902912000000000100115CB0000000000000A000000002003100BD80000000C5B05000010000D10000000000000000000000000000000000E000000001C0100001000000D10010203040506070809101112131415160E0000000031010000100000000A000000002003100F00000000320400000810030010000000002003100000115701000000000000000000000200000000020000000002000000000A000000001801080F00000000110400000800030F00000000F50400000808030F00000000470500000110030F0000000047050000011103000002000000000A000000001801080F00000000400300000800030F00000000770400000410030F00000000770400000414030F00000000FD03000001180300000002000000000A000000001001080F00000000E60200000800030F00000000040300000808030002000000000A000000001001080F0000000011020000080003000A000000001003080B1E0200000C320400000800120E000000004102000008000013000E000000006E020000080000000A000000001003080F00000000220300000800030F000000004D0400000808030F00000000EB030000011003000A000000001003080F000000007E04000002080300000010000000000001010A000000001801080F00000000AE0200000410030F0000000085040000080003000A000000000801040F00000000770400000400030F000000007E0400000204030F000000007E0400000206030000020000000002000000000A00000000080108141E040000000000000F0000000025040000080003000A0000000008010814FC010000000000000F00000000E8040000080003000A000000000801081439040000000000000F0000000040040000080003000A00000000100108141E040000000000000F000000000205000008000300000002000000000A000000000101010B720300000C1E040000010013000E000000009603000001000013010E00000000BD030000010000000A000000000101011439040000000000001485020000000000000F0000000039040000010101000A000000000101011439040000000000001485020000000000000F000000008502000001010100000002000000000A0000000000010114DB04000000000000000A0000000000010114290500000000000000000011D6010000000000000000000015000000000701111E0400000000000000000000150000000007081500000000070011390400000000000000000000115A040000000000000000000016650300001722030000176A04000000118D02000000000000000000001500000000070415000000000702180000000010080E00000000A304000008000E00000000B304000008080019AC040000000000001A00000000000111C004000000000000000000001BCD0400001CD4040000000600150000000007081D0000000008071139040000000000000000000011FC010000000000000000000011960100000000000000000000180000000010080E000000002005000008000E00000000CD040000080800191E04000000000000180000000010080E000000002005000008000E00000000CD0400000808001500000000020111CB00000000000000000000001500000000071000
+ - Name: .comment
+ Type: SHT_PROGBITS
+ Flags: [ SHF_MERGE, SHF_STRINGS ]
+ AddressAlign: 0x1
+ EntSize: 0x1
+ Content: 0072757374632076657273696F6E20312E39332E30202832353462353936303720323032362D30312D31392900
+ - Name: .note.GNU-stack
+ Type: SHT_PROGBITS
+ AddressAlign: 0x1
+ - Name: .eh_frame
+ Type: SHT_X86_64_UNWIND
+ Flags: [ SHF_ALLOC ]
+ AddressAlign: 0x8
+ Content: 1400000000000000017A5200017810011B0C070890010000100000001C00000000000000070000000000000010000000300000000000000006000000000000001400000044000000000000005300000000440E50024E0E08
+ - Name: .debug_line
+ Type: SHT_PROGBITS
+ AddressAlign: 0x1
+ Content: 79000000040023000000010101FB0E0D00010101010000000100000173726300006D61696E2E727300010000000009020000000000000000030D0105050A5902020001010009020000000000000000030A01051B0A580201000101000902000000000000000003120105100AD7082F050508A08305020B9F0205000101
+ - Name: .rela.text.main
+ Type: SHT_RELA
+ Flags: [ SHF_INFO_LINK ]
+ Link: .symtab
+ AddressAlign: 0x8
+ Info: .text.main
+ Relocations:
+ - Offset: 0x40
+ Symbol: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: R_X86_64_PLT32
+ Addend: -4
+ - Offset: 0x4A
+ Symbol: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: R_X86_64_PLT32
+ Addend: -4
+ - Name: .rela.debug_info
+ Type: SHT_RELA
+ Flags: [ SHF_INFO_LINK ]
+ Link: .symtab
+ AddressAlign: 0x8
+ Info: .debug_info
+ Relocations:
+ - Offset: 0x6
+ Symbol: .debug_abbrev
+ Type: R_X86_64_32
+ - Offset: 0xC
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ - Offset: 0x12
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 57
+ - Offset: 0x16
+ Symbol: .debug_line
+ Type: R_X86_64_32
+ - Offset: 0x1A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 99
+ - Offset: 0x26
+ Symbol: .debug_ranges
+ Type: R_X86_64_32
+ - Offset: 0x2B
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 147
+ - Offset: 0x30
+ Symbol: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: R_X86_64_64
+ - Offset: 0x3E
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 152
+ - Offset: 0x42
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 199
+ - Offset: 0x4C
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 248
+ - Offset: 0x58
+ Symbol: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: R_X86_64_64
+ - Offset: 0x66
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 205
+ - Offset: 0x6A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 241
+ - Offset: 0x7C
+ Symbol: .text.main
+ Type: R_X86_64_64
+ - Offset: 0x8A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 147
+ - Offset: 0x91
+ Symbol: .text.main
+ Type: R_X86_64_64
+ Addend: 33
+ - Offset: 0xA1
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1193
+ - Offset: 0xAD
+ Symbol: .text.main
+ Type: R_X86_64_64
+ Addend: 60
+ - Offset: 0xBD
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1198
+ - Offset: 0xCC
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1168
+ - Offset: 0xF2
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1157
+ - Offset: 0x110
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1163
+ - Offset: 0x11D
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1157
+ - Offset: 0x125
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 425
+ - Offset: 0x132
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1163
+ - Offset: 0x140
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1116
+ - Offset: 0x149
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 254
+ - Offset: 0x14E
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 199
+ - Offset: 0x153
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 259
+ - Offset: 0x158
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1106
+ - Offset: 0x160
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 270
+ - Offset: 0x16C
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 929
+ - Offset: 0x178
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1071
+ - Offset: 0x184
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1087
+ - Offset: 0x192
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 929
+ - Offset: 0x197
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1029
+ - Offset: 0x19F
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 938
+ - Offset: 0x1AB
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 987
+ - Offset: 0x1B7
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 992
+ - Offset: 0x1C3
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 996
+ - Offset: 0x1D2
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 278
+ - Offset: 0x1D7
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 897
+ - Offset: 0x1DF
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 282
+ - Offset: 0x1EB
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 339
+ - Offset: 0x1F8
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 344
+ - Offset: 0x1FD
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 824
+ - Offset: 0x205
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 347
+ - Offset: 0x212
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 811
+ - Offset: 0x227
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 354
+ - Offset: 0x235
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 805
+ - Offset: 0x242
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 354
+ - Offset: 0x24A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 366
+ - Offset: 0x256
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 397
+ - Offset: 0x262
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 767
+ - Offset: 0x26F
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 805
+ - Offset: 0x277
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 425
+ - Offset: 0x286
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 417
+ - Offset: 0x28E
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 614
+ - Offset: 0x296
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 462
+ - Offset: 0x2A2
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 518
+ - Offset: 0x2AF
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 500
+ - Offset: 0x2B7
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 470
+ - Offset: 0x2C3
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 480
+ - Offset: 0x2CF
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 490
+ - Offset: 0x2DD
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 291
+ - Offset: 0x2E2
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 295
+ - Offset: 0x2E7
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 327
+ - Offset: 0x2F3
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 307
+ - Offset: 0x2F8
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 309
+ - Offset: 0x305
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 864
+ - Offset: 0x311
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 307
+ - Offset: 0x316
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 309
+ - Offset: 0x323
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 385
+ - Offset: 0x32F
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 307
+ - Offset: 0x334
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 309
+ - Offset: 0x341
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 974
+ - Offset: 0x34D
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 307
+ - Offset: 0x352
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 309
+ - Offset: 0x361
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 407
+ - Offset: 0x366
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 433
+ - Offset: 0x37C
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 414
+ - Offset: 0x38A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 429
+ - Offset: 0x397
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 414
+ - Offset: 0x3A3
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 307
+ - Offset: 0x3AC
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 423
+ - Offset: 0x3B1
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 425
+ - Offset: 0x3BE
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 429
+ - Offset: 0x3CA
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 307
+ - Offset: 0x3D3
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 423
+ - Offset: 0x3D8
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 425
+ - Offset: 0x3E7
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 777
+ - Offset: 0x3EC
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 788
+ - Offset: 0x3F8
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 307
+ - Offset: 0x3FE
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1011
+ - Offset: 0x40A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 307
+ - Offset: 0x416
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 907
+ - Offset: 0x41F
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 304
+ - Offset: 0x42A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 317
+ - Offset: 0x433
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 350
+ - Offset: 0x43A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 372
+ - Offset: 0x445
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 375
+ - Offset: 0x452
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 650
+ - Offset: 0x46F
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 624
+ - Offset: 0x478
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 476
+ - Offset: 0x47F
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 486
+ - Offset: 0x486
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 588
+ - Offset: 0x48D
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 309
+ - Offset: 0x498
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 543
+ - Offset: 0x4AD
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 522
+ - Offset: 0x4B8
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 576
+ - Offset: 0x4CE
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 550
+ - Offset: 0x4D5
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 556
+ - Offset: 0x4E0
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 784
+ - Offset: 0x4ED
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 833
+ - Offset: 0x4FA
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1038
+ - Offset: 0x503
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 963
+ - Offset: 0x50A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 947
+ - Offset: 0x515
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 956
+ - Offset: 0x52A
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1006
+ - Offset: 0x531
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 947
+ - Offset: 0x53C
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 956
+ - Offset: 0x548
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1082
+ - Offset: 0x553
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1177
+ - Offset: 0x55C
+ Symbol: .debug_str
+ Type: R_X86_64_32
+ Addend: 1152
+ - Name: .rela.debug_aranges
+ Type: SHT_RELA
+ Flags: [ SHF_INFO_LINK ]
+ Link: .symtab
+ AddressAlign: 0x8
+ Info: .debug_aranges
+ Relocations:
+ - Offset: 0x6
+ Symbol: .debug_info
+ Type: R_X86_64_32
+ - Offset: 0x10
+ Symbol: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: R_X86_64_64
+ - Offset: 0x20
+ Symbol: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: R_X86_64_64
+ - Offset: 0x30
+ Symbol: .text.main
+ Type: R_X86_64_64
+ - Name: .rela.debug_ranges
+ Type: SHT_RELA
+ Flags: [ SHF_INFO_LINK ]
+ Link: .symtab
+ AddressAlign: 0x8
+ Info: .debug_ranges
+ Relocations:
+ - Symbol: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: R_X86_64_64
+ - Offset: 0x8
+ Symbol: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: R_X86_64_64
+ Addend: 7
+ - Offset: 0x10
+ Symbol: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: R_X86_64_64
+ - Offset: 0x18
+ Symbol: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: R_X86_64_64
+ Addend: 6
+ - Offset: 0x20
+ Symbol: .text.main
+ Type: R_X86_64_64
+ - Offset: 0x28
+ Symbol: .text.main
+ Type: R_X86_64_64
+ Addend: 83
+ - Name: .rela.eh_frame
+ Type: SHT_RELA
+ Flags: [ SHF_INFO_LINK ]
+ Link: .symtab
+ AddressAlign: 0x8
+ Info: .eh_frame
+ Relocations:
+ - Offset: 0x20
+ Symbol: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: R_X86_64_PC32
+ - Offset: 0x34
+ Symbol: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: R_X86_64_PC32
+ - Offset: 0x48
+ Symbol: .text.main
+ Type: R_X86_64_PC32
+ - Name: .rela.debug_line
+ Type: SHT_RELA
+ Flags: [ SHF_INFO_LINK ]
+ Link: .symtab
+ AddressAlign: 0x8
+ Info: .debug_line
+ Relocations:
+ - Offset: 0x30
+ Symbol: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: R_X86_64_64
+ - Offset: 0x47
+ Symbol: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: R_X86_64_64
+ - Offset: 0x5E
+ Symbol: .text.main
+ Type: R_X86_64_64
+ - Type: SectionHeaderTable
+ Sections:
+ - Name: .strtab
+ - Name: .text
+ - Name: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ - Name: .text._ZN4main6use_it17h7beb6f96865c87acE
+ - Name: .text.main
+ - Name: .rela.text.main
+ - Name: .debug_gdb_scripts
+ - Name: .debug_abbrev
+ - Name: .debug_info
+ - Name: .rela.debug_info
+ - Name: .debug_aranges
+ - Name: .rela.debug_aranges
+ - Name: .debug_ranges
+ - Name: .rela.debug_ranges
+ - Name: .debug_str
+ - Name: .comment
+ - Name: .note.GNU-stack
+ - Name: .eh_frame
+ - Name: .rela.eh_frame
+ - Name: .debug_line
+ - Name: .rela.debug_line
+ - Name: .symtab
+Symbols:
+ - Name: main.9b5cc465332d101d-cgu.0
+ Type: STT_FILE
+ Index: SHN_ABS
+ - Name: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: STT_SECTION
+ Section: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ - Name: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Type: STT_SECTION
+ Section: .text._ZN4main6use_it17h7beb6f96865c87acE
+ - Name: _ZN4main6use_it17h7beb6f96865c87acE
+ Type: STT_FUNC
+ Section: .text._ZN4main6use_it17h7beb6f96865c87acE
+ Size: 0x6
+ - Name: .text.main
+ Type: STT_SECTION
+ Section: .text.main
+ - Name: .debug_abbrev
+ Type: STT_SECTION
+ Section: .debug_abbrev
+ - Name: .debug_info
+ Type: STT_SECTION
+ Section: .debug_info
+ - Name: .debug_ranges
+ Type: STT_SECTION
+ Section: .debug_ranges
+ - Name: .debug_str
+ Type: STT_SECTION
+ Section: .debug_str
+ - Name: .debug_line
+ Type: STT_SECTION
+ Section: .debug_line
+ - Name: _RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Type: STT_FUNC
+ Section: .text._RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ Binding: STB_GLOBAL
+ Size: 0x7
+ Other: [ STV_HIDDEN ]
+ - Name: main
+ Type: STT_FUNC
+ Section: .text.main
+ Binding: STB_GLOBAL
+ Size: 0x53
+ - Name: __rustc_debug_gdb_scripts_section__
+ Type: STT_OBJECT
+ Section: .debug_gdb_scripts
+ Binding: STB_WEAK
+ Size: 0x22
+DWARF:
+ debug_str:
+ - 'clang LLVM (rustc version 1.93.0 (254b59607 2026-01-19))'
+ - 'src/main.rs\@\main.9b5cc465332d101d-cgu.0'
+ - 'C:\Coding\NotMyCode\llvm_patches\llvm-project\z'
+ - main
+ - _RNvCshXwFllX56pT_7___rustc17rust_begin_unwind
+ - panic
+ - _ZN4main6use_it17h7beb6f96865c87acE
+ - use_it
+ - _info
+ - core
+ - panic_info
+ - message
+ - fmt
+ - template
+ - ptr
+ - non_null
+ - u8
+ - T
+ - pointer
+ - '*const u8'
+ - 'NonNull<u8>'
+ - args
+ - rt
+ - ty
+ - u64
+ - Placeholder
+ - value
+ - '()'
+ - '*const ()'
+ - 'NonNull<()>'
+ - formatter
+ - result
+ - Ok
+ - Error
+ - E
+ - __0
+ - Err
+ - 'Result<(), core::fmt::Error>'
+ - options
+ - flags
+ - u32
+ - width
+ - u16
+ - precision
+ - FormattingOptions
+ - buf
+ - 'dyn core::fmt::Write'
+ - vtable
+ - usize
+ - __ARRAY_SIZE_TYPE__
+ - '&[usize; 6]'
+ - '&mut dyn core::fmt::Write'
+ - Formatter
+ - '&mut core::fmt::Formatter'
+ - 'unsafe fn(core::ptr::non_null::NonNull<()>, &mut core::fmt::Formatter) -> core::result::Result<(), core::fmt::Error>'
+ - _lifetime
+ - marker
+ - '&()'
+ - 'PhantomData<&()>'
+ - Count
+ - ArgumentType
+ - Argument
+ - '*const core::fmt::rt::Argument'
+ - 'NonNull<core::fmt::rt::Argument>'
+ - Arguments
+ - '&core::fmt::Arguments'
+ - location
+ - filename
+ - data_ptr
+ - length
+ - '*const str'
+ - 'NonNull<str>'
+ - line
+ - col
+ - _filename
+ - '&str'
+ - 'PhantomData<&str>'
+ - Location
+ - '&core::panic::location::Location'
+ - can_unwind
+ - bool
+ - force_no_backtrace
+ - PanicInfo
+ - '&core::panic::panic_info::PanicInfo'
+ - u128
+ - Value
+ - None
+ - BigDiscr
+ - '&main::BigDiscr'
+ - none
+ - some
+ debug_aranges:
+ - Length: 0x4C
+ Version: 2
+ CuOffset: 0x0
+ AddressSize: 0x8
+ Descriptors:
+ - Address: 0x0
+ Length: 0x7
+ - Address: 0x0
+ Length: 0x6
+ - Address: 0x0
+ Length: 0x53
+ debug_ranges:
+ - Offset: 0x0
+ AddrSize: 0x8
+ Entries: []
+ - Offset: 0x10
+ AddrSize: 0x8
+ Entries: []
+ - Offset: 0x20
+ AddrSize: 0x8
+ Entries: []
+ - Offset: 0x30
+ AddrSize: 0x8
+ Entries: []
+...
More information about the lldb-commits
mailing list