/** Representation of a process
*
- * This class is mixing a lot of different responsabilities and is tied
+ * This class is mixing a lot of different responsibilities and is tied
* to SIMIX. It should probably be split into different classes.
*
- * Responsabilities:
+ * Responsibilities:
*
* - reading from the process memory (`AddressSpace`);
- * - accessing the system state of the porcess (heap, …);
+ * - accessing the system state of the process (heap, …);
* - storing the SIMIX state of the process;
* - privatization;
* - communication with the model-checked process;
const void* read_bytes(void* buffer, std::size_t size,
RemotePtr<void> address, int process_index = ProcessIndexAny,
ReadOptions options = ReadOptions::none()) const override;
+
void read_variable(const char* name, void* target, size_t size) const;
+ template<class T> void read_variable(const char* name, T* target) const
+ {
+ read_variable(name, target, sizeof(*target));
+ }
template<class T>
- T read_variable(const char *name) const
+ Remote<T> read_variable(const char *name) const
{
- static_assert(std::is_trivial<T>::value, "Cannot read a non-trivial type");
- T res;
- read_variable(name, &res, sizeof(T));
+ Remote<T> res;
+ read_variable(name, res.getBuffer(), sizeof(T));
return res;
}
+
std::string read_string(RemotePtr<char> address) const;
std::string read_string(RemotePtr<char> address, std::size_t len) const
{
*/
unw_addr_space_t unw_addr_space;
- /** Underlying libunwind addres-space
+ /** Underlying libunwind address-space
*
* The `find_proc_info`, `put_unwind_info`, `get_dyn_info_list_addr`
* operations of the native MC address space is currently delegated