Index: kernel/generic/include/symtab.h
===================================================================
--- kernel/generic/include/symtab.h	(revision b83ba8179c33ad85d30d6e84e46f3d415ecd02d1)
+++ kernel/generic/include/symtab.h	(revision 0dee00511f1e05f5046b5d0415b0561bb1aa531e)
@@ -45,9 +45,9 @@
 };
 
-extern int symtab_name_lookup(unative_t addr, char **name);
-extern char *symtab_fmt_name_lookup(unative_t addr);
-extern int symtab_addr_lookup(const char *name, uintptr_t *addr);
-extern void symtab_print_search(const char *name);
-extern int symtab_compl(char *input, size_t size);
+extern int symtab_name_lookup(uintptr_t, char **, uintptr_t *);
+extern char *symtab_fmt_name_lookup(uintptr_t);
+extern int symtab_addr_lookup(const char *, uintptr_t *);
+extern void symtab_print_search(const char *);
+extern int symtab_compl(char *, size_t);
 
 #ifdef CONFIG_SYMTAB
Index: kernel/generic/src/debug/symtab.c
===================================================================
--- kernel/generic/src/debug/symtab.c	(revision b83ba8179c33ad85d30d6e84e46f3d415ecd02d1)
+++ kernel/generic/src/debug/symtab.c	(revision 0dee00511f1e05f5046b5d0415b0561bb1aa531e)
@@ -46,6 +46,7 @@
 /** Get name of a symbol that seems most likely to correspond to address.
  *
- * @param addr Address.
- * @param name Place to store pointer to the symbol name.
+ * @param addr		Address.
+ * @param name		Place to store pointer to the symbol name.
+ * @param offset	Place to store offset from the symbol address.
  *
  * @return Zero on success or negative error code, ENOENT if not found,
@@ -53,5 +54,5 @@
  *
  */
-int symtab_name_lookup(unative_t addr, char **name)
+int symtab_name_lookup(uintptr_t addr, char **name, uintptr_t *offset)
 {
 #ifdef CONFIG_SYMTAB
@@ -65,4 +66,7 @@
 	if (addr >= uint64_t_le2host(symbol_table[i - 1].address_le)) {
 		*name = symbol_table[i - 1].symbol_name;
+		if (offset)
+			*offset = addr -
+			    uint64_t_le2host(symbol_table[i - 1].address_le);
 		return EOK;
 	}
@@ -88,8 +92,8 @@
  *
  */
-char *symtab_fmt_name_lookup(unative_t addr)
+char *symtab_fmt_name_lookup(uintptr_t addr)
 {
 	char *name;
-	int rc = symtab_name_lookup(addr, &name);
+	int rc = symtab_name_lookup(addr, &name, NULL);
 	
 	switch (rc) {
