blob: 30f4005dfc0fd51ff2635abf8992423ccf462592 [file] [log] [blame]
//===-- SBTarget.h ----------------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_API_SBTARGET_H
#define LLDB_API_SBTARGET_H
#include "lldb/API/SBAddress.h"
#include "lldb/API/SBAttachInfo.h"
#include "lldb/API/SBBreakpoint.h"
#include "lldb/API/SBBroadcaster.h"
#include "lldb/API/SBDefines.h"
#include "lldb/API/SBFileSpec.h"
#include "lldb/API/SBFileSpecList.h"
#include "lldb/API/SBLaunchInfo.h"
#include "lldb/API/SBSymbolContextList.h"
#include "lldb/API/SBType.h"
#include "lldb/API/SBValue.h"
#include "lldb/API/SBWatchpoint.h"
namespace lldb {
class SBPlatform;
class LLDB_API SBTarget {
public:
// Broadcaster bits.
enum {
eBroadcastBitBreakpointChanged = (1 << 0),
eBroadcastBitModulesLoaded = (1 << 1),
eBroadcastBitModulesUnloaded = (1 << 2),
eBroadcastBitWatchpointChanged = (1 << 3),
eBroadcastBitSymbolsLoaded = (1 << 4)
};
// Constructors
SBTarget();
SBTarget(const lldb::SBTarget &rhs);
SBTarget(const lldb::TargetSP &target_sp);
// Destructor
~SBTarget();
const lldb::SBTarget &operator=(const lldb::SBTarget &rhs);
explicit operator bool() const;
bool IsValid() const;
static bool EventIsTargetEvent(const lldb::SBEvent &event);
static lldb::SBTarget GetTargetFromEvent(const lldb::SBEvent &event);
static uint32_t GetNumModulesFromEvent(const lldb::SBEvent &event);
static lldb::SBModule GetModuleAtIndexFromEvent(const uint32_t idx,
const lldb::SBEvent &event);
static const char *GetBroadcasterClassName();
lldb::SBProcess GetProcess();
/// Sets whether we should collect statistics on lldb or not.
///
/// \param[in] v
/// A boolean to control the collection.
void SetCollectingStats(bool v);
/// Returns whether statistics collection are enabled.
///
/// \return
/// true if statistics are currently being collected, false
/// otherwise.
bool GetCollectingStats();
/// Returns a dump of the collected statistics.
///
/// \return
/// A SBStructuredData with the statistics collected.
lldb::SBStructuredData GetStatistics();
/// Return the platform object associated with the target.
///
/// After return, the platform object should be checked for
/// validity.
///
/// \return
/// A platform object.
lldb::SBPlatform GetPlatform();
/// Return the environment variables that would be used to launch a new
/// process.
///
/// \return
/// An lldb::SBEnvironment object which is a copy of the target's
/// environment.
SBEnvironment GetEnvironment();
/// Install any binaries that need to be installed.
///
/// This function does nothing when debugging on the host system.
/// When connected to remote platforms, the target's main executable
/// and any modules that have their remote install path set will be
/// installed on the remote platform. If the main executable doesn't
/// have an install location set, it will be installed in the remote
/// platform's working directory.
///
/// \return
/// An error describing anything that went wrong during
/// installation.
SBError Install();
/// Launch a new process.
///
/// Launch a new process by spawning a new process using the
/// target object's executable module's file as the file to launch.
/// Arguments are given in \a argv, and the environment variables
/// are in \a envp. Standard input and output files can be
/// optionally re-directed to \a stdin_path, \a stdout_path, and
/// \a stderr_path.
///
/// \param[in] listener
/// An optional listener that will receive all process events.
/// If \a listener is valid then \a listener will listen to all
/// process events. If not valid, then this target's debugger
/// (SBTarget::GetDebugger()) will listen to all process events.
///
/// \param[in] argv
/// The argument array.
///
/// \param[in] envp
/// The environment array. If this is null, the default
/// environment values (provided through `settings set
/// target.env-vars`) will be used.
///
/// \param[in] stdin_path
/// The path to use when re-directing the STDIN of the new
/// process. If all stdXX_path arguments are nullptr, a pseudo
/// terminal will be used.
///
/// \param[in] stdout_path
/// The path to use when re-directing the STDOUT of the new
/// process. If all stdXX_path arguments are nullptr, a pseudo
/// terminal will be used.
///
/// \param[in] stderr_path
/// The path to use when re-directing the STDERR of the new
/// process. If all stdXX_path arguments are nullptr, a pseudo
/// terminal will be used.
///
/// \param[in] working_directory
/// The working directory to have the child process run in
///
/// \param[in] launch_flags
/// Some launch options specified by logical OR'ing
/// lldb::LaunchFlags enumeration values together.
///
/// \param[in] stop_at_entry
/// If false do not stop the inferior at the entry point.
///
/// \param[out] error
/// An error object. Contains the reason if there is some failure.
///
/// \return
/// A process object for the newly created process.
lldb::SBProcess Launch(SBListener &listener, char const **argv,
char const **envp, const char *stdin_path,
const char *stdout_path, const char *stderr_path,
const char *working_directory,
uint32_t launch_flags, // See LaunchFlags
bool stop_at_entry, lldb::SBError &error);
SBProcess LoadCore(const char *core_file);
SBProcess LoadCore(const char *core_file, lldb::SBError &error);
/// Launch a new process with sensible defaults.
///
/// \param[in] argv
/// The argument array.
///
/// \param[in] envp
/// The environment array. If this isn't provided, the default
/// environment values (provided through `settings set
/// target.env-vars`) will be used.
///
/// \param[in] working_directory
/// The working directory to have the child process run in
///
/// Default: listener
/// Set to the target's debugger (SBTarget::GetDebugger())
///
/// Default: launch_flags
/// Empty launch flags
///
/// Default: stdin_path
/// Default: stdout_path
/// Default: stderr_path
/// A pseudo terminal will be used.
///
/// \return
/// A process object for the newly created process.
SBProcess LaunchSimple(const char **argv, const char **envp,
const char *working_directory);
SBProcess Launch(SBLaunchInfo &launch_info, SBError &error);
SBProcess Attach(SBAttachInfo &attach_info, SBError &error);
/// Attach to process with pid.
///
/// \param[in] listener
/// An optional listener that will receive all process events.
/// If \a listener is valid then \a listener will listen to all
/// process events. If not valid, then this target's debugger
/// (SBTarget::GetDebugger()) will listen to all process events.
///
/// \param[in] pid
/// The process ID to attach to.
///
/// \param[out] error
/// An error explaining what went wrong if attach fails.
///
/// \return
/// A process object for the attached process.
lldb::SBProcess AttachToProcessWithID(SBListener &listener, lldb::pid_t pid,
lldb::SBError &error);
/// Attach to process with name.
///
/// \param[in] listener
/// An optional listener that will receive all process events.
/// If \a listener is valid then \a listener will listen to all
/// process events. If not valid, then this target's debugger
/// (SBTarget::GetDebugger()) will listen to all process events.
///
/// \param[in] name
/// Basename of process to attach to.
///
/// \param[in] wait_for
/// If true wait for a new instance of 'name' to be launched.
///
/// \param[out] error
/// An error explaining what went wrong if attach fails.
///
/// \return
/// A process object for the attached process.
lldb::SBProcess AttachToProcessWithName(SBListener &listener,
const char *name, bool wait_for,
lldb::SBError &error);
/// Connect to a remote debug server with url.
///
/// \param[in] listener
/// An optional listener that will receive all process events.
/// If \a listener is valid then \a listener will listen to all
/// process events. If not valid, then this target's debugger
/// (SBTarget::GetDebugger()) will listen to all process events.
///
/// \param[in] url
/// The url to connect to, e.g., 'connect://localhost:12345'.
///
/// \param[in] plugin_name
/// The plugin name to be used; can be nullptr.
///
/// \param[out] error
/// An error explaining what went wrong if the connect fails.
///
/// \return
/// A process object for the connected process.
lldb::SBProcess ConnectRemote(SBListener &listener, const char *url,
const char *plugin_name, SBError &error);
lldb::SBFileSpec GetExecutable();
// Append the path mapping (from -> to) to the target's paths mapping list.
void AppendImageSearchPath(const char *from, const char *to,
lldb::SBError &error);
bool AddModule(lldb::SBModule &module);
lldb::SBModule AddModule(const char *path, const char *triple,
const char *uuid);
lldb::SBModule AddModule(const char *path, const char *triple,
const char *uuid_cstr, const char *symfile);
lldb::SBModule AddModule(const SBModuleSpec &module_spec);
uint32_t GetNumModules() const;
lldb::SBModule GetModuleAtIndex(uint32_t idx);
bool RemoveModule(lldb::SBModule module);
lldb::SBDebugger GetDebugger() const;
lldb::SBModule FindModule(const lldb::SBFileSpec &file_spec);
/// Find compile units related to *this target and passed source
/// file.
///
/// \param[in] sb_file_spec
/// A lldb::SBFileSpec object that contains source file
/// specification.
///
/// \return
/// A lldb::SBSymbolContextList that gets filled in with all of
/// the symbol contexts for all the matches.
lldb::SBSymbolContextList
FindCompileUnits(const lldb::SBFileSpec &sb_file_spec);
lldb::ByteOrder GetByteOrder();
uint32_t GetAddressByteSize();
const char *GetTriple();
/// Architecture data byte width accessor
///
/// \return
/// The size in 8-bit (host) bytes of a minimum addressable
/// unit from the Architecture's data bus
uint32_t GetDataByteSize();
/// Architecture code byte width accessor
///
/// \return
/// The size in 8-bit (host) bytes of a minimum addressable
/// unit from the Architecture's code bus
uint32_t GetCodeByteSize();
/// Set the base load address for a module section.
///
/// \param[in] section
/// The section whose base load address will be set within this
/// target.
///
/// \param[in] section_base_addr
/// The base address for the section.
///
/// \return
/// An error to indicate success, fail, and any reason for
/// failure.
lldb::SBError SetSectionLoadAddress(lldb::SBSection section,
lldb::addr_t section_base_addr);
/// Clear the base load address for a module section.
///
/// \param[in] section
/// The section whose base load address will be cleared within
/// this target.
///
/// \return
/// An error to indicate success, fail, and any reason for
/// failure.
lldb::SBError ClearSectionLoadAddress(lldb::SBSection section);
/// Slide all file addresses for all module sections so that \a module
/// appears to loaded at these slide addresses.
///
/// When you need all sections within a module to be loaded at a
/// rigid slide from the addresses found in the module object file,
/// this function will allow you to easily and quickly slide all
/// module sections.
///
/// \param[in] module
/// The module to load.
///
/// \param[in] sections_offset
/// An offset that will be applied to all section file addresses
/// (the virtual addresses found in the object file itself).
///
/// \return
/// An error to indicate success, fail, and any reason for
/// failure.
lldb::SBError SetModuleLoadAddress(lldb::SBModule module,
int64_t sections_offset);
/// Clear the section base load addresses for all sections in a module.
///
/// \param[in] module
/// The module to unload.
///
/// \return
/// An error to indicate success, fail, and any reason for
/// failure.
lldb::SBError ClearModuleLoadAddress(lldb::SBModule module);
/// Find functions by name.
///
/// \param[in] name
/// The name of the function we are looking for.
///
/// \param[in] name_type_mask
/// A logical OR of one or more FunctionNameType enum bits that
/// indicate what kind of names should be used when doing the
/// lookup. Bits include fully qualified names, base names,
/// C++ methods, or ObjC selectors.
/// See FunctionNameType for more details.
///
/// \return
/// A lldb::SBSymbolContextList that gets filled in with all of
/// the symbol contexts for all the matches.
lldb::SBSymbolContextList
FindFunctions(const char *name,
uint32_t name_type_mask = lldb::eFunctionNameTypeAny);
/// Find global and static variables by name.
///
/// \param[in] name
/// The name of the global or static variable we are looking
/// for.
///
/// \param[in] max_matches
/// Allow the number of matches to be limited to \a max_matches.
///
/// \return
/// A list of matched variables in an SBValueList.
lldb::SBValueList FindGlobalVariables(const char *name, uint32_t max_matches);
/// Find the first global (or static) variable by name.
///
/// \param[in] name
/// The name of the global or static variable we are looking
/// for.
///
/// \return
/// An SBValue that gets filled in with the found variable (if any).
lldb::SBValue FindFirstGlobalVariable(const char *name);
/// Find global and static variables by pattern.
///
/// \param[in] name
/// The pattern to search for global or static variables
///
/// \param[in] max_matches
/// Allow the number of matches to be limited to \a max_matches.
///
/// \param[in] matchtype
/// The match type to use.
///
/// \return
/// A list of matched variables in an SBValueList.
lldb::SBValueList FindGlobalVariables(const char *name, uint32_t max_matches,
MatchType matchtype);
/// Find global functions by their name with pattern matching.
///
/// \param[in] name
/// The pattern to search for global or static variables
///
/// \param[in] max_matches
/// Allow the number of matches to be limited to \a max_matches.
///
/// \param[in] matchtype
/// The match type to use.
///
/// \return
/// A list of matched variables in an SBValueList.
lldb::SBSymbolContextList FindGlobalFunctions(const char *name,
uint32_t max_matches,
MatchType matchtype);
void Clear();
/// Resolve a current file address into a section offset address.
///
/// \param[in] file_addr
/// The file address to resolve.
///
/// \return
/// An SBAddress which will be valid if...
lldb::SBAddress ResolveFileAddress(lldb::addr_t file_addr);
/// Resolve a current load address into a section offset address.
///
/// \param[in] vm_addr
/// A virtual address from the current process state that is to
/// be translated into a section offset address.
///
/// \return
/// An SBAddress which will be valid if \a vm_addr was
/// successfully resolved into a section offset address, or an
/// invalid SBAddress if \a vm_addr doesn't resolve to a section
/// in a module.
lldb::SBAddress ResolveLoadAddress(lldb::addr_t vm_addr);
/// Resolve a current load address into a section offset address
/// using the process stop ID to identify a time in the past.
///
/// \param[in] stop_id
/// Each time a process stops, the process stop ID integer gets
/// incremented. These stop IDs are used to identify past times
/// and can be used in history objects as a cheap way to store
/// the time at which the sample was taken. Specifying
/// UINT32_MAX will always resolve the address using the
/// currently loaded sections.
///
/// \param[in] vm_addr
/// A virtual address from the current process state that is to
/// be translated into a section offset address.
///
/// \return
/// An SBAddress which will be valid if \a vm_addr was
/// successfully resolved into a section offset address, or an
/// invalid SBAddress if \a vm_addr doesn't resolve to a section
/// in a module.
lldb::SBAddress ResolvePastLoadAddress(uint32_t stop_id,
lldb::addr_t vm_addr);
SBSymbolContext ResolveSymbolContextForAddress(const SBAddress &addr,
uint32_t resolve_scope);
/// Read target memory. If a target process is running then memory
/// is read from here. Otherwise the memory is read from the object
/// files. For a target whose bytes are sized as a multiple of host
/// bytes, the data read back will preserve the target's byte order.
///
/// \param[in] addr
/// A target address to read from.
///
/// \param[out] buf
/// The buffer to read memory into.
///
/// \param[in] size
/// The maximum number of host bytes to read in the buffer passed
/// into this call
///
/// \param[out] error
/// Status information is written here if the memory read fails.
///
/// \return
/// The amount of data read in host bytes.
size_t ReadMemory(const SBAddress addr, void *buf, size_t size,
lldb::SBError &error);
lldb::SBBreakpoint BreakpointCreateByLocation(const char *file,
uint32_t line);
lldb::SBBreakpoint
BreakpointCreateByLocation(const lldb::SBFileSpec &file_spec, uint32_t line);
lldb::SBBreakpoint
BreakpointCreateByLocation(const lldb::SBFileSpec &file_spec, uint32_t line,
lldb::addr_t offset);
lldb::SBBreakpoint
BreakpointCreateByLocation(const lldb::SBFileSpec &file_spec, uint32_t line,
lldb::addr_t offset, SBFileSpecList &module_list);
lldb::SBBreakpoint
BreakpointCreateByLocation(const lldb::SBFileSpec &file_spec, uint32_t line,
uint32_t column, lldb::addr_t offset,
SBFileSpecList &module_list);
lldb::SBBreakpoint
BreakpointCreateByLocation(const lldb::SBFileSpec &file_spec, uint32_t line,
uint32_t column, lldb::addr_t offset,
SBFileSpecList &module_list,
bool move_to_nearest_code);
lldb::SBBreakpoint BreakpointCreateByName(const char *symbol_name,
const char *module_name = nullptr);
// This version uses name_type_mask = eFunctionNameTypeAuto
lldb::SBBreakpoint
BreakpointCreateByName(const char *symbol_name,
const SBFileSpecList &module_list,
const SBFileSpecList &comp_unit_list);
lldb::SBBreakpoint BreakpointCreateByName(
const char *symbol_name,
uint32_t
name_type_mask, // Logical OR one or more FunctionNameType enum bits
const SBFileSpecList &module_list,
const SBFileSpecList &comp_unit_list);
lldb::SBBreakpoint BreakpointCreateByName(
const char *symbol_name,
uint32_t
name_type_mask, // Logical OR one or more FunctionNameType enum bits
lldb::LanguageType symbol_language,
const SBFileSpecList &module_list, const SBFileSpecList &comp_unit_list);
lldb::SBBreakpoint BreakpointCreateByNames(
const char *symbol_name[], uint32_t num_names,
uint32_t
name_type_mask, // Logical OR one or more FunctionNameType enum bits
const SBFileSpecList &module_list,
const SBFileSpecList &comp_unit_list);
lldb::SBBreakpoint BreakpointCreateByNames(
const char *symbol_name[], uint32_t num_names,
uint32_t
name_type_mask, // Logical OR one or more FunctionNameType enum bits
lldb::LanguageType symbol_language,
const SBFileSpecList &module_list, const SBFileSpecList &comp_unit_list);
lldb::SBBreakpoint BreakpointCreateByNames(
const char *symbol_name[], uint32_t num_names,
uint32_t
name_type_mask, // Logical OR one or more FunctionNameType enum bits
lldb::LanguageType symbol_language,
lldb::addr_t offset, const SBFileSpecList &module_list,
const SBFileSpecList &comp_unit_list);
lldb::SBBreakpoint BreakpointCreateByRegex(const char *symbol_name_regex,
const char *module_name = nullptr);
lldb::SBBreakpoint
BreakpointCreateByRegex(const char *symbol_name_regex,
const SBFileSpecList &module_list,
const SBFileSpecList &comp_unit_list);
lldb::SBBreakpoint BreakpointCreateByRegex(
const char *symbol_name_regex, lldb::LanguageType symbol_language,
const SBFileSpecList &module_list, const SBFileSpecList &comp_unit_list);
lldb::SBBreakpoint
BreakpointCreateBySourceRegex(const char *source_regex,
const SBFileSpec &source_file,
const char *module_name = nullptr);
lldb::SBBreakpoint
BreakpointCreateBySourceRegex(const char *source_regex,
const SBFileSpecList &module_list,
const SBFileSpecList &source_file);
lldb::SBBreakpoint BreakpointCreateBySourceRegex(
const char *source_regex, const SBFileSpecList &module_list,
const SBFileSpecList &source_file, const SBStringList &func_names);
lldb::SBBreakpoint BreakpointCreateForException(lldb::LanguageType language,
bool catch_bp, bool throw_bp);
lldb::SBBreakpoint BreakpointCreateByAddress(addr_t address);
lldb::SBBreakpoint BreakpointCreateBySBAddress(SBAddress &address);
/// Create a breakpoint using a scripted resolver.
///
/// \param[in] class_name
/// This is the name of the class that implements a scripted resolver.
///
/// \param[in] extra_args
/// This is an SBStructuredData object that will get passed to the
/// constructor of the class in class_name. You can use this to
/// reuse the same class, parametrizing with entries from this
/// dictionary.
///
/// \param module_list
/// If this is non-empty, this will be used as the module filter in the
/// SearchFilter created for this breakpoint.
///
/// \param file_list
/// If this is non-empty, this will be used as the comp unit filter in the
/// SearchFilter created for this breakpoint.
///
/// \return
/// An SBBreakpoint that will set locations based on the logic in the
/// resolver's search callback.
lldb::SBBreakpoint BreakpointCreateFromScript(
const char *class_name,
SBStructuredData &extra_args,
const SBFileSpecList &module_list,
const SBFileSpecList &file_list,
bool request_hardware = false);
/// Read breakpoints from source_file and return the newly created
/// breakpoints in bkpt_list.
///
/// \param[in] source_file
/// The file from which to read the breakpoints.
///
/// \param[out] new_bps
/// A list of the newly created breakpoints.
///
/// \return
/// An SBError detailing any errors in reading in the breakpoints.
lldb::SBError BreakpointsCreateFromFile(SBFileSpec &source_file,
SBBreakpointList &new_bps);
/// Read breakpoints from source_file and return the newly created
/// breakpoints in bkpt_list.
///
/// \param[in] source_file
/// The file from which to read the breakpoints.
///
/// \param[in] matching_names
/// Only read in breakpoints whose names match one of the names in this
/// list.
///
/// \param[out] new_bps
/// A list of the newly created breakpoints.
///
/// \return
/// An SBError detailing any errors in reading in the breakpoints.
lldb::SBError BreakpointsCreateFromFile(SBFileSpec &source_file,
SBStringList &matching_names,
SBBreakpointList &new_bps);
/// Write breakpoints to dest_file.
///
/// \param[in] dest_file
/// The file to which to write the breakpoints.
///
/// \return
/// An SBError detailing any errors in writing in the breakpoints.
lldb::SBError BreakpointsWriteToFile(SBFileSpec &dest_file);
/// Write breakpoints listed in bkpt_list to dest_file.
///
/// \param[in] dest_file
/// The file to which to write the breakpoints.
///
/// \param[in] bkpt_list
/// Only write breakpoints from this list.
///
/// \param[in] append
/// If \b true, append the breakpoints in bkpt_list to the others
/// serialized in dest_file. If dest_file doesn't exist, then a new
/// file will be created and the breakpoints in bkpt_list written to it.
///
/// \return
/// An SBError detailing any errors in writing in the breakpoints.
lldb::SBError BreakpointsWriteToFile(SBFileSpec &dest_file,
SBBreakpointList &bkpt_list,
bool append = false);
uint32_t GetNumBreakpoints() const;
lldb::SBBreakpoint GetBreakpointAtIndex(uint32_t idx) const;
bool BreakpointDelete(break_id_t break_id);
lldb::SBBreakpoint FindBreakpointByID(break_id_t break_id);
// Finds all breakpoints by name, returning the list in bkpt_list. Returns
// false if the name is not a valid breakpoint name, true otherwise.
bool FindBreakpointsByName(const char *name, SBBreakpointList &bkpt_list);
void GetBreakpointNames(SBStringList &names);
void DeleteBreakpointName(const char *name);
bool EnableAllBreakpoints();
bool DisableAllBreakpoints();
bool DeleteAllBreakpoints();
uint32_t GetNumWatchpoints() const;
lldb::SBWatchpoint GetWatchpointAtIndex(uint32_t idx) const;
bool DeleteWatchpoint(lldb::watch_id_t watch_id);
lldb::SBWatchpoint FindWatchpointByID(lldb::watch_id_t watch_id);
lldb::SBWatchpoint WatchAddress(lldb::addr_t addr, size_t size, bool read,
bool write, SBError &error);
bool EnableAllWatchpoints();
bool DisableAllWatchpoints();
bool DeleteAllWatchpoints();
lldb::SBBroadcaster GetBroadcaster() const;
lldb::SBType FindFirstType(const char *type);
lldb::SBTypeList FindTypes(const char *type);
lldb::SBType GetBasicType(lldb::BasicType type);
lldb::SBValue CreateValueFromAddress(const char *name, lldb::SBAddress addr,
lldb::SBType type);
lldb::SBValue CreateValueFromData(const char *name, lldb::SBData data,
lldb::SBType type);
lldb::SBValue CreateValueFromExpression(const char *name, const char *expr);
SBSourceManager GetSourceManager();
lldb::SBInstructionList ReadInstructions(lldb::SBAddress base_addr,
uint32_t count);
lldb::SBInstructionList ReadInstructions(lldb::SBAddress base_addr,
uint32_t count,
const char *flavor_string);
lldb::SBInstructionList GetInstructions(lldb::SBAddress base_addr,
const void *buf, size_t size);
// The "WithFlavor" is necessary to keep SWIG from getting confused about
// overloaded arguments when using the buf + size -> Python Object magic.
lldb::SBInstructionList GetInstructionsWithFlavor(lldb::SBAddress base_addr,
const char *flavor_string,
const void *buf,
size_t size);
lldb::SBInstructionList GetInstructions(lldb::addr_t base_addr,
const void *buf, size_t size);
lldb::SBInstructionList GetInstructionsWithFlavor(lldb::addr_t base_addr,
const char *flavor_string,
const void *buf,
size_t size);
lldb::SBSymbolContextList FindSymbols(const char *name,
lldb::SymbolType type = eSymbolTypeAny);
bool operator==(const lldb::SBTarget &rhs) const;
bool operator!=(const lldb::SBTarget &rhs) const;
bool GetDescription(lldb::SBStream &description,
lldb::DescriptionLevel description_level);
lldb::SBValue EvaluateExpression(const char *expr);
lldb::SBValue EvaluateExpression(const char *expr,
const SBExpressionOptions &options);
lldb::addr_t GetStackRedZoneSize();
lldb::SBLaunchInfo GetLaunchInfo() const;
void SetLaunchInfo(const lldb::SBLaunchInfo &launch_info);
protected:
friend class SBAddress;
friend class SBBlock;
friend class SBBreakpointList;
friend class SBBreakpointNameImpl;
friend class SBDebugger;
friend class SBExecutionContext;
friend class SBFunction;
friend class SBInstruction;
friend class SBModule;
friend class SBPlatform;
friend class SBProcess;
friend class SBSection;
friend class SBSourceManager;
friend class SBSymbol;
friend class SBValue;
friend class SBVariablesOptions;
// Constructors are private, use static Target::Create function to create an
// instance of this class.
lldb::TargetSP GetSP() const;
void SetSP(const lldb::TargetSP &target_sp);
private:
lldb::TargetSP m_opaque_sp;
};
} // namespace lldb
#endif // LLDB_API_SBTARGET_H