Author: António Afonso Date: 2020-11-09T09:07:48-08:00 New Revision: a9dcd15f50dc27ca3ed4aa98b8832923db7dfb61
URL: https://github.com/llvm/llvm-project/commit/a9dcd15f50dc27ca3ed4aa98b8832923db7dfb61 DIFF: https://github.com/llvm/llvm-project/commit/a9dcd15f50dc27ca3ed4aa98b8832923db7dfb61.diff LOG: Revert "Ignores functions that have a range starting outside of a code section" This reverts commit df30bc0168d236e5575d815030d6fe4cd8626f34. Added: Modified: lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Removed: lldb/test/Shell/SymbolFile/DWARF/function-entries-invalid-addresses.yaml ################################################################################ diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h index d808e4304c03..2e0a7fd3ecd3 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h @@ -32,8 +32,7 @@ class DWARFASTParser { virtual lldb_private::Function * ParseFunctionFromDWARF(lldb_private::CompileUnit &comp_unit, - const DWARFDIE &die, - lldb::addr_t first_code_address) = 0; + const DWARFDIE &die) = 0; virtual bool CompleteTypeFromDWARF(const DWARFDIE &die, lldb_private::Type *type, diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp index b0f55ba1ab22..2003a24c04fa 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp @@ -2228,10 +2228,8 @@ size_t DWARFASTParserClang::ParseChildEnumerators( return enumerators_added; } -Function * -DWARFASTParserClang::ParseFunctionFromDWARF(CompileUnit &comp_unit, - const DWARFDIE &die, - lldb::addr_t first_code_address) { +Function *DWARFASTParserClang::ParseFunctionFromDWARF(CompileUnit &comp_unit, + const DWARFDIE &die) { DWARFRangeList func_ranges; const char *name = nullptr; const char *mangled = nullptr; @@ -2266,9 +2264,7 @@ DWARFASTParserClang::ParseFunctionFromDWARF(CompileUnit &comp_unit, func_range.SetByteSize(highest_func_addr - lowest_func_addr); } - if (lowest_func_addr >= first_code_address && - lowest_func_addr != LLDB_INVALID_ADDRESS && - lowest_func_addr <= highest_func_addr) { + if (func_range.GetBaseAddress().IsValid()) { Mangled func_name; if (mangled) func_name.SetValue(ConstString(mangled), true); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h index 3b6069d5ef2e..e13716b95c1c 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h @@ -47,8 +47,7 @@ class DWARFASTParserClang : public DWARFASTParser { lldb_private::Function * ParseFunctionFromDWARF(lldb_private::CompileUnit &comp_unit, - const DWARFDIE &die, - lldb::addr_t first_code_address) override; + const DWARFDIE &die) override; bool CompleteTypeFromDWARF(const DWARFDIE &die, lldb_private::Type *type, diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 483d607a8f1f..43aa8bca23f8 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -792,8 +792,7 @@ Function *SymbolFileDWARF::ParseFunction(CompileUnit &comp_unit, if (!dwarf_ast) return nullptr; - return dwarf_ast->ParseFunctionFromDWARF(comp_unit, die, - m_first_code_address); + return dwarf_ast->ParseFunctionFromDWARF(comp_unit, die); } lldb::addr_t SymbolFileDWARF::FixupAddress(lldb::addr_t file_addr) { diff --git a/lldb/test/Shell/SymbolFile/DWARF/function-entries-invalid-addresses.yaml b/lldb/test/Shell/SymbolFile/DWARF/function-entries-invalid-addresses.yaml deleted file mode 100644 index 7cdade4dafa4..000000000000 --- a/lldb/test/Shell/SymbolFile/DWARF/function-entries-invalid-addresses.yaml +++ /dev/null @@ -1,367 +0,0 @@ -# RUN: split-file %s %t -# RUN: yaml2obj %t/test.yaml > %t/test.obj - -#--- checks.lldb-commands -# RUN: %lldb %t/test.obj -b -o "settings set interpreter.stop-command-source-on-error false" -s %t/checks.lldb-commands | FileCheck %s - -image lookup -F main -# CHECK-LABEL: image lookup -F main -# CHECK: 1 match found {{.*}} - -image lookup -F foo -# CHECK-LABEL: image lookup -F foo -# CHECK-NOT: 1 match found {{.*}} - -#--- test.yaml -# int foo() { -# return 1; -# } -# -# int main() { -# return 0; -# } ---- !mach-o -FileHeader: - magic: 0xFEEDFACF - cputype: 0x01000007 - cpusubtype: 0x00000003 - filetype: 0x0000000A - ncmds: 7 - sizeofcmds: 1400 - flags: 0x00000000 - reserved: 0x00000000 -LoadCommands: - - cmd: LC_UUID - cmdsize: 24 - uuid: FD292DBF-A309-369B-A588-00E20D0E84CF - - cmd: LC_BUILD_VERSION - cmdsize: 24 - platform: 1 - minos: 659200 - sdk: 659206 - ntools: 0 - - cmd: LC_SYMTAB - cmdsize: 24 - symoff: 4096 - nsyms: 3 - stroff: 4144 - strsize: 33 - - cmd: LC_SEGMENT_64 - cmdsize: 72 - segname: __PAGEZERO - vmaddr: 0 - vmsize: 4294967296 - fileoff: 0 - filesize: 0 - maxprot: 0 - initprot: 0 - nsects: 0 - flags: 0 - - cmd: LC_SEGMENT_64 - cmdsize: 232 - segname: __TEXT - vmaddr: 4294967296 - vmsize: 16384 - fileoff: 0 - filesize: 0 - maxprot: 5 - initprot: 5 - nsects: 2 - flags: 0 - Sections: - - sectname: __text - segname: __TEXT - addr: 0x0000000100003FA0 - size: 24 - offset: 0x00000000 - align: 4 - reloff: 0x00000000 - nreloc: 0 - flags: 0x80000400 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - content: CFFAEDFE07000001030000000A0000000700000078050000 - - sectname: __unwind_info - segname: __TEXT - addr: 0x0000000100003FB8 - size: 72 - offset: 0x00000000 - align: 2 - reloff: 0x00000000 - nreloc: 0 - flags: 0x00000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - content: CFFAEDFE07000001030000000A000000070000007805000000000000000000001B00000018000000FD292DBFA309369BA58800E20D0E84CF320000001800000001000000000F0A00 - - cmd: LC_SEGMENT_64 - cmdsize: 72 - segname: __LINKEDIT - vmaddr: 4294983680 - vmsize: 4096 - fileoff: 4096 - filesize: 81 - maxprot: 1 - initprot: 1 - nsects: 0 - flags: 0 - - cmd: LC_SEGMENT_64 - cmdsize: 952 - segname: __DWARF - vmaddr: 4294987776 - vmsize: 4096 - fileoff: 8192 - filesize: 826 - maxprot: 7 - initprot: 3 - nsects: 6 - flags: 0 - Sections: - - sectname: __debug_pubnames - segname: __DWARF - addr: 0x0000000100005052 - size: 35 - offset: 0x00002052 - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x00000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_pubtypes - segname: __DWARF - addr: 0x0000000100005075 - size: 26 - offset: 0x00002075 - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x00000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_aranges - segname: __DWARF - addr: 0x000000010000508F - size: 64 - offset: 0x0000208F - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x00000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_info - segname: __DWARF - addr: 0x00000001000050CF - size: 108 - offset: 0x000020CF - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x00000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_abbrev - segname: __DWARF - addr: 0x000000010000513B - size: 66 - offset: 0x0000213B - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x00000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 - - sectname: __debug_str - segname: __DWARF - addr: 0x000000010000517D - size: 206 - offset: 0x0000217D - align: 0 - reloff: 0x00000000 - nreloc: 0 - flags: 0x00000000 - reserved1: 0x00000000 - reserved2: 0x00000000 - reserved3: 0x00000000 -LinkEditData: - NameList: - - n_strx: 2 - n_type: 0x0F - n_sect: 1 - n_desc: 16 - n_value: 4294967296 - - n_strx: 22 - n_type: 0x0F - n_sect: 1 - n_desc: 0 - n_value: 4294983584 - - n_strx: 27 - n_type: 0x0F - n_sect: 1 - n_desc: 0 - n_value: 4294983600 - StringTable: - - '' - - '' - - __mh_execute_header - - _foo - - _main -DWARF: - debug_str: - - '' - - 'Apple clang version 12.0.0 (clang-1200.0.32.2)' - - main.c - - '/Applications/Xcode_12.0.0_fb.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk' - - MacOSX.sdk - - '/Users/aadsm/Projects' - - foo - - main - - int - debug_abbrev: - - ID: 0 - Table: - - Code: 0x0000000000000001 - 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_APPLE_sdk - 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: 0x0000000000000002 - Tag: DW_TAG_subprogram - Children: DW_CHILDREN_no - Attributes: - - Attribute: DW_AT_low_pc - Form: DW_FORM_addr - - Attribute: DW_AT_high_pc - 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: 0x0000000000000003 - 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 - debug_aranges: - - Length: 0x000000000000003C - Version: 2 - CuOffset: 0x0000000000000000 - AddressSize: 0x08 - Descriptors: - - Address: 0x0000000100003FA0 - Length: 0x000000000000000B - - Address: 0x0000000100003FB0 - Length: 0x0000000000000008 - debug_pubnames: - Length: 0x000000000000001F - Version: 2 - UnitOffset: 0 - UnitSize: 108 - Entries: - - DieOffset: 0x00000032 - Name: foo - - DieOffset: 0x0000004B - Name: main - debug_pubtypes: - Length: 0x0000000000000016 - Version: 2 - UnitOffset: 0 - UnitSize: 108 - Entries: - - DieOffset: 0x00000064 - Name: int - debug_info: - - Length: 0x0000000000000068 - Version: 4 - AbbrevTableID: 0 - AbbrOffset: 0x0000000000000000 - AddrSize: 8 - Entries: - - AbbrCode: 0x00000001 - Values: - - Value: 0x0000000000000001 - - Value: 0x000000000000000C - - Value: 0x0000000000000030 - - Value: 0x0000000000000037 - - Value: 0x00000000000000A0 - - Value: 0x0000000000000000 - - Value: 0x00000000000000AB - - Value: 0x0000000000000001 - - Value: 0x0000000100003FA0 - - Value: 0x0000000000000018 - - AbbrCode: 0x00000002 - Values: # DW_TAG_subprogram foo - - Value: 0x0000000000003FA0 # DW_AT_low_pc points to invalid loc - - Value: 0x000000000000000B - - Value: 0x0000000000000001 - BlockData: [ 0x56 ] - - Value: 0x0000000000000001 - - Value: 0x00000000000000C1 - - Value: 0x0000000000000001 - - Value: 0x0000000000000001 - - Value: 0x0000000000000064 - - Value: 0x0000000000000001 - - Value: 0x0000000000000001 - - AbbrCode: 0x00000002 - Values: # DW_TAG_subprogram main - - Value: 0x0000000100003FB0 - - Value: 0x0000000000000008 - - Value: 0x0000000000000001 - BlockData: [ 0x56 ] - - Value: 0x0000000000000001 - - Value: 0x00000000000000C5 - - Value: 0x0000000000000001 - - Value: 0x0000000000000005 - - Value: 0x0000000000000064 - - Value: 0x0000000000000001 - - Value: 0x0000000000000001 - - AbbrCode: 0x00000003 - Values: - - Value: 0x00000000000000CA - - Value: 0x0000000000000005 - - Value: 0x0000000000000004 - - AbbrCode: 0x00000000 -... _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits