[Lldb-commits] [lldb] r243181 - Make sure we resolve ~ in paths coming from the plist in a dSYM before adding them

Jim Ingham jingham at apple.com
Fri Jul 24 16:40:33 PDT 2015


Author: jingham
Date: Fri Jul 24 18:40:32 2015
New Revision: 243181

URL: http://llvm.org/viewvc/llvm-project?rev=243181&view=rev
Log:
Make sure we resolve ~ in paths coming from the plist in a dSYM before adding them
to the path remappings.
Also don't add the paths to the path mapping when DebugSymbols tells up about files, since
we'll just do that again when we read in the dSYM.

<rdar://problem/21986208>

Modified:
    lldb/trunk/source/Host/macosx/Symbols.cpp
    lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp

Modified: lldb/trunk/source/Host/macosx/Symbols.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/Symbols.cpp?rev=243181&r1=243180&r2=243181&view=diff
==============================================================================
--- lldb/trunk/source/Host/macosx/Symbols.cpp (original)
+++ lldb/trunk/source/Host/macosx/Symbols.cpp Fri Jul 24 18:40:32 2015
@@ -133,39 +133,16 @@ LocateMacOSXFilesUsingDebugSymbols
                         }
                     }
 
-                    CFCReleaser<CFDictionaryRef> dict(::DBGCopyDSYMPropertyLists (dsym_url.get()));
-                    CFDictionaryRef uuid_dict = NULL;
-                    if (dict.get())
-                    {
-                        CFCString uuid_cfstr (uuid->GetAsString().c_str());
-                        uuid_dict = static_cast<CFDictionaryRef>(::CFDictionaryGetValue (dict.get(), uuid_cfstr.get()));
-                        if (uuid_dict)
-                        {
-
-                            CFStringRef actual_src_cfpath = static_cast<CFStringRef>(::CFDictionaryGetValue (uuid_dict, CFSTR("DBGSourcePath")));
-                            if (actual_src_cfpath)
-                            {
-                                CFStringRef build_src_cfpath = static_cast<CFStringRef>(::CFDictionaryGetValue (uuid_dict, CFSTR("DBGBuildSourcePath")));
-                                if (build_src_cfpath)
-                                {
-                                    char actual_src_path[PATH_MAX];
-                                    char build_src_path[PATH_MAX];
-                                    ::CFStringGetFileSystemRepresentation (actual_src_cfpath, actual_src_path, sizeof(actual_src_path));
-                                    ::CFStringGetFileSystemRepresentation (build_src_cfpath, build_src_path, sizeof(build_src_path));
-                                    if (actual_src_path[0] == '~')
-                                    {
-                                        FileSpec resolved_source_path(actual_src_path, true);
-                                        resolved_source_path.GetPath(actual_src_path, sizeof(actual_src_path));
-                                    }
-                                    module_spec.GetSourceMappingList().Append (ConstString(build_src_path), ConstString(actual_src_path), true);
-                                }
-                            }
-                        }
-                    }
-
                     if (out_exec_fspec)
                     {
                         bool success = false;
+                        CFCReleaser<CFDictionaryRef> dict(::DBGCopyDSYMPropertyLists (dsym_url.get()));
+                        CFDictionaryRef uuid_dict = NULL;
+                        if (dict.get())
+                        {
+                            CFCString uuid_cfstr (uuid->GetAsString().c_str());
+                            uuid_dict = static_cast<CFDictionaryRef>(::CFDictionaryGetValue (dict.get(), uuid_cfstr.get()));
+                        }
                         if (uuid_dict)
                         {
                             CFStringRef exec_cf_path = static_cast<CFStringRef>(::CFDictionaryGetValue (uuid_dict, CFSTR("DBGSymbolRichExecutable")));

Modified: lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp?rev=243181&r1=243180&r2=243181&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp (original)
+++ lldb/trunk/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp Fri Jul 24 18:40:32 2015
@@ -204,6 +204,11 @@ SymbolVendorMacOSX::CreateInstance (cons
                                             plist.GetValueAsString("DBGSourcePath", DBGSourcePath);
                                             if (!DBGBuildSourcePath.empty() && !DBGSourcePath.empty())
                                             {
+                                                if (DBGSourcePath[0] == '~')
+                                                {
+                                                    FileSpec resolved_source_path(DBGSourcePath.c_str(), true);
+                                                    DBGSourcePath = resolved_source_path.GetPath();
+                                                }
                                                 module_sp->GetSourceMappingList().Append (ConstString(DBGBuildSourcePath), ConstString(DBGSourcePath), true);
                                             }
                                         }





More information about the lldb-commits mailing list