diff options
| author | Greg Clayton <gclayton@apple.com> | 2013-05-10 21:47:16 +0000 |
|---|---|---|
| committer | Greg Clayton <gclayton@apple.com> | 2013-05-10 21:47:16 +0000 |
| commit | 57abc5d6a6f393f488903c5a35e5a898fc201d3a (patch) | |
| tree | 25cef51feff2409f74f0bdb1bd9938c20d138ba5 /lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp | |
| parent | bf0bd1f4ab2b9b4826d58407962260256d4b3709 (diff) | |
| download | bcm5719-llvm-57abc5d6a6f393f488903c5a35e5a898fc201d3a.tar.gz bcm5719-llvm-57abc5d6a6f393f488903c5a35e5a898fc201d3a.zip | |
<rdar://problem/13854277>
<rdar://problem/13594769>
Main changes in this patch include:
- cleanup plug-in interface and use ConstStrings for plug-in names
- Modfiied the BSD Archive plug-in to be able to pick out the correct .o file when .a files contain multiple .o files with the same name by using the timestamp
- Modified SymbolFileDWARFDebugMap to properly verify the timestamp on .o files it loads to ensure we don't load updated .o files and cause problems when debugging
The plug-in interface changes:
Modified the lldb_private::PluginInterface class that all plug-ins inherit from:
Changed:
virtual const char * GetPluginName() = 0;
To:
virtual ConstString GetPluginName() = 0;
Removed:
virtual const char * GetShortPluginName() = 0;
- Fixed up all plug-in to adhere to the new interface and to return lldb_private::ConstString values for the plug-in names.
- Fixed all plug-ins to return simple names with no prefixes. Some plug-ins had prefixes and most ones didn't, so now they all don't have prefixed names, just simple names like "linux", "gdb-remote", etc.
llvm-svn: 181631
Diffstat (limited to 'lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp')
| -rw-r--r-- | lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp b/lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp index 1078a23443f..ef4bd41dc78 100644 --- a/lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp +++ b/lldb/source/Plugins/Platform/Linux/PlatformLinux.cpp @@ -86,19 +86,20 @@ PlatformLinux::CreateInstance (bool force, const ArchSpec *arch) return NULL; } -const char * -PlatformLinux::GetPluginNameStatic() -{ - return "plugin.platform.linux"; -} -const char * -PlatformLinux::GetShortPluginNameStatic (bool is_host) +lldb_private::ConstString +PlatformLinux::GetPluginNameStatic (bool is_host) { if (is_host) - return Platform::GetHostPlatformName (); + { + static ConstString g_host_name(Platform::GetHostPlatformName ()); + return g_host_name; + } else - return "remote-linux"; + { + static ConstString g_remote_name("remote-linux"); + return g_remote_name; + } } const char * @@ -110,6 +111,12 @@ PlatformLinux::GetPluginDescriptionStatic (bool is_host) return "Remote Linux user platform plug-in."; } +lldb_private::ConstString +PlatformLinux::GetPluginName() +{ + return GetPluginNameStatic(IsHost()); +} + void PlatformLinux::Initialize () { @@ -120,7 +127,7 @@ PlatformLinux::Initialize () default_platform_sp->SetSystemArchitecture (Host::GetArchitecture()); Platform::SetDefaultPlatform (default_platform_sp); #endif - PluginManager::RegisterPlugin(PlatformLinux::GetShortPluginNameStatic(false), + PluginManager::RegisterPlugin(PlatformLinux::GetPluginNameStatic(false), PlatformLinux::GetPluginDescriptionStatic(false), PlatformLinux::CreateInstance); } @@ -242,7 +249,7 @@ PlatformLinux::ResolveExecutable (const FileSpec &exe_file, { error.SetErrorStringWithFormat ("'%s' doesn't contain any '%s' platform architectures: %s", exe_file.GetPath().c_str(), - GetShortPluginName(), + GetPluginName().GetCString(), arch_names.GetString().c_str()); } } |

