Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/lldb/source/Commands/CommandObjectPlugin.cpp
39587 views
1
//===-- CommandObjectPlugin.cpp -------------------------------------------===//
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 "CommandObjectPlugin.h"
10
#include "lldb/Interpreter/CommandInterpreter.h"
11
#include "lldb/Interpreter/CommandReturnObject.h"
12
13
using namespace lldb;
14
using namespace lldb_private;
15
16
class CommandObjectPluginLoad : public CommandObjectParsed {
17
public:
18
CommandObjectPluginLoad(CommandInterpreter &interpreter)
19
: CommandObjectParsed(interpreter, "plugin load",
20
"Import a dylib that implements an LLDB plugin.",
21
nullptr) {
22
AddSimpleArgumentList(eArgTypeFilename);
23
}
24
25
~CommandObjectPluginLoad() override = default;
26
27
protected:
28
void DoExecute(Args &command, CommandReturnObject &result) override {
29
size_t argc = command.GetArgumentCount();
30
31
if (argc != 1) {
32
result.AppendError("'plugin load' requires one argument");
33
return;
34
}
35
36
Status error;
37
38
FileSpec dylib_fspec(command[0].ref());
39
FileSystem::Instance().Resolve(dylib_fspec);
40
41
if (GetDebugger().LoadPlugin(dylib_fspec, error))
42
result.SetStatus(eReturnStatusSuccessFinishResult);
43
else {
44
result.AppendError(error.AsCString());
45
}
46
}
47
};
48
49
CommandObjectPlugin::CommandObjectPlugin(CommandInterpreter &interpreter)
50
: CommandObjectMultiword(interpreter, "plugin",
51
"Commands for managing LLDB plugins.",
52
"plugin <subcommand> [<subcommand-options>]") {
53
LoadSubCommand("load",
54
CommandObjectSP(new CommandObjectPluginLoad(interpreter)));
55
}
56
57
CommandObjectPlugin::~CommandObjectPlugin() = default;
58
59