This revision was automatically updated to reflect the committed changes.
Closed by commit rLLDB351330: Teach the default symbol vendor to respect 
module.GetSymbolFileFileSpec() (authored by labath, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D56589?vs=181243&id=182013#toc

Repository:
  rLLDB LLDB

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D56589/new/

https://reviews.llvm.org/D56589

Files:
  lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml
  lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms
  lit/SymbolFile/Breakpad/symtab-macho.test
  source/Symbol/SymbolVendor.cpp

Index: source/Symbol/SymbolVendor.cpp
===================================================================
--- source/Symbol/SymbolVendor.cpp
+++ source/Symbol/SymbolVendor.cpp
@@ -43,12 +43,19 @@
   }
   // The default implementation just tries to create debug information using
   // the file representation for the module.
-  instance_ap.reset(new SymbolVendor(module_sp));
-  if (instance_ap.get()) {
-    ObjectFile *objfile = module_sp->GetObjectFile();
-    if (objfile)
-      instance_ap->AddSymbolFileRepresentation(objfile->shared_from_this());
+  ObjectFileSP sym_objfile_sp;
+  FileSpec sym_spec = module_sp->GetSymbolFileFileSpec();
+  if (sym_spec && sym_spec != module_sp->GetObjectFile()->GetFileSpec()) {
+    DataBufferSP data_sp;
+    offset_t data_offset = 0;
+    sym_objfile_sp = ObjectFile::FindPlugin(
+        module_sp, &sym_spec, 0, FileSystem::Instance().GetByteSize(sym_spec),
+        data_sp, data_offset);
   }
+  if (!sym_objfile_sp)
+    sym_objfile_sp = module_sp->GetObjectFile()->shared_from_this();
+  instance_ap.reset(new SymbolVendor(module_sp));
+  instance_ap->AddSymbolFileRepresentation(sym_objfile_sp);
   return instance_ap.release();
 }
 
Index: lit/SymbolFile/Breakpad/symtab-macho.test
===================================================================
--- lit/SymbolFile/Breakpad/symtab-macho.test
+++ lit/SymbolFile/Breakpad/symtab-macho.test
@@ -0,0 +1,21 @@
+# RUN: yaml2obj %S/Inputs/basic-macho.yaml > %T/symtab-macho.out
+# RUN: %lldb %T/symtab-macho.out -o "target symbols add -s symtab-macho.out %S/Inputs/symtab-macho.syms" \
+# RUN:   -s %s | FileCheck %s
+
+image dump symtab symtab-macho.out
+# CHECK-LABEL: (lldb) image dump symtab symtab-macho.out
+# CHECK: Symtab, file = {{.*}}symtab-macho.out, num_symbols = 1:
+# CHECK: Index   UserID DSX Type            File Address/Value Load Address       Size               Flags      Name
+# CHECK: [    0]      0   X Code            0x0000000100000ff0                    0x0000000000000006 0x00000000 _start
+
+# CHECK-LABEL: (lldb) image lookup -a 0x100000ff0 -v
+# CHECK: Address: symtab-macho.out[0x0000000100000ff0] (symtab-macho.out.__TEXT.__text + 0)
+# CHECK: Symbol: id = {0x00000000}, range = [0x0000000100000ff0-0x0000000100000ff6), name="_start"
+
+# CHECK-LABEL: (lldb) image lookup -n _start -v
+# CHECK: Address: symtab-macho.out[0x0000000100000ff0] (symtab-macho.out.__TEXT.__text + 0)
+# CHECK: Symbol: id = {0x00000000}, range = [0x0000000100000ff0-0x0000000100000ff6), name="_start"
+
+image lookup -a 0x100000ff0 -v
+image lookup -n _start -v
+exit
Index: lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms
===================================================================
--- lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms
+++ lit/SymbolFile/Breakpad/Inputs/symtab-macho.syms
@@ -0,0 +1,2 @@
+MODULE mac x86_64 601705B3B1227B7D39F9240E077D625B0 mac.out
+PUBLIC ff0 0 _start
Index: lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml
===================================================================
--- lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml
+++ lit/SymbolFile/Breakpad/Inputs/basic-macho.yaml
@@ -0,0 +1,47 @@
+--- !mach-o
+FileHeader:      
+  magic:           0xFEEDFACF
+  cputype:         0x01000007
+  cpusubtype:      0x00000003
+  filetype:        0x00000002
+  ncmds:           9
+  sizeofcmds:      520
+  flags:           0x00000085
+  reserved:        0x00000000
+LoadCommands:    
+  - 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:         152
+    segname:         __TEXT
+    vmaddr:          4294967296
+    vmsize:          4096
+    fileoff:         0
+    filesize:        4096
+    maxprot:         7
+    initprot:        5
+    nsects:          1
+    flags:           0
+    Sections:        
+      - sectname:        __text
+        segname:         __TEXT
+        addr:            0x0000000100000FF0
+        size:            6
+        offset:          0x00000FF0
+        align:           4
+        reloff:          0x00000000
+        nreloc:          0
+        flags:           0x80000400
+        reserved1:       0x00000000
+        reserved2:       0x00000000
+        reserved3:       0x00000000
+...
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to