From e904f56d02afd68ffd9333435fe8b026f1e14b5f Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 29 Dec 2015 23:52:57 -0500 Subject: gdb/sim: add support for exporting memory map This allows gdb to quickly dump & process the memory map that the sim knows about. This isn't fully accurate, but is largely limited by the gdb memory map format. While the sim supports RWX bits, gdb can only handle RW or RO regions. --- gdb/ChangeLog | 6 ++++++ gdb/remote-sim.c | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+) (limited to 'gdb') diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f3357d5..02c561d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2021-01-07 Mike Frysinger + + * remote-sim.c: Include memory-map.h. + (gdbsim_target): Define memory_map override. + (gdbsim_target::memory_map): Define. + 2021-01-07 Tom Tromey * ada-lang.c (do_full_match): Conditionally skip "_ada_" prefix. diff --git a/gdb/remote-sim.c b/gdb/remote-sim.c index c4f3913..b21a4e8 100644 --- a/gdb/remote-sim.c +++ b/gdb/remote-sim.c @@ -42,6 +42,7 @@ #include "readline/readline.h" #include "gdbthread.h" #include "gdbsupport/byte-vector.h" +#include "memory-map.h" /* Prototypes */ @@ -164,6 +165,7 @@ struct gdbsim_target final bool has_all_memory () override; bool has_memory () override; + std::vector memory_map () override; private: sim_inferior_data *get_inferior_data_by_ptid (ptid_t ptid, @@ -1270,6 +1272,22 @@ gdbsim_target::has_memory () return true; } +/* Get memory map from the simulator. */ + +std::vector +gdbsim_target::memory_map () +{ + struct sim_inferior_data *sim_data + = get_sim_inferior_data (current_inferior (), SIM_INSTANCE_NEEDED); + std::vector result; + gdb::unique_xmalloc_ptr text (sim_memory_map (sim_data->gdbsim_desc)); + + if (text != nullptr) + result = parse_memory_map (text.get ()); + + return result; +} + void _initialize_remote_sim (); void _initialize_remote_sim () -- cgit v1.1