Files
clang-p2996/lldb/tools/lldb-server/lldb-server.cpp
Pavel Labath fa3fa5b90e Move ObjectFile initialization out of SystemInitializerCommon
Summary:
For lldb-server, it is sufficient to parse only the native object file
format for its target OS (no other file can be loaded into a running
process). This moves the object file initialization code into specific
initializer classes: lldb-test and liblldb get all object files;
lldb-server gets only one of them. For this to work, I've needed to
create a special SystemInitializer for use in lldb-server, instead of it
calling directly into the common one.

This reduces the size of lldb-server by about 2%, which is not
earth-shattering, but it's an easy win, and it helps.

Reviewers: zturner, clayborg

Subscribers: mgorny, lldb-commits

Differential Revision: https://reviews.llvm.org/D47250

llvm-svn: 333182
2018-05-24 12:44:18 +00:00

74 lines
2.0 KiB
C++

//===-- lldb-server.cpp -----------------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "SystemInitializerLLGS.h"
#include "lldb/Initialization/SystemLifetimeManager.h"
#include "lldb/lldb-private.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/ManagedStatic.h"
#include <stdio.h>
#include <stdlib.h>
static llvm::ManagedStatic<lldb_private::SystemLifetimeManager>
g_debugger_lifetime;
static void display_usage(const char *progname) {
fprintf(stderr, "Usage:\n"
" %s v[ersion]\n"
" %s g[dbserver] [options]\n"
" %s p[latform] [options]\n"
"Invoke subcommand for additional help\n",
progname, progname, progname);
exit(0);
}
// Forward declarations of subcommand main methods.
int main_gdbserver(int argc, char *argv[]);
int main_platform(int argc, char *argv[]);
static void initialize() {
g_debugger_lifetime->Initialize(llvm::make_unique<SystemInitializerLLGS>(),
nullptr);
}
static void terminate() { g_debugger_lifetime->Terminate(); }
//----------------------------------------------------------------------
// main
//----------------------------------------------------------------------
int main(int argc, char *argv[]) {
int option_error = 0;
const char *progname = argv[0];
if (argc < 2) {
display_usage(progname);
exit(option_error);
}
switch (argv[1][0]) {
case 'g':
initialize();
main_gdbserver(argc, argv);
terminate();
break;
case 'p':
initialize();
main_platform(argc, argv);
terminate();
break;
case 'v':
fprintf(stderr, "%s\n", lldb_private::GetVersion());
break;
default:
display_usage(progname);
exit(option_error);
}
}