summaryrefslogtreecommitdiffstats
path: root/lldb/tools/lldb-server/lldb-platform.cpp
diff options
context:
space:
mode:
authorTamas Berghammer <tberghammer@google.com>2015-05-27 13:34:04 +0000
committerTamas Berghammer <tberghammer@google.com>2015-05-27 13:34:04 +0000
commit9c9ecce0770b3cc9f2237a28a7080553ec61bcb1 (patch)
treeea321d2e850b220ef2e51c5b520a30dd1ca2433b /lldb/tools/lldb-server/lldb-platform.cpp
parentf5c4dec750e424b217f794e250c48bdfc4100f1e (diff)
downloadbcm5719-llvm-9c9ecce0770b3cc9f2237a28a7080553ec61bcb1.tar.gz
bcm5719-llvm-9c9ecce0770b3cc9f2237a28a7080553ec61bcb1.zip
Make log options uniform betwwen lldb-platform and lldb-gdbserver
This change also get rid of an unused Debugger instance in GDBRemoteCommunicationServerLLGS and the command interpreter from lldb-platform what was used only for enabling logging. Differential revision: http://reviews.llvm.org/D9876 llvm-svn: 238319
Diffstat (limited to 'lldb/tools/lldb-server/lldb-platform.cpp')
-rw-r--r--lldb/tools/lldb-server/lldb-platform.cpp54
1 files changed, 22 insertions, 32 deletions
diff --git a/lldb/tools/lldb-server/lldb-platform.cpp b/lldb/tools/lldb-server/lldb-platform.cpp
index 6f5dfbcbbb7..46b86b88b70 100644
--- a/lldb/tools/lldb-server/lldb-platform.cpp
+++ b/lldb/tools/lldb-server/lldb-platform.cpp
@@ -25,21 +25,19 @@
// Other libraries and framework includes
#include "lldb/Core/Error.h"
-#include "lldb/Core/ConnectionMachPort.h"
-#include "lldb/Core/Debugger.h"
-#include "lldb/Core/StreamFile.h"
#include "lldb/Host/ConnectionFileDescriptor.h"
#include "lldb/Host/HostGetOpt.h"
#include "lldb/Host/OptionParser.h"
#include "lldb/Host/Socket.h"
-#include "lldb/Interpreter/CommandInterpreter.h"
-#include "lldb/Interpreter/CommandReturnObject.h"
+#include "LLDBServerUtilities.h"
#include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h"
#include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h"
using namespace lldb;
using namespace lldb_private;
+using namespace lldb_private::lldb_server;
using namespace lldb_private::process_gdb_remote;
+using namespace llvm;
//----------------------------------------------------------------------
// option descriptors for getopt_long_only()
@@ -53,12 +51,13 @@ static struct option g_long_options[] =
{
{ "debug", no_argument, &g_debug, 1 },
{ "verbose", no_argument, &g_verbose, 1 },
+ { "log-file", required_argument, NULL, 'l' },
+ { "log-channels", required_argument, NULL, 'c' },
{ "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' },
{ "server", no_argument, &g_server, 1 },
{ NULL, 0, NULL, 0 }
};
@@ -71,7 +70,6 @@ static struct option g_long_options[] =
#define HIGH_PORT (49151u)
#endif
-
//----------------------------------------------------------------------
// Watch for signals
//----------------------------------------------------------------------
@@ -93,8 +91,7 @@ signal_handler(int signo)
static void
display_usage (const char *progname, const char *subcommand)
{
- fprintf(stderr, "Usage:\n %s %s [--server] --listen port\n",
- progname, subcommand);
+ fprintf(stderr, "Usage:\n %s %s [--log-file log-file-name] [--log-channels log-channel-list] --server --listen port\n", progname, subcommand);
exit(0);
}
@@ -115,18 +112,14 @@ main_platform (int argc, char *argv[])
std::string listen_host_port;
int ch;
- lldb::DebuggerSP debugger_sp = Debugger::CreateInstance ();
-
- debugger_sp->SetInputFileHandle(stdin, false);
- debugger_sp->SetOutputFileHandle(stdout, false);
- debugger_sp->SetErrorFileHandle(stderr, false);
-
+ std::string log_file;
+ StringRef log_channels; // e.g. "lldb process threads:gdb-remote default:linux all"
+
GDBRemoteCommunicationServerPlatform::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;
int socket_error = -1;
@@ -151,6 +144,16 @@ main_platform (int argc, char *argv[])
listen_host_port.append (optarg);
break;
+ case 'l': // Set Log File
+ if (optarg && optarg[0])
+ log_file.assign(optarg);
+ break;
+
+ case 'c': // Log Channels
+ if (optarg && optarg[0])
+ log_channels = StringRef(optarg);
+ break;
+
case 'p':
{
char *end = NULL;
@@ -205,10 +208,6 @@ main_platform (int argc, char *argv[])
}
}
break;
-
- case 'c':
- lldb_commands.push_back(optarg);
- break;
case 'h': /* fall-through is intentional */
case '?':
@@ -217,6 +216,9 @@ main_platform (int argc, char *argv[])
}
}
+ if (!LLDBServerUtilities::SetupLogging(log_file, log_channels, 0))
+ return -1;
+
// Make a port map for a port range that was specified.
if (min_gdbserver_port < max_gdbserver_port)
{
@@ -227,7 +229,6 @@ main_platform (int argc, char *argv[])
{
fprintf (stderr, "error: --min-gdbserver-port (%u) is greater than --max-gdbserver-port (%u)\n", min_gdbserver_port, max_gdbserver_port);
option_error = 3;
-
}
// Print usage and exit if no listening port is specified.
@@ -240,17 +241,6 @@ main_platform (int argc, char *argv[])
exit(option_error);
}
- // 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);
- }
-
std::unique_ptr<Socket> listening_socket_up;
Socket *socket = nullptr;
const bool children_inherit_listen_socket = false;
OpenPOWER on IntegriCloud