llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: nerix (Nerixyz) <details> <summary>Changes</summary> Different object file formats support DWARF sections (COFF, ELF, MachO, PE/COFF, WASM). COFF and PE/COFF only matched a subset. This caused some GCC executables produced on MinGW to have issue later on when debugging. One example is that `.debug_rnglists` was not matched, which caused range-extraction to fail when printing a backtrace. This unifies the parsing of section names in `ObjectFile::GetDWARFSectionTypeFromName`, so all file formats can use the same naming convention. Since the prefixes are different, `GetDWARFSectionTypeFromName` only matches the suffixes (i.e. `.debug_` needs to be stripped before). I added two tests to ensure the sections are correctly identified on Windows executables. --- Patch is 28.96 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/141344.diff 9 Files Affected: - (modified) lldb/include/lldb/Symbol/ObjectFile.h (+7) - (modified) lldb/source/Plugins/ObjectFile/COFF/ObjectFileCOFF.cpp (+9-13) - (modified) lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp (+3-33) - (modified) lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp (+4-84) - (modified) lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp (+3-14) - (modified) lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp (+1-31) - (modified) lldb/source/Symbol/ObjectFile.cpp (+35) - (added) lldb/test/Shell/ObjectFile/PECOFF/dwarf-clang.yaml (+151) - (added) lldb/test/Shell/ObjectFile/PECOFF/dwarf-gcc-mingw.yaml (+151) ``````````diff diff --git a/lldb/include/lldb/Symbol/ObjectFile.h b/lldb/include/lldb/Symbol/ObjectFile.h index 7fca6383fa9f3..43567592dd447 100644 --- a/lldb/include/lldb/Symbol/ObjectFile.h +++ b/lldb/include/lldb/Symbol/ObjectFile.h @@ -709,6 +709,13 @@ class ObjectFile : public std::enable_shared_from_this<ObjectFile>, llvm::StringRef name, lldb::SymbolType symbol_type_hint = lldb::eSymbolTypeUndefined); + /// Parses the section type from a section name for DWARF sections. + /// + /// The \a name must be stripped of the default prefix (e.g. ".debug_" or + /// "__debug_"). If there's no matching section type, \a eSectionTypeOther + /// will be returned. + static lldb::SectionType GetDWARFSectionTypeFromName(llvm::StringRef name); + /// Loads this objfile to memory. /// /// Loads the bits needed to create an executable image to the memory. It is diff --git a/lldb/source/Plugins/ObjectFile/COFF/ObjectFileCOFF.cpp b/lldb/source/Plugins/ObjectFile/COFF/ObjectFileCOFF.cpp index a7ad5d27b237f..1121f696637b6 100644 --- a/lldb/source/Plugins/ObjectFile/COFF/ObjectFileCOFF.cpp +++ b/lldb/source/Plugins/ObjectFile/COFF/ObjectFileCOFF.cpp @@ -191,19 +191,15 @@ void ObjectFileCOFF::CreateSections(lldb_private::SectionList §ions) { auto SectionType = [](StringRef Name, const coff_section *Section) -> lldb::SectionType { - lldb::SectionType type = - StringSwitch<lldb::SectionType>(Name) - // DWARF Debug Sections - .Case(".debug_abbrev", eSectionTypeDWARFDebugAbbrev) - .Case(".debug_info", eSectionTypeDWARFDebugInfo) - .Case(".debug_line", eSectionTypeDWARFDebugLine) - .Case(".debug_pubnames", eSectionTypeDWARFDebugPubNames) - .Case(".debug_pubtypes", eSectionTypeDWARFDebugPubTypes) - .Case(".debug_str", eSectionTypeDWARFDebugStr) - // CodeView Debug Sections: .debug$S, .debug$T - .StartsWith(".debug$", eSectionTypeDebug) - .Case("clangast", eSectionTypeOther) - .Default(eSectionTypeInvalid); + // DWARF Debug Sections + if (Name.consume_front(".debug_")) + return GetDWARFSectionTypeFromName(Name); + + lldb::SectionType type = StringSwitch<lldb::SectionType>(Name) + // CodeView Debug Sections: .debug$S, .debug$T + .StartsWith(".debug$", eSectionTypeDebug) + .Case("clangast", eSectionTypeOther) + .Default(eSectionTypeInvalid); if (type != eSectionTypeInvalid) return type; diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp index 13e1198516f78..f69358de6a288 100644 --- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp +++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp @@ -1653,39 +1653,9 @@ lldb::user_id_t ObjectFileELF::GetSectionIndexByName(const char *name) { } static SectionType GetSectionTypeFromName(llvm::StringRef Name) { - if (Name.consume_front(".debug_")) { - return llvm::StringSwitch<SectionType>(Name) - .Case("abbrev", eSectionTypeDWARFDebugAbbrev) - .Case("abbrev.dwo", eSectionTypeDWARFDebugAbbrevDwo) - .Case("addr", eSectionTypeDWARFDebugAddr) - .Case("aranges", eSectionTypeDWARFDebugAranges) - .Case("cu_index", eSectionTypeDWARFDebugCuIndex) - .Case("frame", eSectionTypeDWARFDebugFrame) - .Case("info", eSectionTypeDWARFDebugInfo) - .Case("info.dwo", eSectionTypeDWARFDebugInfoDwo) - .Cases("line", "line.dwo", eSectionTypeDWARFDebugLine) - .Cases("line_str", "line_str.dwo", eSectionTypeDWARFDebugLineStr) - .Case("loc", eSectionTypeDWARFDebugLoc) - .Case("loc.dwo", eSectionTypeDWARFDebugLocDwo) - .Case("loclists", eSectionTypeDWARFDebugLocLists) - .Case("loclists.dwo", eSectionTypeDWARFDebugLocListsDwo) - .Case("macinfo", eSectionTypeDWARFDebugMacInfo) - .Cases("macro", "macro.dwo", eSectionTypeDWARFDebugMacro) - .Case("names", eSectionTypeDWARFDebugNames) - .Case("pubnames", eSectionTypeDWARFDebugPubNames) - .Case("pubtypes", eSectionTypeDWARFDebugPubTypes) - .Case("ranges", eSectionTypeDWARFDebugRanges) - .Case("rnglists", eSectionTypeDWARFDebugRngLists) - .Case("rnglists.dwo", eSectionTypeDWARFDebugRngListsDwo) - .Case("str", eSectionTypeDWARFDebugStr) - .Case("str.dwo", eSectionTypeDWARFDebugStrDwo) - .Case("str_offsets", eSectionTypeDWARFDebugStrOffsets) - .Case("str_offsets.dwo", eSectionTypeDWARFDebugStrOffsetsDwo) - .Case("tu_index", eSectionTypeDWARFDebugTuIndex) - .Case("types", eSectionTypeDWARFDebugTypes) - .Case("types.dwo", eSectionTypeDWARFDebugTypesDwo) - .Default(eSectionTypeOther); - } + if (Name.consume_front(".debug_")) + return ObjectFile::GetDWARFSectionTypeFromName(Name); + return llvm::StringSwitch<SectionType>(Name) .Case(".ARM.exidx", eSectionTypeARMexidx) .Case(".ARM.extab", eSectionTypeARMextab) diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp index 3950454b7c90e..cbfebdbe913db 100644 --- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp +++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp @@ -1595,34 +1595,6 @@ static lldb::SectionType GetSectionType(uint32_t flags, static ConstString g_sect_name_objc_classlist("__objc_classlist"); static ConstString g_sect_name_cfstring("__cfstring"); - static ConstString g_sect_name_dwarf_debug_abbrev("__debug_abbrev"); - static ConstString g_sect_name_dwarf_debug_abbrev_dwo("__debug_abbrev.dwo"); - static ConstString g_sect_name_dwarf_debug_addr("__debug_addr"); - static ConstString g_sect_name_dwarf_debug_aranges("__debug_aranges"); - static ConstString g_sect_name_dwarf_debug_cu_index("__debug_cu_index"); - static ConstString g_sect_name_dwarf_debug_frame("__debug_frame"); - static ConstString g_sect_name_dwarf_debug_info("__debug_info"); - static ConstString g_sect_name_dwarf_debug_info_dwo("__debug_info.dwo"); - static ConstString g_sect_name_dwarf_debug_line("__debug_line"); - static ConstString g_sect_name_dwarf_debug_line_dwo("__debug_line.dwo"); - static ConstString g_sect_name_dwarf_debug_line_str("__debug_line_str"); - static ConstString g_sect_name_dwarf_debug_loc("__debug_loc"); - static ConstString g_sect_name_dwarf_debug_loclists("__debug_loclists"); - static ConstString g_sect_name_dwarf_debug_loclists_dwo("__debug_loclists.dwo"); - static ConstString g_sect_name_dwarf_debug_macinfo("__debug_macinfo"); - static ConstString g_sect_name_dwarf_debug_macro("__debug_macro"); - static ConstString g_sect_name_dwarf_debug_macro_dwo("__debug_macro.dwo"); - static ConstString g_sect_name_dwarf_debug_names("__debug_names"); - static ConstString g_sect_name_dwarf_debug_pubnames("__debug_pubnames"); - static ConstString g_sect_name_dwarf_debug_pubtypes("__debug_pubtypes"); - static ConstString g_sect_name_dwarf_debug_ranges("__debug_ranges"); - static ConstString g_sect_name_dwarf_debug_rnglists("__debug_rnglists"); - static ConstString g_sect_name_dwarf_debug_str("__debug_str"); - static ConstString g_sect_name_dwarf_debug_str_dwo("__debug_str.dwo"); - static ConstString g_sect_name_dwarf_debug_str_offs("__debug_str_offs"); - static ConstString g_sect_name_dwarf_debug_str_offs_dwo("__debug_str_offs.dwo"); - static ConstString g_sect_name_dwarf_debug_tu_index("__debug_tu_index"); - static ConstString g_sect_name_dwarf_debug_types("__debug_types"); static ConstString g_sect_name_dwarf_apple_names("__apple_names"); static ConstString g_sect_name_dwarf_apple_types("__apple_types"); static ConstString g_sect_name_dwarf_apple_namespaces("__apple_namespac"); @@ -1637,62 +1609,10 @@ static lldb::SectionType GetSectionType(uint32_t flags, static ConstString g_sect_name_lldb_formatters("__lldbformatters"); static ConstString g_sect_name_swift_ast("__swift_ast"); - if (section_name == g_sect_name_dwarf_debug_abbrev) - return eSectionTypeDWARFDebugAbbrev; - if (section_name == g_sect_name_dwarf_debug_abbrev_dwo) - return eSectionTypeDWARFDebugAbbrevDwo; - if (section_name == g_sect_name_dwarf_debug_addr) - return eSectionTypeDWARFDebugAddr; - if (section_name == g_sect_name_dwarf_debug_aranges) - return eSectionTypeDWARFDebugAranges; - if (section_name == g_sect_name_dwarf_debug_cu_index) - return eSectionTypeDWARFDebugCuIndex; - if (section_name == g_sect_name_dwarf_debug_frame) - return eSectionTypeDWARFDebugFrame; - if (section_name == g_sect_name_dwarf_debug_info) - return eSectionTypeDWARFDebugInfo; - if (section_name == g_sect_name_dwarf_debug_info_dwo) - return eSectionTypeDWARFDebugInfoDwo; - if (section_name == g_sect_name_dwarf_debug_line) - return eSectionTypeDWARFDebugLine; - if (section_name == g_sect_name_dwarf_debug_line_dwo) - return eSectionTypeDWARFDebugLine; // Same as debug_line. - if (section_name == g_sect_name_dwarf_debug_line_str) - return eSectionTypeDWARFDebugLineStr; - if (section_name == g_sect_name_dwarf_debug_loc) - return eSectionTypeDWARFDebugLoc; - if (section_name == g_sect_name_dwarf_debug_loclists) - return eSectionTypeDWARFDebugLocLists; - if (section_name == g_sect_name_dwarf_debug_loclists_dwo) - return eSectionTypeDWARFDebugLocListsDwo; - if (section_name == g_sect_name_dwarf_debug_macinfo) - return eSectionTypeDWARFDebugMacInfo; - if (section_name == g_sect_name_dwarf_debug_macro) - return eSectionTypeDWARFDebugMacro; - if (section_name == g_sect_name_dwarf_debug_macro_dwo) - return eSectionTypeDWARFDebugMacInfo; // Same as debug_macro. - if (section_name == g_sect_name_dwarf_debug_names) - return eSectionTypeDWARFDebugNames; - if (section_name == g_sect_name_dwarf_debug_pubnames) - return eSectionTypeDWARFDebugPubNames; - if (section_name == g_sect_name_dwarf_debug_pubtypes) - return eSectionTypeDWARFDebugPubTypes; - if (section_name == g_sect_name_dwarf_debug_ranges) - return eSectionTypeDWARFDebugRanges; - if (section_name == g_sect_name_dwarf_debug_rnglists) - return eSectionTypeDWARFDebugRngLists; - if (section_name == g_sect_name_dwarf_debug_str) - return eSectionTypeDWARFDebugStr; - if (section_name == g_sect_name_dwarf_debug_str_dwo) - return eSectionTypeDWARFDebugStrDwo; - if (section_name == g_sect_name_dwarf_debug_str_offs) - return eSectionTypeDWARFDebugStrOffsets; - if (section_name == g_sect_name_dwarf_debug_str_offs_dwo) - return eSectionTypeDWARFDebugStrOffsetsDwo; - if (section_name == g_sect_name_dwarf_debug_tu_index) - return eSectionTypeDWARFDebugTuIndex; - if (section_name == g_sect_name_dwarf_debug_types) - return eSectionTypeDWARFDebugTypes; + llvm::StringRef stripped_name = section_name.GetStringRef(); + if (stripped_name.consume_front("__debug_")) + return ObjectFile::GetDWARFSectionTypeFromName(stripped_name); + if (section_name == g_sect_name_dwarf_apple_names) return eSectionTypeDWARFAppleNames; if (section_name == g_sect_name_dwarf_apple_types) diff --git a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp index 609968bf0bde2..e23ce5b5b7dba 100644 --- a/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp +++ b/lldb/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp @@ -977,25 +977,14 @@ SectionType ObjectFilePECOFF::GetSectionType(llvm::StringRef sect_name, return eSectionTypeData; } + if (sect_name.consume_front(".debug_")) + return GetDWARFSectionTypeFromName(sect_name); + SectionType section_type = llvm::StringSwitch<SectionType>(sect_name) .Case(".debug", eSectionTypeDebug) .Case(".stabstr", eSectionTypeDataCString) .Case(".reloc", eSectionTypeOther) - .Case(".debug_abbrev", eSectionTypeDWARFDebugAbbrev) - .Case(".debug_aranges", eSectionTypeDWARFDebugAranges) - .Case(".debug_frame", eSectionTypeDWARFDebugFrame) - .Case(".debug_info", eSectionTypeDWARFDebugInfo) - .Case(".debug_line", eSectionTypeDWARFDebugLine) - .Case(".debug_loc", eSectionTypeDWARFDebugLoc) - .Case(".debug_loclists", eSectionTypeDWARFDebugLocLists) - .Case(".debug_macinfo", eSectionTypeDWARFDebugMacInfo) - .Case(".debug_names", eSectionTypeDWARFDebugNames) - .Case(".debug_pubnames", eSectionTypeDWARFDebugPubNames) - .Case(".debug_pubtypes", eSectionTypeDWARFDebugPubTypes) - .Case(".debug_ranges", eSectionTypeDWARFDebugRanges) - .Case(".debug_str", eSectionTypeDWARFDebugStr) - .Case(".debug_types", eSectionTypeDWARFDebugTypes) // .eh_frame can be truncated to 8 chars. .Cases(".eh_frame", ".eh_fram", eSectionTypeEHFrame) .Case(".gosymtab", eSectionTypeGoSymtab) diff --git a/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp b/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp index 06eb6ff9cafb5..67963a790a4fe 100644 --- a/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp +++ b/lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp @@ -252,37 +252,7 @@ void ObjectFileWasm::ParseSymtab(Symtab &symtab) {} static SectionType GetSectionTypeFromName(llvm::StringRef Name) { if (Name.consume_front(".debug_") || Name.consume_front(".zdebug_")) { - return llvm::StringSwitch<SectionType>(Name) - .Case("abbrev", eSectionTypeDWARFDebugAbbrev) - .Case("abbrev.dwo", eSectionTypeDWARFDebugAbbrevDwo) - .Case("addr", eSectionTypeDWARFDebugAddr) - .Case("aranges", eSectionTypeDWARFDebugAranges) - .Case("cu_index", eSectionTypeDWARFDebugCuIndex) - .Case("frame", eSectionTypeDWARFDebugFrame) - .Case("info", eSectionTypeDWARFDebugInfo) - .Case("info.dwo", eSectionTypeDWARFDebugInfoDwo) - .Cases("line", "line.dwo", eSectionTypeDWARFDebugLine) - .Cases("line_str", "line_str.dwo", eSectionTypeDWARFDebugLineStr) - .Case("loc", eSectionTypeDWARFDebugLoc) - .Case("loc.dwo", eSectionTypeDWARFDebugLocDwo) - .Case("loclists", eSectionTypeDWARFDebugLocLists) - .Case("loclists.dwo", eSectionTypeDWARFDebugLocListsDwo) - .Case("macinfo", eSectionTypeDWARFDebugMacInfo) - .Cases("macro", "macro.dwo", eSectionTypeDWARFDebugMacro) - .Case("names", eSectionTypeDWARFDebugNames) - .Case("pubnames", eSectionTypeDWARFDebugPubNames) - .Case("pubtypes", eSectionTypeDWARFDebugPubTypes) - .Case("ranges", eSectionTypeDWARFDebugRanges) - .Case("rnglists", eSectionTypeDWARFDebugRngLists) - .Case("rnglists.dwo", eSectionTypeDWARFDebugRngListsDwo) - .Case("str", eSectionTypeDWARFDebugStr) - .Case("str.dwo", eSectionTypeDWARFDebugStrDwo) - .Case("str_offsets", eSectionTypeDWARFDebugStrOffsets) - .Case("str_offsets.dwo", eSectionTypeDWARFDebugStrOffsetsDwo) - .Case("tu_index", eSectionTypeDWARFDebugTuIndex) - .Case("types", eSectionTypeDWARFDebugTypes) - .Case("types.dwo", eSectionTypeDWARFDebugTypesDwo) - .Default(eSectionTypeOther); + return ObjectFile::GetDWARFSectionTypeFromName(Name); } return eSectionTypeOther; } diff --git a/lldb/source/Symbol/ObjectFile.cpp b/lldb/source/Symbol/ObjectFile.cpp index afd0d298e675e..21daf7476b522 100644 --- a/lldb/source/Symbol/ObjectFile.cpp +++ b/lldb/source/Symbol/ObjectFile.cpp @@ -635,6 +635,41 @@ ObjectFile::GetSymbolTypeFromName(llvm::StringRef name, return symbol_type_hint; } +lldb::SectionType +ObjectFile::GetDWARFSectionTypeFromName(llvm::StringRef name) { + return llvm::StringSwitch<SectionType>(name) + .Case("abbrev", eSectionTypeDWARFDebugAbbrev) + .Case("abbrev.dwo", eSectionTypeDWARFDebugAbbrevDwo) + .Case("addr", eSectionTypeDWARFDebugAddr) + .Case("aranges", eSectionTypeDWARFDebugAranges) + .Case("cu_index", eSectionTypeDWARFDebugCuIndex) + .Case("frame", eSectionTypeDWARFDebugFrame) + .Case("info", eSectionTypeDWARFDebugInfo) + .Case("info.dwo", eSectionTypeDWARFDebugInfoDwo) + .Cases("line", "line.dwo", eSectionTypeDWARFDebugLine) + .Cases("line_str", "line_str.dwo", eSectionTypeDWARFDebugLineStr) + .Case("loc", eSectionTypeDWARFDebugLoc) + .Case("loc.dwo", eSectionTypeDWARFDebugLocDwo) + .Case("loclists", eSectionTypeDWARFDebugLocLists) + .Case("loclists.dwo", eSectionTypeDWARFDebugLocListsDwo) + .Case("macinfo", eSectionTypeDWARFDebugMacInfo) + .Cases("macro", "macro.dwo", eSectionTypeDWARFDebugMacro) + .Case("names", eSectionTypeDWARFDebugNames) + .Case("pubnames", eSectionTypeDWARFDebugPubNames) + .Case("pubtypes", eSectionTypeDWARFDebugPubTypes) + .Case("ranges", eSectionTypeDWARFDebugRanges) + .Case("rnglists", eSectionTypeDWARFDebugRngLists) + .Case("rnglists.dwo", eSectionTypeDWARFDebugRngListsDwo) + .Case("str", eSectionTypeDWARFDebugStr) + .Case("str.dwo", eSectionTypeDWARFDebugStrDwo) + .Case("str_offsets", eSectionTypeDWARFDebugStrOffsets) + .Case("str_offsets.dwo", eSectionTypeDWARFDebugStrOffsetsDwo) + .Case("tu_index", eSectionTypeDWARFDebugTuIndex) + .Case("types", eSectionTypeDWARFDebugTypes) + .Case("types.dwo", eSectionTypeDWARFDebugTypesDwo) + .Default(eSectionTypeOther); +} + std::vector<ObjectFile::LoadableData> ObjectFile::GetLoadableData(Target &target) { std::vector<LoadableData> loadables; diff --git a/lldb/test/Shell/ObjectFile/PECOFF/dwarf-clang.yaml b/lldb/test/Shell/ObjectFile/PECOFF/dwarf-clang.yaml new file mode 100644 index 0000000000000..1adc6152fb907 --- /dev/null +++ b/lldb/test/Shell/ObjectFile/PECOFF/dwarf-clang.yaml @@ -0,0 +1,151 @@ +# Test that LLDB can read executables with DWARF sections generated by Clang + +# RUN: yaml2obj %s -o %t +# RUN: lldb-test object-file %t | FileCheck %s + +# CHECK: Name: .debug_abbrev +# CHECK-NEXT: Type: dwarf-abbrev + +# CHECK: Name: .debug_addr +# CHECK-NEXT: Type: dwarf-addr + +# CHECK: Name: .debug_aranges +# CHECK-NEXT: Type: dwarf-aranges + +# CHECK: Name: .debug_info +# CHECK-NEXT: Type: dwarf-info + +# CHECK: Name: .debug_line +# CHECK-NEXT: Type: dwarf-line + +# CHECK: Name: .debug_line_str +# CHECK-NEXT: Type: dwarf-line-str + +# CHECK: Name: .debug_rnglists +# CHECK-NEXT: Type: dwarf-rnglists + +# CHECK: Name: .debug_str +# CHECK-NEXT: Type: dwarf-str + +# CHECK: Name: .debug_str_offsets +# CHECK-NEXT: Type: dwarf-str-offsets + +--- !COFF +OptionalHeader: + AddressOfEntryPoint: 4956 + ImageBase: 5368709120 + SectionAlignment: 4096 + FileAlignment: 512 + MajorOperatingSystemVersion: 6 + MinorOperatingSystemVersion: 0 + MajorImageVersion: 0 + MinorImageVersion: 0 + MajorSubsystemVersion: 6 + MinorSubsystemVersion: 0 + Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI + DLLCharacteristics: [ IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE ] + SizeOfStackReserve: 1048576 + SizeOfStackCommit: 4096 + SizeOfHeapReserve: 1048576 + SizeOfHeapCommit: 4096 +header: + Machine: IMAGE_FILE_MACHINE_AMD64 + Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE ] +sections: + - Name: .text + Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] + VirtualAddress: 4096 + VirtualSize: 64 + SectionData: DEADBEEFBAADF00D + - Name: .rdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] + VirtualAddress: 401408 + VirtualSize: 64 + SectionData: DEADBEEFBAADF00D + - Name: .data + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] + VirtualAddress: 479232 + VirtualSize: 64 + SectionData: DEADBEEFBAADF00D + - Name: .pdata + Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] + VirtualAddress: 491520 + VirtualSize: 64 + SectionData: DEADBEEFBAADF00D + - Name: .fptable + Characteristics: [ IM... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/141344 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits