Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/tools/lldb-server/lldb-server.cpp
34879 views
1
//===-- lldb-server.cpp -----------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#include "SystemInitializerLLGS.h"
10
#include "lldb/Host/Config.h"
11
#include "lldb/Initialization/SystemLifetimeManager.h"
12
#include "lldb/Version/Version.h"
13
14
#include "llvm/ADT/STLExtras.h"
15
#include "llvm/ADT/StringRef.h"
16
#include "llvm/Support/InitLLVM.h"
17
#include "llvm/Support/ManagedStatic.h"
18
#include "llvm/Support/PrettyStackTrace.h"
19
#include "llvm/Support/Signals.h"
20
21
#include <cstdio>
22
#include <cstdlib>
23
24
static llvm::ManagedStatic<lldb_private::SystemLifetimeManager>
25
g_debugger_lifetime;
26
27
static void display_usage(const char *progname) {
28
fprintf(stderr, "Usage:\n"
29
" %s v[ersion]\n"
30
" %s g[dbserver] [options]\n"
31
" %s p[latform] [options]\n"
32
"Invoke subcommand for additional help\n",
33
progname, progname, progname);
34
exit(0);
35
}
36
37
// Forward declarations of subcommand main methods.
38
int main_gdbserver(int argc, char *argv[]);
39
int main_platform(int argc, char *argv[]);
40
41
namespace llgs {
42
static void initialize() {
43
if (auto e = g_debugger_lifetime->Initialize(
44
std::make_unique<SystemInitializerLLGS>(), nullptr))
45
llvm::consumeError(std::move(e));
46
}
47
48
static void terminate_debugger() { g_debugger_lifetime->Terminate(); }
49
} // namespace llgs
50
51
// main
52
int main(int argc, char *argv[]) {
53
llvm::InitLLVM IL(argc, argv, /*InstallPipeSignalExitHandler=*/false);
54
llvm::setBugReportMsg("PLEASE submit a bug report to " LLDB_BUG_REPORT_URL
55
" and include the crash backtrace.\n");
56
57
int option_error = 0;
58
const char *progname = argv[0];
59
if (argc < 2) {
60
display_usage(progname);
61
exit(option_error);
62
}
63
64
switch (argv[1][0]) {
65
case 'g':
66
llgs::initialize();
67
main_gdbserver(argc, argv);
68
llgs::terminate_debugger();
69
break;
70
case 'p':
71
llgs::initialize();
72
main_platform(argc, argv);
73
llgs::terminate_debugger();
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);
81
}
82
}
83
84