mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 17:18:55 +00:00
Generalize addrmap dumping
While debugging another patch series, I wanted to dump an addrmap. I came up with this patch, which generalizes the addrmap-dumping code from psymtab.c and moves it to addrmap.c. psymtab.c is changed to use the new code.
This commit is contained in:
@@ -590,6 +590,41 @@ addrmap_create_mutable (struct obstack *obstack)
|
||||
return (struct addrmap *) map;
|
||||
}
|
||||
|
||||
/* See addrmap.h. */
|
||||
|
||||
void
|
||||
addrmap_dump (struct addrmap *map, struct ui_file *outfile, void *payload)
|
||||
{
|
||||
/* True if the previously printed addrmap entry was for PAYLOAD.
|
||||
If so, we want to print the next one as well (since the next
|
||||
addrmap entry defines the end of the range). */
|
||||
bool previous_matched = false;
|
||||
|
||||
auto callback = [&] (CORE_ADDR start_addr, void *obj)
|
||||
{
|
||||
QUIT;
|
||||
|
||||
bool matches = payload == nullptr || payload == obj;
|
||||
const char *addr_str = nullptr;
|
||||
if (matches)
|
||||
addr_str = host_address_to_string (obj);
|
||||
else if (previous_matched)
|
||||
addr_str = "<ends here>";
|
||||
|
||||
if (matches || previous_matched)
|
||||
fprintf_filtered (outfile, " %s%s %s\n",
|
||||
payload != nullptr ? " " : "",
|
||||
core_addr_to_string (start_addr),
|
||||
addr_str);
|
||||
|
||||
previous_matched = matches;
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
addrmap_foreach (map, callback);
|
||||
}
|
||||
|
||||
#if GDB_SELF_TEST
|
||||
namespace selftests {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user