lldb-server.cpp revision 288943
1//===-- lldb-server.cpp -----------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "lldb/Initialization/SystemLifetimeManager.h" 11#include "lldb/Initialization/SystemInitializerCommon.h" 12 13#include "llvm/ADT/STLExtras.h" 14#include "llvm/Support/ManagedStatic.h" 15 16#include <stdio.h> 17#include <stdlib.h> 18 19static llvm::ManagedStatic<lldb_private::SystemLifetimeManager> g_debugger_lifetime; 20 21static void 22display_usage (const char *progname) 23{ 24 fprintf(stderr, "Usage:\n" 25 " %s g[dbserver] [options]\n" 26 " %s p[latform] [options]\n" 27 "Invoke subcommand for additional help\n", progname, progname); 28 exit(0); 29} 30 31// Forward declarations of subcommand main methods. 32int main_gdbserver (int argc, char *argv[]); 33int main_platform (int argc, char *argv[]); 34 35static void 36initialize () 37{ 38 g_debugger_lifetime->Initialize(llvm::make_unique<lldb_private::SystemInitializerCommon>(), nullptr); 39} 40 41static void 42terminate () 43{ 44 g_debugger_lifetime->Terminate(); 45} 46 47//---------------------------------------------------------------------- 48// main 49//---------------------------------------------------------------------- 50int 51main (int argc, char *argv[]) 52{ 53 int option_error = 0; 54 const char *progname = argv[0]; 55 if (argc < 2) 56 { 57 display_usage(progname); 58 exit(option_error); 59 } 60 else if (argv[1][0] == 'g') 61 { 62 initialize(); 63 main_gdbserver(argc, argv); 64 terminate(); 65 } 66 else if (argv[1][0] == 'p') 67 { 68 initialize(); 69 main_platform(argc, argv); 70 terminate(); 71 } 72 else { 73 display_usage(progname); 74 exit(option_error); 75 } 76} 77