diff options
Diffstat (limited to 'libhurd-mm/as-dump.c')
-rw-r--r-- | libhurd-mm/as-dump.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/libhurd-mm/as-dump.c b/libhurd-mm/as-dump.c index 839013e..27dfc6d 100644 --- a/libhurd-mm/as-dump.c +++ b/libhurd-mm/as-dump.c @@ -23,6 +23,7 @@ #include <hurd/as.h> #include <hurd/stddef.h> #include <assert.h> +#include <backtrace.h> #ifdef RM_INTERN #include <md5.h> @@ -174,6 +175,29 @@ do_walk (activity_t activity, int index, return; + case cap_thread: + if (addr_depth (addr) + THREAD_SLOTS_LOG2 > ADDR_BITS) + return; + + for (i = 0; i < THREAD_SLOTS; i ++) + do_walk (activity, i, root, + addr_extend (addr, i, THREAD_SLOTS_LOG2), + indent + 1, true, output_prefix); + + return; + + case cap_messenger: + /* rmessenger's don't expose their capability slots. */ + if (addr_depth (addr) + VG_MESSENGER_SLOTS_LOG2 > ADDR_BITS) + return; + + for (i = 0; i < VG_MESSENGER_SLOTS; i ++) + do_walk (activity, i, root, + addr_extend (addr, i, VG_MESSENGER_SLOTS_LOG2), + indent + 1, true, output_prefix); + + return; + default: return; } |