--- ./makedumpfile.h.org	2006-09-06 15:57:08.000000000 +0900
+++ ./makedumpfile.h	2006-09-06 16:10:33.000000000 +0900
@@ -139,6 +139,12 @@ isAnon(unsigned long mapping)
 #define ULONG(ADDR)	*((unsigned long *)(ADDR))
 
 /*
+ * for symbol
+ */
+#define NOT_FOUND_SYMBOL	(0)
+#define SYMBOL(X)		(symbol_table.X)
+
+/*
  * kernel version
  */
 #define VERSION_2_6_15		(15)
@@ -268,6 +274,10 @@ struct DumpInfo {
 	FILE			*file_configfile;
 	char			*name_configfile;	     /* config file */
 	char			release[65]; /*Can I define 65 automatically?*/
-	unsigned long		sym_mem_map;
-	unsigned long		sym_system_utsname;
 };
+
+struct symbol_table {
+	unsigned long	mem_map;
+	unsigned long	system_utsname;
+};
+
--- ./makedumpfile.c.org	2006-09-06 15:57:03.000000000 +0900
+++ ./makedumpfile.c	2006-09-06 16:00:43.000000000 +0900
@@ -24,6 +24,8 @@
 
 #include "makedumpfile.h"
 
+struct symbol_table	symbol_table;
+
 /*
  *  Strip line-ending linefeeds in a string.
  */
@@ -274,11 +276,11 @@ check_release(struct DumpInfo *info)
 	unsigned long sym_system_utsname;
 	struct utsname system_utsname;
 
-	sym_system_utsname = info->sym_system_utsname;
+	sym_system_utsname = SYMBOL(system_utsname);
 	/*
 	 * Get the kernel version from the symbol "system_utsname".
 	 */
-	if (!sym_system_utsname) {
+	if (SYMBOL(system_utsname) == NOT_FOUND_SYMBOL) {
 		ERRMSG("Can't get the symbol of system_utsname.\n");
 		return FALSE;
 	}
@@ -705,8 +707,8 @@ out:
 int
 get_symbol_info(struct DumpInfo *info)
 {
-	unsigned long sym_mem_map = 0;
-	unsigned long sym_system_utsname = 0;
+	unsigned long sym_mem_map = NOT_FOUND_SYMBOL;
+	unsigned long sym_system_utsname = NOT_FOUND_SYMBOL;
 	char buf[BUFSIZE_FGETS], *mapitems[MAXARGS], *endp;
 
 	if (info->name_sysmap == NULL) {
@@ -739,11 +741,12 @@ get_symbol_info(struct DumpInfo *info)
 				return FALSE;
 			}
 		}
-		if (sym_mem_map != 0 && sym_system_utsname != 0)
+		if ((sym_mem_map != NOT_FOUND_SYMBOL)
+		    && (sym_system_utsname != NOT_FOUND_SYMBOL))
 			break;
 	}
-	info->sym_mem_map = sym_mem_map;
-	info->sym_system_utsname = sym_system_utsname;
+	SYMBOL(mem_map) = sym_mem_map;
+	SYMBOL(system_utsname) = sym_system_utsname;
 
 	return TRUE;
 }
@@ -832,18 +835,19 @@ generate_config(struct DumpInfo *info)
 	 */
 	if (!get_symbol_info(info))
 		return FALSE;
-	if (!info->sym_mem_map || !info->sym_system_utsname) {
+	if ((SYMBOL(mem_map) == NOT_FOUND_SYMBOL)
+	    || (SYMBOL(system_utsname) == NOT_FOUND_SYMBOL)) {
 		ERRMSG("Can't get the symbol of mem_map.\n");
 		return FALSE;
 	}
 	fprintf(info->file_configfile, "%s%lx\n", STR_SYMBOL("mem_map"),
-	    info->sym_mem_map);
+	    SYMBOL(mem_map));
 
 	/*
 	 * write 1st kernel's address of SYMBOL(system_utsname)
 	 */
 	fprintf(info->file_configfile, "%s%lx\n", STR_SYMBOL("system_utsname"),
-	    info->sym_system_utsname);
+	    SYMBOL(system_utsname));
 
 	/*
 	 * get 1st kernel's version
@@ -888,6 +892,9 @@ read_config(struct DumpInfo *info)
 	char buf[BUFSIZE_FGETS], *endp;
 	unsigned int ok_flag = 0, i;
 
+	SYMBOL(mem_map) = NOT_FOUND_SYMBOL;
+	SYMBOL(system_utsname) = NOT_FOUND_SYMBOL;
+
 	while (fgets(buf, BUFSIZE_FGETS, info->file_configfile)) {
 		i = strlen(buf);
 		if (buf[i - 1] == '\n')
@@ -920,7 +927,7 @@ read_config(struct DumpInfo *info)
 					info->name_configfile, buf);
 				return FALSE;
 			}
-			info->sym_mem_map = tmp_ulong;
+			SYMBOL(mem_map) = tmp_ulong;
 		}
 		if (strncmp(buf, STR_SYMBOL("system_utsname"), strlen(STR_SYMBOL("system_utsname"))) == 0) {
 			tmp_ulong = strtoul(buf
@@ -931,7 +938,7 @@ read_config(struct DumpInfo *info)
 					info->name_configfile, buf);
 				return FALSE;
 			}
-			info->sym_system_utsname = tmp_ulong;
+			SYMBOL(system_utsname) = tmp_ulong;
 		}
 		if (strncmp(buf, STR_SIZE("page"), strlen(STR_SIZE("page"))) == 0) {
 			tmp_ulong = strtoul(buf + strlen(STR_SIZE("page")), &endp, 10);
@@ -987,7 +994,7 @@ read_config(struct DumpInfo *info)
 int
 get_mem_map(struct DumpInfo *info)
 {
-	unsigned long sym_mem_map = info->sym_mem_map;
+	unsigned long sym_mem_map = SYMBOL(mem_map);
 	unsigned long addr_mem_map;
 
 	/*
@@ -1031,7 +1038,8 @@ initial(struct DumpInfo *info)
 	} else {
 		if (!read_config(info))
 			return FALSE;
-		if (!info->sym_mem_map || !info->sym_system_utsname) {
+		if ((SYMBOL(mem_map) == NOT_FOUND_SYMBOL)
+		    || (SYMBOL(system_utsname) == NOT_FOUND_SYMBOL)) {
 			ERRMSG("Invalid format in %s", info->name_configfile);
 			return FALSE;
 		}
