[Lldb-commits] [lldb] r196141 - Fixed internal code to not link against and code from "lldb/API/*".
Greg Clayton
gclayton at apple.com
Mon Dec 2 11:35:49 PST 2013
Author: gclayton
Date: Mon Dec 2 13:35:49 2013
New Revision: 196141
URL: http://llvm.org/viewvc/llvm-project?rev=196141&view=rev
Log:
Fixed internal code to not link against and code from "lldb/API/*".
lldb_private::Debugger was #including some "lldb/API" header files which causes tools (lldb-platform and lldb-gdbserver) that link against the internals only (no API layer) to fail to link depending on which calls were being used.
Also fixed the current working directory so that it gets set correctly for remote test suite runs. Now the remote working directory is set to: "ARCH/TESTNUM/..." where ARCH is the current architecture name and "TESTNUM" is the current test number.
Fixed the "lldb-platform" and "lldb-gdbserver" to not warn about mismatched visibility settings by having each have their own exports file which contains nothing. This forces all symbols to not be exported, and also quiets the linker warnings.
Added:
lldb/trunk/tools/lldb-gdbserver/exports
lldb/trunk/tools/lldb-platform/exports
Modified:
lldb/trunk/include/lldb/Core/Debugger.h
lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h
lldb/trunk/include/lldb/Interpreter/ScriptInterpreterPython.h
lldb/trunk/include/lldb/Target/Platform.h
lldb/trunk/include/lldb/Utility/PythonPointer.h
lldb/trunk/include/lldb/lldb-python.h
lldb/trunk/lldb.xcodeproj/project.pbxproj
lldb/trunk/source/API/SBDebugger.cpp
lldb/trunk/source/Commands/CommandObjectPlugin.cpp
lldb/trunk/source/Core/Debugger.cpp
lldb/trunk/source/Interpreter/PythonDataObjects.cpp
lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp
lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
lldb/trunk/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
lldb/trunk/source/Target/Platform.cpp
lldb/trunk/test/lldbtest.py
lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp
lldb/trunk/tools/lldb-platform/lldb-platform.cpp
Modified: lldb/trunk/include/lldb/Core/Debugger.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Debugger.h?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Debugger.h (original)
+++ lldb/trunk/include/lldb/Core/Debugger.h Mon Dec 2 13:35:49 2013
@@ -17,9 +17,6 @@
#include <stack>
#include "lldb/lldb-public.h"
-
-#include "lldb/API/SBDefines.h"
-
#include "lldb/Core/Broadcaster.h"
#include "lldb/Core/Communication.h"
#include "lldb/Core/InputReaderStack.h"
@@ -55,6 +52,10 @@ friend class SourceManager; // For GetS
public:
+ typedef lldb::DynamicLibrarySP (*LoadPluginCallbackType) (const lldb::DebuggerSP &debugger_sp,
+ const FileSpec& spec,
+ Error& error);
+
static lldb::DebuggerSP
CreateInstance (lldb::LogOutputCallback log_callback = NULL, void *baton = NULL);
@@ -65,7 +66,7 @@ public:
FindTargetWithProcess (Process *process);
static void
- Initialize ();
+ Initialize (LoadPluginCallbackType load_plugin_callback);
static void
Terminate ();
@@ -333,9 +334,7 @@ public:
{
return m_instance_name;
}
-
- typedef bool (*LLDBCommandPluginInit) (lldb::SBDebugger& debugger);
-
+
bool
LoadPlugin (const FileSpec& spec, Error& error);
@@ -377,6 +376,7 @@ protected:
LogStreamMap m_log_streams;
lldb::StreamSP m_log_callback_stream_sp;
ConstString m_instance_name;
+ static LoadPluginCallbackType g_load_plugin_callback;
typedef std::vector<lldb::DynamicLibrarySP> LoadedPluginsList;
LoadedPluginsList m_loaded_plugins;
Modified: lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h (original)
+++ lldb/trunk/include/lldb/Interpreter/PythonDataObjects.h Mon Dec 2 13:35:49 2013
@@ -19,7 +19,7 @@
#include "lldb/Core/ConstString.h"
#include "lldb/Core/Flags.h"
#include "lldb/Interpreter/OptionValue.h"
-#include <Python.h>
+#include "lldb/lldb-python.h"
namespace lldb_private {
Modified: lldb/trunk/include/lldb/Interpreter/ScriptInterpreterPython.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/ScriptInterpreterPython.h?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Interpreter/ScriptInterpreterPython.h (original)
+++ lldb/trunk/include/lldb/Interpreter/ScriptInterpreterPython.h Mon Dec 2 13:35:49 2013
@@ -17,8 +17,7 @@
#else
-#include <Python.h>
-
+#include "lldb/lldb-python.h"
#include "lldb/lldb-private.h"
#include "lldb/Interpreter/ScriptInterpreter.h"
#include "lldb/Core/InputReader.h"
Modified: lldb/trunk/include/lldb/Target/Platform.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Platform.h?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Target/Platform.h (original)
+++ lldb/trunk/include/lldb/Target/Platform.h Mon Dec 2 13:35:49 2013
@@ -277,11 +277,7 @@ namespace lldb_private {
}
virtual bool
- SetRemoteWorkingDirectory(const ConstString &path)
- {
- m_working_dir = path;
- return true;
- }
+ SetRemoteWorkingDirectory(const ConstString &path);
virtual const char *
GetUserName (uint32_t uid);
Modified: lldb/trunk/include/lldb/Utility/PythonPointer.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/PythonPointer.h?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/PythonPointer.h (original)
+++ lldb/trunk/include/lldb/Utility/PythonPointer.h Mon Dec 2 13:35:49 2013
@@ -12,7 +12,7 @@
#include <algorithm>
-#include <Python.h>
+#include "lldb/lldb-python.h"
namespace lldb_private {
Modified: lldb/trunk/include/lldb/lldb-python.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-python.h?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/include/lldb/lldb-python.h (original)
+++ lldb/trunk/include/lldb/lldb-python.h Mon Dec 2 13:35:49 2013
@@ -18,7 +18,7 @@
#else
-#include <Python.h>
+#include <Python/Python.h>
#endif // LLDB_DISABLE_PYTHON
Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/lldb.xcodeproj/project.pbxproj (original)
+++ lldb/trunk/lldb.xcodeproj/project.pbxproj Mon Dec 2 13:35:49 2013
@@ -108,6 +108,7 @@
265205A813D3E3F700132FE2 /* RegisterContextKDP_arm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 265205A213D3E3F700132FE2 /* RegisterContextKDP_arm.cpp */; };
265205AA13D3E3F700132FE2 /* RegisterContextKDP_i386.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 265205A413D3E3F700132FE2 /* RegisterContextKDP_i386.cpp */; };
265205AC13D3E3F700132FE2 /* RegisterContextKDP_x86_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 265205A613D3E3F700132FE2 /* RegisterContextKDP_x86_64.cpp */; };
+ 2654283F184D025800F27E00 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C74CB6212288704006A8171 /* Carbon.framework */; };
2660AAB914622483003A9694 /* LLDBWrapPython.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A4EEB511682AAC007A372A /* LLDBWrapPython.cpp */; };
2663E379152BD1890091EC22 /* ReadWriteLock.h in Headers */ = {isa = PBXBuildFile; fileRef = 2663E378152BD1890091EC22 /* ReadWriteLock.h */; };
26651A18133BF9E0005B64B7 /* Opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26651A17133BF9DF005B64B7 /* Opcode.cpp */; };
@@ -1875,6 +1876,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 2654283F184D025800F27E00 /* Carbon.framework in Frameworks */,
4C701C1E15ABB70C00B50001 /* libxml2.dylib in Frameworks */,
26DC6A171337FE8000FF7998 /* liblldb-core.a in Frameworks */,
26B1FCB813381071002886E2 /* CoreFoundation.framework in Frameworks */,
@@ -5353,6 +5355,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "-";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign;
DEAD_CODE_STRIPPING = YES;
+ EXPORTED_SYMBOLS_FILE = "tools/lldb-gdbserver/exports";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5361,6 +5364,7 @@
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_CPP_RTTI = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+ GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
@@ -5424,6 +5428,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "-";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign;
DEAD_CODE_STRIPPING = YES;
+ EXPORTED_SYMBOLS_FILE = "tools/lldb-gdbserver/exports";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5432,6 +5437,7 @@
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_CPP_RTTI = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+ GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
@@ -5496,6 +5502,7 @@
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
ENABLE_NS_ASSERTIONS = NO;
+ EXPORTED_SYMBOLS_FILE = "tools/lldb-gdbserver/exports";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5503,6 +5510,7 @@
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_CPP_RTTI = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+ GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
@@ -5562,6 +5570,7 @@
COPY_PHASE_STRIP = YES;
DEAD_CODE_STRIPPING = YES;
ENABLE_NS_ASSERTIONS = NO;
+ EXPORTED_SYMBOLS_FILE = "tools/lldb-gdbserver/exports";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5569,6 +5578,7 @@
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_CPP_RTTI = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+ GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
@@ -5626,6 +5636,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "-";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign;
DEAD_CODE_STRIPPING = YES;
+ EXPORTED_SYMBOLS_FILE = "tools/lldb-platform/exports";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5695,6 +5706,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "-";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign;
DEAD_CODE_STRIPPING = YES;
+ EXPORTED_SYMBOLS_FILE = "tools/lldb-platform/exports";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -5761,6 +5773,7 @@
buildSettings = {
COPY_PHASE_STRIP = YES;
DEAD_CODE_STRIPPING = YES;
+ EXPORTED_SYMBOLS_FILE = "tools/lldb-platform/exports";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
@@ -6122,6 +6135,7 @@
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "-";
"CODE_SIGN_IDENTITY[sdk=macosx*]" = lldb_codesign;
DEAD_CODE_STRIPPING = YES;
+ EXPORTED_SYMBOLS_FILE = "tools/lldb-platform/exports";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
Modified: lldb/trunk/source/API/SBDebugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBDebugger.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/source/API/SBDebugger.cpp (original)
+++ lldb/trunk/source/API/SBDebugger.cpp Mon Dec 2 13:35:49 2013
@@ -38,6 +38,7 @@
#include "lldb/Core/Debugger.h"
#include "lldb/Core/State.h"
#include "lldb/DataFormatters/DataVisualization.h"
+#include "lldb/Host/DynamicLibrary.h"
#include "lldb/Interpreter/Args.h"
#include "lldb/Interpreter/CommandInterpreter.h"
#include "lldb/Interpreter/OptionGroupPlatform.h"
@@ -47,6 +48,41 @@
using namespace lldb;
using namespace lldb_private;
+
+static lldb::DynamicLibrarySP
+LoadPlugin (const lldb::DebuggerSP &debugger_sp, const FileSpec& spec, Error& error)
+{
+ lldb::DynamicLibrarySP dynlib_sp(new lldb_private::DynamicLibrary(spec));
+ if (dynlib_sp && dynlib_sp->IsValid())
+ {
+ typedef bool (*LLDBCommandPluginInit) (lldb::SBDebugger& debugger);
+
+ lldb::SBDebugger debugger_sb(debugger_sp);
+ // This calls the bool lldb::PluginInitialize(lldb::SBDebugger debugger) function.
+ // TODO: mangle this differently for your system - on OSX, the first underscore needs to be removed and the second one stays
+ LLDBCommandPluginInit init_func = dynlib_sp->GetSymbol<LLDBCommandPluginInit>("_ZN4lldb16PluginInitializeENS_10SBDebuggerE");
+ if (init_func)
+ {
+ if (init_func(debugger_sb))
+ return dynlib_sp;
+ else
+ error.SetErrorString("plug-in refused to load (lldb::PluginInitialize(lldb::SBDebugger) returned false)");
+ }
+ else
+ {
+ error.SetErrorString("plug-in is missing the required initialization: lldb::PluginInitialize(lldb::SBDebugger)");
+ }
+ }
+ else
+ {
+ if (spec.Exists())
+ error.SetErrorString("this file does not represent a loadable dylib");
+ else
+ error.SetErrorString("no such file");
+ }
+ return lldb::DynamicLibrarySP();
+}
+
void
SBDebugger::Initialize ()
{
@@ -57,7 +93,7 @@ SBDebugger::Initialize ()
SBCommandInterpreter::InitializeSWIG ();
- Debugger::Initialize();
+ Debugger::Initialize(LoadPlugin);
}
void
Modified: lldb/trunk/source/Commands/CommandObjectPlugin.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectPlugin.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectPlugin.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectPlugin.cpp Mon Dec 2 13:35:49 2013
@@ -11,10 +11,6 @@
#include "CommandObjectPlugin.h"
-#include "lldb/API/SBDebugger.h"
-#include "lldb/API/SBCommandInterpreter.h"
-#include "lldb/API/SBCommandReturnObject.h"
-
#include "lldb/Host/Host.h"
#include "lldb/Interpreter/CommandInterpreter.h"
@@ -79,8 +75,6 @@ protected:
bool
DoExecute (Args& command, CommandReturnObject &result)
{
- typedef void (*LLDBCommandPluginInit) (lldb::SBDebugger debugger);
-
size_t argc = command.GetArgumentCount();
if (argc != 1)
Modified: lldb/trunk/source/Core/Debugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Debugger.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/source/Core/Debugger.cpp (original)
+++ lldb/trunk/source/Core/Debugger.cpp Mon Dec 2 13:35:49 2013
@@ -9,8 +9,6 @@
#include "lldb/lldb-python.h"
-#include "lldb/API/SBDebugger.h"
-
#include "lldb/Core/Debugger.h"
#include <map>
@@ -46,6 +44,7 @@
#include "lldb/Target/TargetList.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/RegisterContext.h"
+#include "lldb/Target/SectionLoadList.h"
#include "lldb/Target/StopInfo.h"
#include "lldb/Target/Target.h"
#include "lldb/Target/Thread.h"
@@ -155,19 +154,7 @@ enum
ePropertyAutoOneLineSummaries
};
-//
-//const char *
-//Debugger::GetFrameFormat() const
-//{
-// return m_properties_sp->GetFrameFormat();
-//}
-//const char *
-//Debugger::GetThreadFormat() const
-//{
-// return m_properties_sp->GetThreadFormat();
-//}
-//
-
+Debugger::LoadPluginCallbackType Debugger::g_load_plugin_callback = NULL;
Error
Debugger::SetPropertyValue (const ExecutionContext *exe_ctx,
@@ -373,8 +360,9 @@ Debugger::TestDebuggerRefCount ()
}
void
-Debugger::Initialize ()
+Debugger::Initialize (LoadPluginCallbackType load_plugin_callback)
{
+ g_load_plugin_callback = load_plugin_callback;
if (g_shared_debugger_refcount++ == 0)
lldb_private::Initialize();
}
@@ -412,31 +400,22 @@ Debugger::SettingsTerminate ()
bool
Debugger::LoadPlugin (const FileSpec& spec, Error& error)
{
- lldb::DynamicLibrarySP dynlib_sp(new lldb_private::DynamicLibrary(spec));
- if (!dynlib_sp || dynlib_sp->IsValid() == false)
- {
- if (spec.Exists())
- error.SetErrorString("this file does not represent a loadable dylib");
- else
- error.SetErrorString("no such file");
- return false;
- }
- lldb::DebuggerSP debugger_sp(shared_from_this());
- lldb::SBDebugger debugger_sb(debugger_sp);
- // This calls the bool lldb::PluginInitialize(lldb::SBDebugger debugger) function.
- // TODO: mangle this differently for your system - on OSX, the first underscore needs to be removed and the second one stays
- LLDBCommandPluginInit init_func = dynlib_sp->GetSymbol<LLDBCommandPluginInit>("_ZN4lldb16PluginInitializeENS_10SBDebuggerE");
- if (!init_func)
+ if (g_load_plugin_callback)
{
- error.SetErrorString("cannot find the initialization function lldb::PluginInitialize(lldb::SBDebugger)");
- return false;
+ lldb::DynamicLibrarySP dynlib_sp = g_load_plugin_callback (shared_from_this(), spec, error);
+ if (dynlib_sp)
+ {
+ m_loaded_plugins.push_back(dynlib_sp);
+ return true;
+ }
}
- if (init_func(debugger_sb))
+ else
{
- m_loaded_plugins.push_back(dynlib_sp);
- return true;
+ // The g_load_plugin_callback is registered in SBDebugger::Initialize()
+ // and if the public API layer isn't available (code is linking against
+ // all of the internal LLDB static libraries), then we can't load plugins
+ error.SetErrorString("Public API layer is not available");
}
- error.SetErrorString("dylib refused to be loaded");
return false;
}
Modified: lldb/trunk/source/Interpreter/PythonDataObjects.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/PythonDataObjects.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/PythonDataObjects.cpp (original)
+++ lldb/trunk/source/Interpreter/PythonDataObjects.cpp Mon Dec 2 13:35:49 2013
@@ -15,7 +15,7 @@
#else
-#include <Python.h>
+#include "lldb/lldb-python.h"
#include <stdio.h>
Modified: lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp (original)
+++ lldb/trunk/source/Interpreter/ScriptInterpreterPython.cpp Mon Dec 2 13:35:49 2013
@@ -15,8 +15,7 @@
#else
-#include <Python.h>
-
+#include "lldb/lldb-python.h"
#include "lldb/Interpreter/ScriptInterpreterPython.h"
#include <stdlib.h>
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=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original)
+++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Mon Dec 2 13:35:49 2013
@@ -303,7 +303,7 @@ PlatformDarwin::GetSharedModuleWithLocal
Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM));
if (log)
- log->Printf("[%s] Trying to find module %s/%s - platform path %s/%s symbol path %s/%s\n",
+ log->Printf("[%s] Trying to find module %s/%s - platform path %s/%s symbol path %s/%s",
(IsHost() ? "host" : "remote"),
module_spec.GetFileSpec().GetDirectory().AsCString(),
module_spec.GetFileSpec().GetFilename().AsCString(),
@@ -328,7 +328,7 @@ PlatformDarwin::GetSharedModuleWithLocal
{
Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM));
if (log)
- log->Printf("[%s] module %s/%s was rsynced and is now there\n",
+ log->Printf("[%s] module %s/%s was rsynced and is now there",
(IsHost() ? "host" : "remote"),
module_spec.GetFileSpec().GetDirectory().AsCString(),
module_spec.GetFileSpec().GetFilename().AsCString());
@@ -361,7 +361,7 @@ PlatformDarwin::GetSharedModuleWithLocal
// bring in the remote file
Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM));
if (log)
- log->Printf("[%s] module %s/%s needs to be replaced from remote copy\n",
+ log->Printf("[%s] module %s/%s needs to be replaced from remote copy",
(IsHost() ? "host" : "remote"),
module_spec.GetFileSpec().GetDirectory().AsCString(),
module_spec.GetFileSpec().GetFilename().AsCString());
@@ -376,7 +376,7 @@ PlatformDarwin::GetSharedModuleWithLocal
module_sp->SetPlatformFileSpec(module_spec.GetFileSpec());
Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM));
if (log)
- log->Printf("[%s] module %s/%s was found in the cache\n",
+ log->Printf("[%s] module %s/%s was found in the cache",
(IsHost() ? "host" : "remote"),
module_spec.GetFileSpec().GetDirectory().AsCString(),
module_spec.GetFileSpec().GetFilename().AsCString());
@@ -385,7 +385,7 @@ PlatformDarwin::GetSharedModuleWithLocal
// bring in the remote module file
if (log)
- log->Printf("[%s] module %s/%s needs to come in remotely\n",
+ log->Printf("[%s] module %s/%s needs to come in remotely",
(IsHost() ? "host" : "remote"),
module_spec.GetFileSpec().GetDirectory().AsCString(),
module_spec.GetFileSpec().GetFilename().AsCString());
@@ -396,7 +396,7 @@ PlatformDarwin::GetSharedModuleWithLocal
{
Log *log(GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM));
if (log)
- log->Printf("[%s] module %s/%s is now cached and fine\n",
+ log->Printf("[%s] module %s/%s is now cached and fine",
(IsHost() ? "host" : "remote"),
module_spec.GetFileSpec().GetDirectory().AsCString(),
module_spec.GetFileSpec().GetFilename().AsCString());
Modified: lldb/trunk/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp (original)
+++ lldb/trunk/source/Plugins/Platform/gdb-server/PlatformRemoteGDBServer.cpp Mon Dec 2 13:35:49 2013
@@ -199,13 +199,19 @@ PlatformRemoteGDBServer::GetRemoteWorkin
{
if (IsConnected())
{
- if (!m_working_dir)
+ Log *log = GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM);
+ std::string cwd;
+ if (m_gdb_client.GetWorkingDir(cwd))
{
- std::string cwd;
- if (m_gdb_client.GetWorkingDir(cwd))
- m_working_dir = ConstString(cwd.c_str());
+ ConstString working_dir(cwd.c_str());
+ if (log)
+ log->Printf("PlatformRemoteGDBServer::GetRemoteWorkingDirectory() -> '%s'", working_dir.GetCString());
+ return working_dir;
+ }
+ else
+ {
+ return ConstString();
}
- return m_working_dir;
}
else
{
@@ -220,7 +226,9 @@ PlatformRemoteGDBServer::SetRemoteWorkin
{
// Clear the working directory it case it doesn't get set correctly. This will
// for use to re-read it
- m_working_dir.Clear();
+ Log *log = GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM);
+ if (log)
+ log->Printf("PlatformRemoteGDBServer::SetRemoteWorkingDirectory('%s')", path.GetCString());
return m_gdb_client.SetWorkingDir(path.GetCString()) == 0;
}
else
Modified: lldb/trunk/source/Target/Platform.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Platform.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/source/Target/Platform.cpp (original)
+++ lldb/trunk/source/Target/Platform.cpp Mon Dec 2 13:35:49 2013
@@ -671,6 +671,9 @@ Platform::SetWorkingDirectory (const Con
{
if (IsHost())
{
+ Log *log = GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM);
+ if (log)
+ log->Printf("Platform::SetWorkingDirectory('%s')", path.GetCString());
#ifdef _WIN32
// Not implemented on Windows
return false;
@@ -685,6 +688,7 @@ Platform::SetWorkingDirectory (const Con
}
else
{
+ m_working_dir.Clear();
return SetRemoteWorkingDirectory(path);
}
}
@@ -745,6 +749,16 @@ Platform::GetHostname ()
return m_name.c_str();
}
+bool
+Platform::SetRemoteWorkingDirectory(const ConstString &path)
+{
+ Log *log = GetLogIfAnyCategoriesSet(LIBLLDB_LOG_PLATFORM);
+ if (log)
+ log->Printf("Platform::SetRemoteWorkingDirectory('%s')", path.GetCString());
+ m_working_dir = path;
+ return true;
+}
+
const char *
Platform::GetUserName (uint32_t uid)
{
Modified: lldb/trunk/test/lldbtest.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/lldbtest.py?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/test/lldbtest.py (original)
+++ lldb/trunk/test/lldbtest.py Mon Dec 2 13:35:49 2013
@@ -1686,7 +1686,10 @@ class TestBase(Base):
if lldb.remote_platform:
#remote_test_dir = os.path.join(lldb.remote_platform_working_dir, self.mydir)
- remote_test_dir = os.path.join(lldb.remote_platform_working_dir, str(self.test_number), self.mydir)
+ remote_test_dir = os.path.join(lldb.remote_platform_working_dir,
+ self.getArchitecture(),
+ str(self.test_number),
+ self.mydir)
error = lldb.remote_platform.MakeDirectory(remote_test_dir, 0700)
if error.Success():
print "successfully made remote directory '%s'" % (remote_test_dir)
Added: lldb/trunk/tools/lldb-gdbserver/exports
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-gdbserver/exports?rev=196141&view=auto
==============================================================================
(empty)
Modified: lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp (original)
+++ lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp Mon Dec 2 13:35:49 2013
@@ -93,7 +93,7 @@ main (int argc, char *argv[])
Args log_args;
Error error;
int ch;
- Debugger::Initialize();
+ Debugger::Initialize(NULL);
ProcessLaunchInfo launch_info;
ProcessAttachInfo attach_info;
Added: lldb/trunk/tools/lldb-platform/exports
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-platform/exports?rev=196141&view=auto
==============================================================================
(empty)
Modified: lldb/trunk/tools/lldb-platform/lldb-platform.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-platform/lldb-platform.cpp?rev=196141&r1=196140&r2=196141&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-platform/lldb-platform.cpp (original)
+++ lldb/trunk/tools/lldb-platform/lldb-platform.cpp Mon Dec 2 13:35:49 2013
@@ -28,6 +28,8 @@
#include "lldb/Core/Debugger.h"
#include "lldb/Core/StreamFile.h"
#include "lldb/Host/OptionParser.h"
+#include "lldb/Interpreter/CommandInterpreter.h"
+#include "lldb/Interpreter/CommandReturnObject.h"
#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.h"
#include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h"
using namespace lldb;
@@ -46,13 +48,12 @@ static struct option g_long_options[] =
{ "debug", no_argument, &g_debug, 1 },
{ "verbose", no_argument, &g_verbose, 1 },
{ "stay-alive", no_argument, &g_stay_alive, 1 },
- { "log-file", required_argument, NULL, 'l' },
- { "log-flags", required_argument, NULL, 'f' },
{ "listen", required_argument, NULL, 'L' },
{ "port-offset", required_argument, NULL, 'p' },
{ "gdbserver-port", required_argument, NULL, 'P' },
{ "min-gdbserver-port", required_argument, NULL, 'm' },
{ "max-gdbserver-port", required_argument, NULL, 'M' },
+ { "lldb-command", required_argument, NULL, 'c' },
{ NULL, 0, NULL, 0 }
};
@@ -100,24 +101,25 @@ main (int argc, char *argv[])
signal (SIGPIPE, SIG_IGN);
signal (SIGHUP, signal_handler);
int long_option_index = 0;
- StreamSP log_stream_sp;
- Args log_args;
Error error;
std::string listen_host_port;
int ch;
- Debugger::Initialize();
+ Debugger::Initialize(NULL);
+
+ lldb::DebuggerSP debugger_sp = Debugger::CreateInstance ();
+
+ debugger_sp->SetInputFileHandle(stdin, false);
+ debugger_sp->SetOutputFileHandle(stdout, false);
+ debugger_sp->SetErrorFileHandle(stderr, false);
GDBRemoteCommunicationServer::PortMap gdbserver_portmap;
int min_gdbserver_port = 0;
int max_gdbserver_port = 0;
uint16_t port_offset = 0;
+ std::vector<std::string> lldb_commands;
bool show_usage = false;
int option_error = 0;
- // Enable LLDB log channels...
- StreamSP stream_sp (new StreamFile(stdout, false));
- const char *log_channels[] = { "platform", "host", "process", NULL };
- EnableLog (stream_sp, 0, log_channels, NULL);
std::string short_options(OptionParser::GetShortOptionString(g_long_options));
@@ -130,51 +132,11 @@ main (int argc, char *argv[])
while ((ch = getopt_long_only(argc, argv, short_options.c_str(), g_long_options, &long_option_index)) != -1)
{
-// DNBLogDebug("option: ch == %c (0x%2.2x) --%s%c%s\n",
-// ch, (uint8_t)ch,
-// g_long_options[long_option_index].name,
-// g_long_options[long_option_index].has_arg ? '=' : ' ',
-// optarg ? optarg : "");
switch (ch)
{
case 0: // Any optional that auto set themselves will return 0
break;
- case 'l': // Set Log File
- if (optarg && optarg[0])
- {
- if ((strcasecmp(optarg, "stdout") == 0) || (strcmp(optarg, "/dev/stdout") == 0))
- {
- log_stream_sp.reset (new StreamFile (stdout, false));
- }
- else if ((strcasecmp(optarg, "stderr") == 0) || (strcmp(optarg, "/dev/stderr") == 0))
- {
- log_stream_sp.reset (new StreamFile (stderr, false));
- }
- else
- {
- FILE *log_file = fopen(optarg, "w");
- if (log_file)
- {
- setlinebuf(log_file);
- log_stream_sp.reset (new StreamFile (log_file, true));
- }
- else
- {
- const char *errno_str = strerror(errno);
- fprintf (stderr, "Failed to open log file '%s' for writing: errno = %i (%s)", optarg, errno, errno_str ? errno_str : "unknown error");
- }
-
- }
-
- }
- break;
-
- case 'f': // Log Flags
- if (optarg && optarg[0])
- log_args.AppendArgument(optarg);
- break;
-
case 'L':
listen_host_port.append (optarg);
break;
@@ -234,13 +196,17 @@ main (int argc, char *argv[])
}
break;
+ case 'c':
+ lldb_commands.push_back(optarg);
+ break;
+
case 'h': /* fall-through is intentional */
case '?':
show_usage = true;
break;
}
}
-
+
// Make a port map for a port range that was specified.
if (min_gdbserver_port < max_gdbserver_port)
{
@@ -264,17 +230,21 @@ main (int argc, char *argv[])
exit(option_error);
}
- if (log_stream_sp)
- {
- if (log_args.GetArgumentCount() == 0)
- log_args.AppendArgument("default");
- ProcessGDBRemoteLog::EnableLog (log_stream_sp, 0,log_args.GetConstArgumentVector(), log_stream_sp.get());
- }
-
// Skip any options we consumed with getopt_long_only
argc -= optind;
argv += optind;
+ // Execute any LLDB commands that we were asked to evaluate.
+ for (const auto &lldb_command : lldb_commands)
+ {
+ lldb_private::CommandReturnObject result;
+ printf("(lldb) %s\n", lldb_command.c_str());
+ debugger_sp->GetCommandInterpreter().HandleCommand(lldb_command.c_str(), eLazyBoolNo, result);
+ const char *output = result.GetOutputData();
+ if (output && output[0])
+ puts(output);
+ }
+
do {
GDBRemoteCommunicationServer gdb_server (true);
More information about the lldb-commits
mailing list