diff options
Diffstat (limited to 'include/lldb/Host/common/NativeProcessProtocol.h')
-rw-r--r-- | include/lldb/Host/common/NativeProcessProtocol.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/lldb/Host/common/NativeProcessProtocol.h b/include/lldb/Host/common/NativeProcessProtocol.h index f05b8d01a1c9..2d48717c4fbb 100644 --- a/include/lldb/Host/common/NativeProcessProtocol.h +++ b/include/lldb/Host/common/NativeProcessProtocol.h @@ -32,6 +32,14 @@ namespace lldb_private { class MemoryRegionInfo; class ResumeActionList; +struct SVR4LibraryInfo { + std::string name; + lldb::addr_t link_map; + lldb::addr_t base_addr; + lldb::addr_t ld_addr; + lldb::addr_t next; +}; + // NativeProcessProtocol class NativeProcessProtocol { public: @@ -76,6 +84,31 @@ public: Status ReadMemoryWithoutTrap(lldb::addr_t addr, void *buf, size_t size, size_t &bytes_read); + /// Reads a null terminated string from memory. + /// + /// Reads up to \p max_size bytes of memory until it finds a '\0'. + /// If a '\0' is not found then it reads max_size-1 bytes as a string and a + /// '\0' is added as the last character of the \p buffer. + /// + /// \param[in] addr + /// The address in memory to read from. + /// + /// \param[in] buffer + /// An allocated buffer with at least \p max_size size. + /// + /// \param[in] max_size + /// The maximum number of bytes to read from memory until it reads the + /// string. + /// + /// \param[out] total_bytes_read + /// The number of bytes read from memory into \p buffer. + /// + /// \return + /// Returns a StringRef backed up by the \p buffer passed in. + llvm::Expected<llvm::StringRef> + ReadCStringFromMemory(lldb::addr_t addr, char *buffer, size_t max_size, + size_t &total_bytes_read); + virtual Status WriteMemory(lldb::addr_t addr, const void *buf, size_t size, size_t &bytes_written) = 0; @@ -86,6 +119,12 @@ public: virtual lldb::addr_t GetSharedLibraryInfoAddress() = 0; + virtual llvm::Expected<std::vector<SVR4LibraryInfo>> + GetLoadedSVR4Libraries() { + return llvm::createStringError(llvm::inconvertibleErrorCode(), + "Not implemented"); + } + virtual bool IsAlive() const; virtual size_t UpdateThreads() = 0; @@ -391,6 +430,8 @@ protected: NativeProcessProtocol(lldb::pid_t pid, int terminal_fd, NativeDelegate &delegate); + void SetID(lldb::pid_t pid) { m_pid = pid; } + // interface for state handling void SetState(lldb::StateType state, bool notify_delegates = true); |