blob: 9ece640b2885f98eea824e877ac681c950b8ea08 [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/SystemLifetimeManager.h"
11#include "lldb/Initialization/SystemInitializerCommon.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
Zachary Turnere6e2bb32015-03-31 21:03:22 +000020static llvm::ManagedStatic<lldb_private::SystemLifetimeManager> g_debugger_lifetime;
21
Chaoren Line4bb0b32015-02-23 21:48:42 +000022static void
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000023display_usage (const char *progname)
24{
25 fprintf(stderr, "Usage:\n"
Tamas Berghammer2e912ec2016-02-10 10:35:48 +000026 " %s v[ersion]\n"
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000027 " %s g[dbserver] [options]\n"
28 " %s p[latform] [options]\n"
Tamas Berghammer2e912ec2016-02-10 10:35:48 +000029 "Invoke subcommand for additional help\n", progname, progname, progname);
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000030 exit(0);
31}
32
33// Forward declarations of subcommand main methods.
34int main_gdbserver (int argc, char *argv[]);
35int main_platform (int argc, char *argv[]);
36
Robert Flackab3269d2015-03-02 15:14:50 +000037static void
38initialize ()
39{
Zachary Turnere6e2bb32015-03-31 21:03:22 +000040 g_debugger_lifetime->Initialize(llvm::make_unique<lldb_private::SystemInitializerCommon>(), nullptr);
Robert Flackab3269d2015-03-02 15:14:50 +000041}
42
43static void
44terminate ()
45{
Zachary Turnere6e2bb32015-03-31 21:03:22 +000046 g_debugger_lifetime->Terminate();
Robert Flackab3269d2015-03-02 15:14:50 +000047}
48
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000049//----------------------------------------------------------------------
50// main
51//----------------------------------------------------------------------
52int
53main (int argc, char *argv[])
54{
55 int option_error = 0;
56 const char *progname = argv[0];
57 if (argc < 2)
58 {
59 display_usage(progname);
60 exit(option_error);
61 }
Tamas Berghammer2e912ec2016-02-10 10:35:48 +000062
63 switch (argv[1][0])
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000064 {
Tamas Berghammer2e912ec2016-02-10 10:35:48 +000065 case 'g':
66 initialize();
67 main_gdbserver(argc, argv);
68 terminate();
69 break;
70 case 'p':
71 initialize();
72 main_platform(argc, argv);
73 terminate();
74 break;
75 case 'v':
76 fprintf(stderr, "%s\n", lldb_private::GetVersion());
77 break;
78 default:
79 display_usage(progname);
80 exit(option_error);
Tamas Berghammerc2c3d712015-02-18 15:39:41 +000081 }
82}