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>

llvm-svn: 243181
diff --git a/lldb/source/Host/macosx/Symbols.cpp b/lldb/source/Host/macosx/Symbols.cpp
index db05b1b..a86a773 100644
--- a/lldb/source/Host/macosx/Symbols.cpp
+++ b/lldb/source/Host/macosx/Symbols.cpp
@@ -133,39 +133,16 @@
                         }
                     }
 
-                    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")));
diff --git a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
index f2d1f81..7d21fbc 100644
--- a/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
+++ b/lldb/source/Plugins/SymbolVendor/MacOSX/SymbolVendorMacOSX.cpp
@@ -204,6 +204,11 @@
                                             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);
                                             }
                                         }