#include <cerrno>
#include <string>
#include "cli-wrapper-mpxtable.h"
#include "lldb/API/SBCommandInterpreter.h"
#include "lldb/API/SBCommandReturnObject.h"
#include "lldb/API/SBMemoryRegionInfo.h"
#include "lldb/API/SBProcess.h"
#include "lldb/API/SBTarget.h"
#include "lldb/API/SBThread.h"
#include "llvm/ADT/Twine.h"
#include "llvm/TargetParser/Triple.h"
static bool GetPtr(char *cptr, uint64_t &ptr, lldb::SBFrame &frame,
lldb::SBCommandReturnObject &result) { … }
enum { … };
static void PrintBTEntry(lldb::addr_t lbound, lldb::addr_t ubound,
uint64_t value, uint64_t meta,
lldb::SBCommandReturnObject &result) { … }
static bool GetBTEntryAddr(uint64_t bndcfgu, uint64_t ptr,
lldb::SBTarget &target, llvm::Triple::ArchType arch,
size_t &size, lldb::addr_t &bt_entry_addr,
lldb::SBCommandReturnObject &result,
lldb::SBError &error) { … }
static bool GetBTEntry(uint64_t bndcfgu, uint64_t ptr, lldb::SBTarget &target,
llvm::Triple::ArchType arch,
lldb::SBCommandReturnObject &result,
lldb::SBError &error) { … }
static std::vector<uint8_t> uIntToU8(uint64_t input, size_t size) { … }
static bool SetBTEntry(uint64_t bndcfgu, uint64_t ptr, lldb::addr_t lbound,
lldb::addr_t ubound, lldb::SBTarget &target,
llvm::Triple::ArchType arch,
lldb::SBCommandReturnObject &result,
lldb::SBError &error) { … }
static bool GetInitInfo(lldb::SBDebugger debugger, lldb::SBTarget &target,
llvm::Triple::ArchType &arch, uint64_t &bndcfgu,
char *arg, uint64_t &ptr,
lldb::SBCommandReturnObject &result,
lldb::SBError &error) { … }
class MPXTableShow : public lldb::SBCommandPluginInterface { … };
class MPXTableSet : public lldb::SBCommandPluginInterface { … };
bool MPXPluginInitialize(lldb::SBDebugger &debugger) { … }