Index: HelenOS.config
===================================================================
--- HelenOS.config	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ HelenOS.config	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -318,4 +318,7 @@
 ! CONFIG_KCONSOLE (y/n)
 
+% Kernel symbol information
+! CONFIG_SYMTAB (y/n)
+
 % Detailed kernel logging
 ! CONFIG_LOG (n/y)
Index: defaults/amd64/Makefile.config
===================================================================
--- defaults/amd64/Makefile.config	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ defaults/amd64/Makefile.config	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -29,4 +29,7 @@
 CONFIG_KCONSOLE = y
 
+# Kernel symbol information
+CONFIG_SYMTAB = y
+
 # Detailed kernel logging
 CONFIG_LOG = n
Index: defaults/arm32/Makefile.config
===================================================================
--- defaults/arm32/Makefile.config	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ defaults/arm32/Makefile.config	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -17,4 +17,7 @@
 CONFIG_KCONSOLE = y
 
+# Kernel symbol information
+CONFIG_SYMTAB = y
+
 # Detailed kernel logging
 CONFIG_LOG = n
Index: defaults/ia32/Makefile.config
===================================================================
--- defaults/ia32/Makefile.config	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ defaults/ia32/Makefile.config	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -35,4 +35,7 @@
 CONFIG_KCONSOLE = y
 
+# Kernel symbol information
+CONFIG_SYMTAB = y
+
 # Detailed kernel logging
 CONFIG_LOG = n
Index: defaults/ia64/Makefile.config
===================================================================
--- defaults/ia64/Makefile.config	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ defaults/ia64/Makefile.config	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -29,4 +29,7 @@
 CONFIG_KCONSOLE = y
 
+# Kernel symbol information
+CONFIG_SYMTAB = y
+
 # Detailed kernel logging
 CONFIG_LOG = n
Index: defaults/mips32/Makefile.config
===================================================================
--- defaults/mips32/Makefile.config	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ defaults/mips32/Makefile.config	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -23,4 +23,7 @@
 CONFIG_KCONSOLE = y
 
+# Kernel symbol information
+CONFIG_SYMTAB = y
+
 # Detailed kernel logging
 CONFIG_LOG = n
Index: defaults/ppc32/Makefile.config
===================================================================
--- defaults/ppc32/Makefile.config	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ defaults/ppc32/Makefile.config	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -17,4 +17,7 @@
 CONFIG_KCONSOLE = y
 
+# Kernel symbol information
+CONFIG_SYMTAB = y
+
 # Detailed kernel logging
 CONFIG_LOG = n
Index: defaults/sparc64/Makefile.config
===================================================================
--- defaults/sparc64/Makefile.config	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ defaults/sparc64/Makefile.config	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -32,4 +32,7 @@
 CONFIG_KCONSOLE = y
 
+# Kernel symbol information
+CONFIG_SYMTAB = y
+
 # Detailed kernel logging
 CONFIG_LOG = n
Index: kernel/Makefile
===================================================================
--- kernel/Makefile	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/Makefile	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -196,5 +196,4 @@
 	generic/src/printf/vsprintf.c \
 	generic/src/printf/vsnprintf.c \
-	generic/src/debug/symtab.c \
 	generic/src/time/clock.c \
 	generic/src/time/timeout.c \
@@ -225,4 +224,12 @@
 	generic/src/console/kconsole.c \
 	generic/src/console/cmd.c
+endif
+
+## Kernel symbol information
+#
+
+ifeq ($(CONFIG_SYMTAB),y)
+GENERIC_SOURCES += \
+	generic/src/debug/symtab.c
 endif
 
@@ -322,4 +329,10 @@
 GENARCH_OBJECTS := $(addsuffix .o,$(basename $(GENARCH_SOURCES)))
 
+ifeq ($(CONFIG_SYMTAB),y)
+	SYMTAB_OBJECTS := generic/src/debug/real_map.o
+else
+	SYMTAB_OBJECTS :=
+endif
+
 .PHONY: all build clean archlinks depend disasm
 
@@ -364,6 +377,6 @@
 	echo $(SYMTAB_SECTION)" .incbin \"$<\"" | $(AS) $(AFLAGS) -o $@ 
 
-kernel.raw: depend arch/$(KARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) generic/src/debug/real_map.o
-	$(LD) -T arch/$(KARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) generic/src/debug/real_map.o -o $@ -Map kernel.map
+kernel.raw: depend arch/$(KARCH)/_link.ld $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(SYMTAB_OBJECTS)
+	$(LD) -T arch/$(KARCH)/_link.ld $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(SYMTAB_OBJECTS) -o $@ -Map kernel.map
 
 kernel.bin: kernel.raw
Index: kernel/arch/amd64/src/debugger.c
===================================================================
--- kernel/arch/amd64/src/debugger.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/amd64/src/debugger.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -36,5 +36,4 @@
 #include <console/kconsole.h>
 #include <console/cmd.h>
-#include <symtab.h>
 #include <print.h>
 #include <panic.h>
@@ -45,4 +44,8 @@
 #include <func.h>
 #include <smp/ipi.h>
+
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
 
 typedef struct  {
@@ -230,6 +233,11 @@
 		}
 	}
+
+#ifdef CONFIG_SYMTAB
 	printf("Reached breakpoint %d:%lx(%s)\n", slot, getip(istate),
 	    get_symtab_entry(getip(istate)));
+#else
+	printf("Reached breakpoint %d:%lx\n", slot, getip(istate));
+#endif
 
 #ifdef CONFIG_KCONSOLE
@@ -356,5 +364,9 @@
 	for (i = 0; i < BKPOINTS_MAX; i++)
 		if (breakpoints[i].address) {
+#ifdef CONFIG_SYMTAB
 			symbol = get_symtab_entry(breakpoints[i].address);
+#else
+			symbol = "n/a";
+#endif
 
 #ifdef __32_BITS__
Index: kernel/arch/amd64/src/interrupt.c
===================================================================
--- kernel/arch/amd64/src/interrupt.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/amd64/src/interrupt.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -44,5 +44,4 @@
 #include <mm/as.h>
 #include <arch.h>
-#include <symtab.h>
 #include <arch/asm.h>
 #include <proc/scheduler.h>
@@ -54,4 +53,8 @@
 #include <ddi/irq.h>
 
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
+
 /*
  * Interrupt and exception dispatching.
@@ -67,6 +70,10 @@
 /*	uint64_t *x = &istate->stack[0]; */
 
+#ifdef CONFIG_SYMTAB
 	if (!(symbol = get_symtab_entry(istate->rip)))
 		symbol = "";
+#else
+	symbol = "";
+#endif
 
 	printf("-----EXCEPTION(%d) OCCURED----- ( %s )\n", n, __func__);
Index: kernel/arch/ia32/src/interrupt.c
===================================================================
--- kernel/arch/ia32/src/interrupt.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/ia32/src/interrupt.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -45,5 +45,4 @@
 #include <mm/as.h>
 #include <arch.h>
-#include <symtab.h>
 #include <proc/thread.h>
 #include <proc/task.h>
@@ -54,4 +53,8 @@
 #include <ddi/irq.h>
 
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
+
 /*
  * Interrupt and exception dispatching.
@@ -64,8 +67,13 @@
 void decode_istate(istate_t *istate)
 {
-	char *symbol = get_symtab_entry(istate->eip);
-
+	char *symbol;
+
+#ifdef CONFIG_SYMTAB
+	symbol = get_symtab_entry(istate->eip);
 	if (!symbol)
 		symbol = "";
+#else
+	symbol = "";
+#endif
 
 	if (CPU)
Index: kernel/arch/ia64/src/interrupt.c
===================================================================
--- kernel/arch/ia64/src/interrupt.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/ia64/src/interrupt.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -39,5 +39,4 @@
 #include <panic.h>
 #include <print.h>
-#include <symtab.h>
 #include <debug.h>
 #include <console/console.h>
@@ -56,4 +55,8 @@
 #include <mm/tlb.h>
 
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
+
 #define VECTORS_64_BUNDLE	20
 #define VECTORS_16_BUNDLE	48
@@ -138,7 +141,11 @@
 	char *ifa, *iipa, *iip;
 
+#ifdef CONFIG_SYMTAB
 	ifa = get_symtab_entry(istate->cr_ifa);
 	iipa = get_symtab_entry(istate->cr_iipa);
 	iip = get_symtab_entry(istate->cr_iip);
+#else
+	ifa = iipa = iip = "n/a";
+#endif
 
 	putchar('\n');
Index: kernel/arch/mips32/src/debugger.c
===================================================================
--- kernel/arch/mips32/src/debugger.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/mips32/src/debugger.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -38,5 +38,4 @@
 #include <console/kconsole.h>
 #include <console/cmd.h>
-#include <symtab.h>
 #include <print.h>
 #include <panic.h>
@@ -44,4 +43,8 @@
 #include <arch/cp0.h>
 #include <func.h>
+
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
 
 bpinfo_t breakpoints[BKPOINTS_MAX];
@@ -260,5 +263,9 @@
 	for (i = 0; i < BKPOINTS_MAX; i++)
 		if (breakpoints[i].address) {
+#ifdef CONFIG_SYMTAB
 			symbol = get_symtab_entry(breakpoints[i].address);
+#else
+			symbol = "n/a";
+#endif
 			
 			printf("%-2u %-5d %#10zx %-6s %-7s %-8s %s\n", i,
@@ -349,7 +356,12 @@
 			printf("Warning: breakpoint recursion\n");
 		
-		if (!(cur->flags & BKPOINT_FUNCCALL))
+		if (!(cur->flags & BKPOINT_FUNCCALL)) {
+#ifdef CONFIG_SYMTAB
 			printf("***Breakpoint %d: %p in %s.\n", i, fireaddr,
 			    get_symtab_entry(istate->epc));
+#else
+			printf("***Breakpoint %d: %p.\n", i, fireaddr);
+#endif
+		}
 
 		/* Return first instruction back */
@@ -364,6 +376,10 @@
 		cur->flags |= BKPOINT_INPROG;
 	} else {
-		printf("***Breakpoint %p in %s.\n", fireaddr, 
+#ifdef CONFIG_SYMTAB
+		printf("***Breakpoint %p in %s.\n", fireaddr,
 		       get_symtab_entry(fireaddr));
+#else
+		printf("***Breakpoint %p.\n", fireaddr);	
+#endif
 		/* Move on to next instruction */
 		istate->epc += 4;
Index: kernel/arch/mips32/src/exception.c
===================================================================
--- kernel/arch/mips32/src/exception.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/mips32/src/exception.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -42,5 +42,4 @@
 #include <debug.h>
 #include <proc/thread.h>
-#include <symtab.h>
 #include <print.h>
 #include <interrupt.h>
@@ -48,4 +47,8 @@
 #include <ddi/irq.h>
 #include <arch/debugger.h>
+
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
 
 static char * exctable[] = {
@@ -77,4 +80,5 @@
 	char *rasymbol = "";
 
+#ifdef CONFIG_SYMTAB
 	char *s = get_symtab_entry(istate->epc);
 	if (s)
@@ -83,4 +87,5 @@
 	if (s)
 		rasymbol = s;
+#endif
 	
 	printf("PC: %#x(%s) RA: %#x(%s), SP(%p)\n", istate->epc, pcsymbol, istate->ra, rasymbol, istate->sp);
Index: kernel/arch/mips32/src/mm/tlb.c
===================================================================
--- kernel/arch/mips32/src/mm/tlb.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/mips32/src/mm/tlb.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -41,5 +41,4 @@
 #include <panic.h>
 #include <arch.h>
-#include <symtab.h>
 #include <synch/mutex.h>
 #include <print.h>
@@ -47,4 +46,8 @@
 #include <align.h>
 #include <interrupt.h>
+
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
 
 static void tlb_refill_fail(istate_t *);
@@ -324,4 +327,5 @@
 	char *sym2 = "";
 
+#ifdef CONFIG_SYMTAB
 	char *s = get_symtab_entry(istate->epc);
 	if (s)
@@ -330,4 +334,5 @@
 	if (s)
 		sym2 = s;
+#endif
 
 	fault_if_from_uspace(istate, "TLB Refill Exception on %p.",
@@ -342,7 +347,10 @@
 	char *symbol = "";
 
+#ifdef CONFIG_SYMTAB
 	char *s = get_symtab_entry(istate->epc);
 	if (s)
 		symbol = s;
+#endif
+
 	fault_if_from_uspace(istate, "TLB Invalid Exception on %p.",
 	    cp0_badvaddr_read());
@@ -355,7 +363,10 @@
 	char *symbol = "";
 
+#ifdef CONFIG_SYMTAB
 	char *s = get_symtab_entry(istate->epc);
 	if (s)
 		symbol = s;
+#endif
+
 	fault_if_from_uspace(istate, "TLB Modified Exception on %p.",
 	    cp0_badvaddr_read());
Index: kernel/arch/ppc32/src/mm/tlb.c
===================================================================
--- kernel/arch/ppc32/src/mm/tlb.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/ppc32/src/mm/tlb.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -40,7 +40,9 @@
 #include <arch.h>
 #include <print.h>
+#include <macros.h>
+
+#ifdef CONFIG_SYMTAB
 #include <symtab.h>
-#include <macros.h>
-
+#endif
 
 static unsigned int seed = 10;
@@ -122,4 +124,5 @@
 	char *sym2 = "";
 
+#ifdef CONFIG_SYMTAB
 	char *str = get_symtab_entry(istate->pc);
 	if (str)
@@ -128,4 +131,5 @@
 	if (str)
 		sym2 = str;
+#endif
 
 	fault_if_from_uspace(istate,
Index: kernel/arch/sparc64/src/trap/exception.c
===================================================================
--- kernel/arch/sparc64/src/trap/exception.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/arch/sparc64/src/trap/exception.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -41,12 +41,23 @@
 #include <arch/register.h>
 #include <debug.h>
+#include <print.h>
+
+#ifdef CONFIG_SYMTAB
 #include <symtab.h>
-#include <print.h>
+#endif
 
 void dump_istate(istate_t *istate)
 {
+	char *tpcs, *tnpcs;
+
+#ifdef CONFIG_SYMTAB
+	tpcs = get_symtab_entry(istate->tpc);
+	tnpcs = get_symtab_entry(istate->tnpc);
+#else
+	tpcs = tnpcs = "n/a";
+#endif
 	printf("TSTATE=%#" PRIx64 "\n", istate->tstate);
-	printf("TPC=%#" PRIx64 " (%s)\n", istate->tpc, get_symtab_entry(istate->tpc));
-	printf("TNPC=%#" PRIx64 " (%s)\n", istate->tnpc, get_symtab_entry(istate->tnpc));
+	printf("TPC=%#" PRIx64 " (%s)\n", istate->tpc, tpcs);
+	printf("TNPC=%#" PRIx64 " (%s)\n", istate->tnpc, tnpcs);
 }
 
Index: kernel/generic/src/console/cmd.c
===================================================================
--- kernel/generic/src/console/cmd.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/generic/src/console/cmd.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -54,5 +54,4 @@
 #include <macros.h>
 #include <debug.h>
-#include <symtab.h>
 #include <cpu.h>
 #include <mm/tlb.h>
@@ -67,4 +66,8 @@
 #include <ipc/irq.h>
 
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
+
 #ifdef CONFIG_TEST
 #include <test.h>
@@ -168,4 +171,5 @@
 };
 
+#ifdef CONFIG_SYMTAB
 /* Data and methods for 'symaddr' command. */
 static int cmd_symaddr(cmd_arg_t *argv);
@@ -183,4 +187,5 @@
 	.argv = &symaddr_argv
 };
+#endif
 
 static char set_buf[MAX_CMDLINE+1];
@@ -459,5 +464,7 @@
 	&set4_info,
 	&slabs_info,
+#ifdef CONFIG_SYMTAB
 	&symaddr_info,
+#endif
 	&sched_info,
 	&threads_info,
@@ -606,4 +613,6 @@
 }
 
+#ifdef CONFIG_SYMTAB
+
 /** Search symbol table */
 int cmd_symaddr(cmd_arg_t *argv)
@@ -614,12 +623,14 @@
 }
 
+#endif
+
 /** Call function with zero parameters */
 int cmd_call0(cmd_arg_t *argv)
 {
+#ifdef CONFIG_SYMTAB
 	uintptr_t symaddr;
-	char *symbol;
 	unative_t (*fnc)(void);
 	fncptr_t fptr;
-	
+
 	symaddr = get_symbol_addr((char *) argv->buffer);
 	if (!symaddr)
@@ -629,10 +640,9 @@
 		printf("Duplicate symbol, be more specific.\n");
 	} else {
-		symbol = get_symtab_entry(symaddr);
 		fnc = (unative_t (*)(void)) arch_construct_function(&fptr, (void *) symaddr, (void *) cmd_call0);
-		printf("Calling %s() (%p)\n", symbol, symaddr);
+		printf("Calling %s() (%p)\n", argv->buffer, symaddr);
 		printf("Result: %#" PRIxn "\n", fnc());
 	}
-	
+#endif
 	return 1;
 }
@@ -670,4 +680,5 @@
 int cmd_call1(cmd_arg_t *argv)
 {
+#ifdef CONFIG_SYMTAB
 	uintptr_t symaddr;
 	char *symbol;
@@ -677,4 +688,5 @@
 	
 	symaddr = get_symbol_addr((char *) argv->buffer);
+
 	if (!symaddr)
 		printf("Symbol %s not found.\n", argv->buffer);
@@ -688,5 +700,5 @@
 		printf("Result: %#" PRIxn "\n", fnc(arg1));
 	}
-	
+#endif
 	return 1;
 }
@@ -695,4 +707,5 @@
 int cmd_call2(cmd_arg_t *argv)
 {
+#ifdef CONFIG_SYMTAB
 	uintptr_t symaddr;
 	char *symbol;
@@ -714,6 +727,6 @@
 		       arg1, arg2, symaddr, symbol);
 		printf("Result: %#" PRIxn "\n", fnc(arg1, arg2));
-	}
-	
+	}	
+#endif
 	return 1;
 }
@@ -722,4 +735,5 @@
 int cmd_call3(cmd_arg_t *argv)
 {
+#ifdef CONFIG_SYMTAB
 	uintptr_t symaddr;
 	char *symbol;
@@ -743,5 +757,5 @@
 		printf("Result: %#" PRIxn "\n", fnc(arg1, arg2, arg3));
 	}
-	
+#endif
 	return 1;
 }
@@ -798,16 +812,27 @@
 
 	if (((char *)argv->buffer)[0] == '*') {
+#ifdef CONFIG_SYMTAB
 		addr = (uint32_t *) get_symbol_addr((char *) argv->buffer + 1);
+#else
+		addr = 0;
+#endif
 		pointer = true;
 	} else if (((char *) argv->buffer)[0] >= '0' && 
-		   ((char *)argv->buffer)[0] <= '9')
+		   ((char *)argv->buffer)[0] <= '9') {
 		addr = (uint32_t *)atoi((char *)argv->buffer);
-	else
+	} else {
+#ifdef CONFIG_SYMTAB
 		addr = (uint32_t *)get_symbol_addr((char *) argv->buffer);
+#else
+		addr = 0;
+#endif
+	}
 
 	if (!addr)
 		printf("Symbol %s not found.\n", argv->buffer);
 	else if (addr == (uint32_t *) -1) {
+#ifdef CONFIG_SYMTAB
 		symtab_print_search((char *) argv->buffer);
+#endif
 		printf("Duplicate symbol, be more specific.\n");
 	} else {
Index: kernel/generic/src/console/kconsole.c
===================================================================
--- kernel/generic/src/console/kconsole.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/generic/src/console/kconsole.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -51,8 +51,11 @@
 #include <func.h>
 #include <string.h>
-#include <symtab.h>
 #include <macros.h>
 #include <sysinfo/sysinfo.h>
 #include <ddi/device.h>
+
+#ifdef CONFIG_SYMTAB
+#include <symtab.h>
+#endif
 
 /** Simple kernel console.
@@ -259,5 +262,5 @@
 static int cmdtab_compl(char *name)
 {
-	static char output[MAX_SYMBOL_NAME + 1];
+	static char output[/*MAX_SYMBOL_NAME*/128 + 1];
 	link_t *startpos = NULL;
 	const char *foundtxt;
@@ -291,7 +294,6 @@
 		}
 	}
-	strncpy(name, output, MAX_SYMBOL_NAME);
+	strncpy(name, output, 128/*MAX_SYMBOL_NAME*/);
 	return found;
-	
 }
 
@@ -348,5 +350,9 @@
 				found = cmdtab_compl(tmp);
 			} else { /* Symtab completion */
+#ifdef CONFIG_SYMTAB
 				found = symtab_compl(tmp);
+#else
+				found = 0;
+#endif
 			}
 
@@ -516,8 +522,11 @@
 static int parse_int_arg(char *text, size_t len, unative_t *result)
 {
-	static char symname[MAX_SYMBOL_NAME];
 	uintptr_t symaddr;
 	bool isaddr = false;
 	bool isptr = false;
+
+#ifdef CONFIG_SYMTAB
+	static char symname[MAX_SYMBOL_NAME];
+#endif
 	
 	/* If we get a name, try to find it in symbol table */
@@ -532,4 +541,5 @@
 	}
 	if (text[0] < '0' || text[0] > '9') {
+#ifdef CONFIG_SYMTAB
 		strncpy(symname, text, min(len + 1, MAX_SYMBOL_NAME));
 		symaddr = get_symbol_addr(symname);
@@ -543,4 +553,7 @@
 			return -1;
 		}
+#else
+		symaddr = 0;
+#endif
 		if (isaddr)
 			*result = (unative_t)symaddr;
Index: kernel/generic/src/interrupt/interrupt.c
===================================================================
--- kernel/generic/src/interrupt/interrupt.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/generic/src/interrupt/interrupt.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -46,5 +46,8 @@
 #include <panic.h>
 #include <print.h>
+
+#ifdef CONFIG_SYMTAB
 #include <symtab.h>
+#endif
 
 static struct {
@@ -131,7 +134,11 @@
 	
 	for (i = 0; i < IVT_ITEMS; i++) {
+#ifdef CONFIG_SYMTAB
 		symbol = get_symtab_entry((unative_t) exc_table[i].f);
 		if (!symbol)
 			symbol = "not found";
+#else
+		symbol = "n/a";
+#endif
 
 #ifdef __32_BITS__
Index: kernel/generic/src/synch/spinlock.c
===================================================================
--- kernel/generic/src/synch/spinlock.c	(revision d9167a1c0ca5ffac0dfafd7929c3ec64d38d1a47)
+++ kernel/generic/src/synch/spinlock.c	(revision e2b762ec7955698a156a39c44cbaacd7211758b2)
@@ -43,5 +43,8 @@
 #include <print.h>
 #include <debug.h>
+
+#ifdef CONFIG_SYMTAB
 #include <symtab.h>
+#endif
 
 #ifdef CONFIG_FB
@@ -77,6 +80,8 @@
 {
 	count_t i = 0;
+	bool deadlock_reported = false;
+#ifdef CONFIG_SYMTAB
 	char *symbol;
-	bool deadlock_reported = false;
+#endif
 
 	preemption_disable();
@@ -109,7 +114,9 @@
 			printf("cpu%u: looping on spinlock %" PRIp ":%s, caller=%" PRIp,
 				CPU->id, sl, sl->name, CALLER);
+#ifdef CONFIG_SYMTAB
 			symbol = get_symtab_entry(CALLER);
 			if (symbol)
 				printf("(%s)", symbol);
+#endif
 			printf("\n");
 			i = 0;
