Author: enrico Date: Wed Aug 26 19:53:57 2015 New Revision: 246131 URL: http://llvm.org/viewvc/llvm-project?rev=246131&view=rev Log: Add functionality to the platforms to figure out the proper name for a dynamic library on the system given a basename This will do things like, given mylibrary, return
libmylibrary.dylib on OSX mylibrary.dll on Windows and so on for other platforms It is currently implemented for Windows, Darwin, and Linux. Other platforms should fill in accordingly Modified: lldb/trunk/include/lldb/Target/Platform.h lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.cpp lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.h lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.cpp lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.h lldb/trunk/source/Target/Platform.cpp Modified: lldb/trunk/include/lldb/Target/Platform.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Platform.h?rev=246131&r1=246130&r2=246131&view=diff ============================================================================== --- lldb/trunk/include/lldb/Target/Platform.h (original) +++ lldb/trunk/include/lldb/Target/Platform.h Wed Aug 26 19:53:57 2015 @@ -268,6 +268,9 @@ class ModuleCache; virtual const char * GetHostname (); + + virtual ConstString + GetFullNameForDylib (ConstString basename); virtual const char * GetDescription () = 0; Modified: lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.cpp?rev=246131&r1=246130&r2=246131&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.cpp (original) +++ lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.cpp Wed Aug 26 19:53:57 2015 @@ -854,3 +854,14 @@ PlatformLinux::ConvertMmapFlagsToPlatfor flags_platform |= map_anon; return flags_platform; } + +ConstString +PlatformLinux::GetFullNameForDylib (ConstString basename) +{ + if (basename.IsEmpty()) + return basename; + + StreamString stream; + stream.Printf("lib%s.so", basename.GetCString()); + return ConstString(stream.GetData()); +} Modified: lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.h?rev=246131&r1=246130&r2=246131&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.h (original) +++ lldb/trunk/source/Plugins/Platform/Linux/PlatformLinux.h Wed Aug 26 19:53:57 2015 @@ -111,6 +111,9 @@ namespace platform_linux { uint64_t ConvertMmapFlagsToPlatform(const ArchSpec &arch, unsigned flags) override; + ConstString + GetFullNameForDylib (ConstString basename) override; + private: DISALLOW_COPY_AND_ASSIGN (PlatformLinux); }; Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=246131&r1=246130&r2=246131&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Wed Aug 26 19:53:57 2015 @@ -1531,3 +1531,15 @@ PlatformDarwin::AddClangModuleCompilatio options.push_back(sysroot_spec.GetPath()); } } + +ConstString +PlatformDarwin::GetFullNameForDylib (ConstString basename) +{ + if (basename.IsEmpty()) + return basename; + + StreamString stream; + stream.Printf("lib%s.dylib", basename.GetCString()); + return ConstString(stream.GetData()); +} + Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h?rev=246131&r1=246130&r2=246131&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h (original) +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h Wed Aug 26 19:53:57 2015 @@ -84,6 +84,9 @@ public: bool SupportsModules () override { return true; } + + lldb_private::ConstString + GetFullNameForDylib (lldb_private::ConstString basename) override; protected: Modified: lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.cpp?rev=246131&r1=246130&r2=246131&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.cpp (original) +++ lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.cpp Wed Aug 26 19:53:57 2015 @@ -743,3 +743,14 @@ PlatformWindows::GetEnvironment(StringLi return Host::GetEnvironment(env); } + +ConstString +PlatformWindows::GetFullNameForDylib (ConstString basename) +{ + if (basename.IsEmpty()) + return basename; + + StreamString stream; + stream.Printf("%s.dll", basename.GetCString()); + return ConstString(stream.GetData()); +} Modified: lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.h?rev=246131&r1=246130&r2=246131&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.h (original) +++ lldb/trunk/source/Plugins/Platform/Windows/PlatformWindows.h Wed Aug 26 19:53:57 2015 @@ -156,6 +156,9 @@ public: CalculateTrapHandlerSymbolNames () override { } + + ConstString + GetFullNameForDylib (ConstString basename) override; protected: lldb::PlatformSP m_remote_platform_sp; Modified: lldb/trunk/source/Target/Platform.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Platform.cpp?rev=246131&r1=246130&r2=246131&view=diff ============================================================================== --- lldb/trunk/source/Target/Platform.cpp (original) +++ lldb/trunk/source/Target/Platform.cpp Wed Aug 26 19:53:57 2015 @@ -947,6 +947,12 @@ Platform::GetHostname () return m_name.c_str(); } +ConstString +Platform::GetFullNameForDylib (ConstString basename) +{ + return basename; +} + bool Platform::SetRemoteWorkingDirectory(const FileSpec &working_dir) { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits