Index: kernel/generic/src/debug/symtab.c
===================================================================
--- kernel/generic/src/debug/symtab.c	(revision 98000fb4ea6015506f059c9b121e417ce991ecfd)
+++ kernel/generic/src/debug/symtab.c	(revision d45660a168e00e2e6a582319f09478bfbdfbfacb)
@@ -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) {
