[Lldb-commits] [lldb] a9dcd15 - Revert "Ignores functions that have a range starting outside of a code section"

António Afonso via lldb-commits lldb-commits at lists.llvm.org
Mon Nov 9 09:08:22 PST 2020


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
-...


        


More information about the lldb-commits mailing list