Index: uspace/lib/libc/generic/udebug.c
===================================================================
--- uspace/lib/libc/generic/udebug.c	(revision 94790d01466eefddc7dfc66d4537c2a02abef404)
+++ uspace/lib/libc/generic/udebug.c	(revision fea0ce628d7b303f0184370fc5e54b52cc69e1ef)
@@ -69,4 +69,20 @@
 }
 
+int udebug_areas_read(int phoneid, void *buffer, size_t n,
+	size_t *copied, size_t *needed)
+{
+	ipcarg_t a_copied, a_needed;
+	int rc;
+
+	rc = async_req_3_3(phoneid, IPC_M_DEBUG_ALL, UDEBUG_M_AREAS_READ,
+		(sysarg_t)buffer, n, NULL, &a_copied, &a_needed);
+
+	*copied = (size_t)a_copied;
+	*needed = (size_t)a_needed;
+
+	return rc;
+}
+
+
 int udebug_mem_read(int phoneid, void *buffer, uintptr_t addr, size_t n)
 {
Index: uspace/lib/libc/include/udebug.h
===================================================================
--- uspace/lib/libc/include/udebug.h	(revision 94790d01466eefddc7dfc66d4537c2a02abef404)
+++ uspace/lib/libc/include/udebug.h	(revision fea0ce628d7b303f0184370fc5e54b52cc69e1ef)
@@ -47,4 +47,6 @@
 int udebug_thread_read(int phoneid, void *buffer, size_t n,
 	size_t *copied, size_t *needed);
+int udebug_areas_read(int phoneid, void *buffer, size_t n,
+	size_t *copied, size_t *needed);
 int udebug_mem_read(int phoneid, void *buffer, uintptr_t addr, size_t n);
 int udebug_args_read(int phoneid, thash_t tid, sysarg_t *buffer);
