1*99451b44SJordan Rupprecht
2*99451b44SJordan Rupprecht/// LLDB C API Test Driver
3*99451b44SJordan Rupprecht
4*99451b44SJordan Rupprecht#include <algorithm>
5*99451b44SJordan Rupprecht#include <iostream>
6*99451b44SJordan Rupprecht#include <iterator>
7*99451b44SJordan Rupprecht#include <string>
8*99451b44SJordan Rupprecht#include <vector>
9*99451b44SJordan Rupprecht#if !defined(_MSC_VER)
10*99451b44SJordan Rupprecht  #include <signal.h>
11*99451b44SJordan Rupprecht#endif
12*99451b44SJordan Rupprecht
13*99451b44SJordan Rupprecht%include_SB_APIs%
14*99451b44SJordan Rupprecht
15*99451b44SJordan Rupprecht#include "common.h"
16*99451b44SJordan Rupprecht
17*99451b44SJordan Rupprechtusing namespace std;
18*99451b44SJordan Rupprechtusing namespace lldb;
19*99451b44SJordan Rupprecht
20*99451b44SJordan Rupprechtvoid test(SBDebugger &dbg, std::vector<string> args);
21*99451b44SJordan Rupprecht
22*99451b44SJordan Rupprechtint main(int argc, char** argv) {
23*99451b44SJordan Rupprecht
24*99451b44SJordan Rupprecht// Ignore SIGPIPE.  The lldb driver does this as well,
25*99451b44SJordan Rupprecht// because we seem to get spurious SIGPIPES on some
26*99451b44SJordan Rupprecht// Unixen that take the driver down.
27*99451b44SJordan Rupprecht#if !defined(_MSC_VER)
28*99451b44SJordan Rupprecht  signal(SIGPIPE, SIG_IGN);
29*99451b44SJordan Rupprecht#endif
30*99451b44SJordan Rupprecht  int code = 0;
31*99451b44SJordan Rupprecht
32*99451b44SJordan Rupprecht  SBDebugger::Initialize();
33*99451b44SJordan Rupprecht  SBDebugger dbg = SBDebugger::Create();
34*99451b44SJordan Rupprecht  dbg.HandleCommand("settings set symbols.enable-external-lookup false");
35*99451b44SJordan Rupprecht  dbg.HandleCommand(
36*99451b44SJordan Rupprecht      "settings set plugin.process.gdb-remote.packet-timeout 60");
37*99451b44SJordan Rupprecht
38*99451b44SJordan Rupprecht  try {
39*99451b44SJordan Rupprecht    if (!dbg.IsValid())
40*99451b44SJordan Rupprecht      throw Exception("invalid debugger");
41*99451b44SJordan Rupprecht    vector<string> args(argv + 1, argv + argc);
42*99451b44SJordan Rupprecht
43*99451b44SJordan Rupprecht    test(dbg, args);
44*99451b44SJordan Rupprecht  } catch (Exception &e) {
45*99451b44SJordan Rupprecht    cout << "ERROR: " << e.what() << endl;
46*99451b44SJordan Rupprecht    code = 1;
47*99451b44SJordan Rupprecht  }
48*99451b44SJordan Rupprecht
49*99451b44SJordan Rupprecht  SBDebugger::Destroy(dbg);
50*99451b44SJordan Rupprecht  return code;
51*99451b44SJordan Rupprecht}
52