blob: 06ef0498749a3406300010906c666ecd81273cbd [file] [log] [blame]
Tamas Berghammerc2c3d712015-02-18 15:39:41 +00001//===-- 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
Zachary Turnere6e2bb32015-03-31 21:03:22 +000010#include "lldb/Initialization/SystemInitializerCommon.h"
Kate Stoneb9c1b512016-09-06 20:57:50 +000011#include "lldb/Initialization/SystemLifetimeManager.h"
Tamas Berghammer2e912ec2016-02-10 10:35:48 +000012#include "lldb/lldb-private.h"
Zachary Turnere6e2bb32015-03-31 21:03:22 +000013
14#include "llvm/ADT/STLExtras.h"
15#include "llvm/Support/ManagedStatic.h"
Robert Flackab3269d2015-03-02 15:14:50 +000016
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000017#include <stdio.h>
18#include <stdlib.h>
19
Kate Stoneb9c1b512016-09-06 20:57:50 +000020static llvm::ManagedStatic<lldb_private::SystemLifetimeManager>
21 g_debugger_lifetime;
Zachary Turnere6e2bb32015-03-31 21:03:22 +000022
Kate Stoneb9c1b512016-09-06 20:57:50 +000023static void display_usage(const char *progname) {
24 fprintf(stderr, "Usage:\n"
25 " %s v[ersion]\n"
26 " %s g[dbserver] [options]\n"
27 " %s p[latform] [options]\n"
28 "Invoke subcommand for additional help\n",
29 progname, progname, progname);
30 exit(0);
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000031}
32
33// Forward declarations of subcommand main methods.
Kate Stoneb9c1b512016-09-06 20:57:50 +000034int main_gdbserver(int argc, char *argv[]);
35int main_platform(int argc, char *argv[]);
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000036
Kate Stoneb9c1b512016-09-06 20:57:50 +000037static void initialize() {
38 g_debugger_lifetime->Initialize(
39 llvm::make_unique<lldb_private::SystemInitializerCommon>(), nullptr);
Robert Flackab3269d2015-03-02 15:14:50 +000040}
41
Kate Stoneb9c1b512016-09-06 20:57:50 +000042static void terminate() { g_debugger_lifetime->Terminate(); }
Robert Flackab3269d2015-03-02 15:14:50 +000043
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000044//----------------------------------------------------------------------
45// main
46//----------------------------------------------------------------------
Kate Stoneb9c1b512016-09-06 20:57:50 +000047int main(int argc, char *argv[]) {
48 int option_error = 0;
49 const char *progname = argv[0];
50 if (argc < 2) {
51 display_usage(progname);
52 exit(option_error);
53 }
Tamas Berghammer2e912ec2016-02-10 10:35:48 +000054
Kate Stoneb9c1b512016-09-06 20:57:50 +000055 switch (argv[1][0]) {
56 case 'g':
57 initialize();
58 main_gdbserver(argc, argv);
59 terminate();
60 break;
61 case 'p':
62 initialize();
63 main_platform(argc, argv);
64 terminate();
65 break;
66 case 'v':
67 fprintf(stderr, "%s\n", lldb_private::GetVersion());
68 break;
69 default:
70 display_usage(progname);
71 exit(option_error);
72 }
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000073}