#include <cstdio>
#include <sys/types.h>
#include <cstdlib>
#include <map>
#include <string>
#include "lldb/Core/Module.h"
#include "lldb/Core/ValueObjectConstResult.h"
#include "lldb/Expression/DiagnosticManager.h"
#include "lldb/Expression/ExpressionVariable.h"
#include "lldb/Expression/IRExecutionUnit.h"
#include "lldb/Expression/IRInterpreter.h"
#include "lldb/Expression/Materializer.h"
#include "lldb/Expression/UserExpression.h"
#include "lldb/Host/HostInfo.h"
#include "lldb/Symbol/Block.h"
#include "lldb/Symbol/Function.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Symbol/SymbolVendor.h"
#include "lldb/Symbol/Type.h"
#include "lldb/Symbol/TypeSystem.h"
#include "lldb/Symbol/VariableList.h"
#include "lldb/Target/ExecutionContext.h"
#include "lldb/Target/Process.h"
#include "lldb/Target/StackFrame.h"
#include "lldb/Target/Target.h"
#include "lldb/Target/ThreadPlan.h"
#include "lldb/Target/ThreadPlanCallUserExpression.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/State.h"
#include "lldb/Utility/StreamString.h"
#include "llvm/BinaryFormat/Dwarf.h"
usingnamespacelldb_private;
char UserExpression::ID;
UserExpression::UserExpression(ExecutionContextScope &exe_scope,
llvm::StringRef expr, llvm::StringRef prefix,
SourceLanguage language, ResultType desired_type,
const EvaluateExpressionOptions &options)
: … { … }
UserExpression::~UserExpression() = default;
void UserExpression::InstallContext(ExecutionContext &exe_ctx) { … }
bool UserExpression::LockAndCheckContext(ExecutionContext &exe_ctx,
lldb::TargetSP &target_sp,
lldb::ProcessSP &process_sp,
lldb::StackFrameSP &frame_sp) { … }
bool UserExpression::MatchesContext(ExecutionContext &exe_ctx) { … }
lldb::ValueObjectSP UserExpression::GetObjectPointerValueObject(
lldb::StackFrameSP frame_sp, llvm::StringRef object_name, Status &err) { … }
lldb::addr_t UserExpression::GetObjectPointer(lldb::StackFrameSP frame_sp,
llvm::StringRef object_name,
Status &err) { … }
lldb::ExpressionResults
UserExpression::Evaluate(ExecutionContext &exe_ctx,
const EvaluateExpressionOptions &options,
llvm::StringRef expr, llvm::StringRef prefix,
lldb::ValueObjectSP &result_valobj_sp, Status &error,
std::string *fixed_expression, ValueObject *ctx_obj) { … }
lldb::ExpressionResults
UserExpression::Execute(DiagnosticManager &diagnostic_manager,
ExecutionContext &exe_ctx,
const EvaluateExpressionOptions &options,
lldb::UserExpressionSP &shared_ptr_to_me,
lldb::ExpressionVariableSP &result_var) { … }