Index: EcnlProtoTool/trunk/prototool/src/elf.c
===================================================================
--- EcnlProtoTool/trunk/prototool/src/elf.c	(revision 443)
+++ EcnlProtoTool/trunk/prototool/src/elf.c	(revision 446)
@@ -38,4 +38,30 @@
 #include <string.h>
 #include <elf.h>
+#include <ntshell/usrcmd.h>
+
+extern int mrbc_main(int argc, char **argv);
+extern int mrdb_main(int argc, char **argv);
+extern int mruby_main(int argc, char **argv);
+extern int mirb_main(int argc, char **argv);
+extern int curl_main(int argc, char **argv);
+extern int tcc_main(int argc, char **argv);
+extern int vi_main(int argc, char **argv);
+extern int openssl_main(int argc, char *argv[]);
+extern int onitest_main(int argc, char **argv);
+extern int tcp_echo_main(int argc, char **argv);
+
+static const cmd_table_t cmdlist[] = {
+	{"mrbc", "mruby compiler executable", mrbc_main},
+	{"mrdb","mruby debugger command", mrdb_main},
+	{"mruby","mruby command", mruby_main},
+	{"mirb", "Embeddable Interactive Ruby Shell", mirb_main},
+	{"curl", "Command lines or scripts to transfer data", curl_main},
+	{"tcc", "Tiny C compiler", tcc_main},
+	{"vi", "Text editor", vi_main},
+	{"openssl", "Cryptography and SSL/TLS Toolkit", openssl_main},
+	{"onitest", "Onigumo Test", onitest_main},
+	{"tcp_echo", "TCP echo server/client", tcp_echo_main},
+};
+const cmd_table_info_t cmd_table_info = { &cmdlist, sizeof(cmdlist) / sizeof(cmdlist[0]) };
 
 #define FVECT_SECT          __attribute__ ((section (".proginf")))
@@ -50,7 +76,7 @@
 	Elf32_Ehdr ehdr;
 	Elf32_Phdr phdr[3];
-	Elf32_Shdr shdr[4];
+	Elf32_Shdr shdr[5];
 	Elf32_Shdr str_shdr;
-	char shstrtab[sizeof("\0.text\0.rodata\0.data\0.bss\0.shstrtab")];
+	char shstrtab[sizeof("\0.text\0.rodata\0.data\0.bss\0.cmdlist\0.shstrtab")];
 } TProgInf;
 
@@ -152,8 +178,20 @@
 			.sh_addralign = (Elf32_Word)8,
 			.sh_entsize = (Elf32_Word)0,
+		},
+		{
+			.sh_name = (Elf32_Word)26,
+			.sh_type = (Elf32_Word)SHT_PROGBITS,
+			.sh_flags = (Elf32_Word)(SHF_ALLOC),
+			.sh_addr = (Elf32_Addr)&cmdlist,
+			.sh_offset = (Elf32_Off)&cmdlist/* - (Elf32_Off)&ProgInf*/,
+			.sh_size = (Elf32_Word)&cmdlist[sizeof(cmdlist) / sizeof(cmdlist[0])]/* - (Elf32_Off)&cmdlist*/,
+			.sh_link = (Elf32_Word)0,
+			.sh_info = (Elf32_Word)0,
+			.sh_addralign = (Elf32_Word)8,
+			.sh_entsize = (Elf32_Word)0,
 		}
 	},
 	{
-		.sh_name = (Elf32_Word)26,
+		.sh_name = (Elf32_Word)35,
 		.sh_type = (Elf32_Word)SHT_STRTAB,
 		.sh_flags = (Elf32_Word)0,
@@ -166,4 +204,4 @@
 		.sh_entsize = (Elf32_Word)0,
 	},
-	"\0.text\0.rodata\0.data\0.bss\0.shstrtab"
+	"\0.text\0.rodata\0.data\0.bss\0.cmdlist\0.shstrtab"
 };
Index: EcnlProtoTool/trunk/prototool/src/main.c
===================================================================
--- EcnlProtoTool/trunk/prototool/src/main.c	(revision 443)
+++ EcnlProtoTool/trunk/prototool/src/main.c	(revision 446)
@@ -78,37 +78,5 @@
 };
 
-typedef struct
-{
-	cmd_table_t *table;
-	cmd_table_t *count;
-} cmd_table_info_t;
-
-extern int mrbc_main(int argc, char **argv);
-extern int mrdb_main(int argc, char **argv);
-extern int mruby_main(int argc, char **argv);
-extern int mirb_main(int argc, char **argv);
-extern int curl_main(int argc, char **argv);
-extern int tcc_main(int argc, char **argv);
-extern int vi_main(int argc, char **argv);
-extern int openssl_main(int argc, char *argv[]);
-extern int onitest_main(int argc, char **argv);
-extern int tcp_echo_main(int argc, char **argv);
-extern int echo_client_main(int argc, char **argv);
-extern int mrdb_break(void);
-
-static const cmd_table_t cmdlist[] = {
-	{"mrbc", "mruby compiler executable", mrbc_main},
-	{"mrdb","mruby debugger command", mrdb_main},
-	{"mruby","mruby command", mruby_main},
-	{"mirb", "Embeddable Interactive Ruby Shell", mirb_main},
-	{"curl", "Command lines or scripts to transfer data", curl_main},
-	{"tcc", "Tiny C compiler", tcc_main},
-	{"vi", "Text editor", vi_main},
-	{"openssl", "Cryptography and SSL/TLS Toolkit", openssl_main},
-	{"onitest", "Onigumo Test", onitest_main},
-	{"tcp_echo", "TCP echo server/client", tcp_echo_main},
-	{"help", "This is a description text string for help command.", usrcmd_help},
-};
-cmd_table_info_t cmd_table_info = { &cmdlist, sizeof(cmdlist) / sizeof(cmdlist[0]) };
+extern const cmd_table_info_t cmd_table_info;
 
 int echonet = 1;
@@ -199,17 +167,4 @@
 	printf("tcp_echo -c ipaddr port\n");
 
-	return 0;
-}
-
-int usrcmd_help(int argc, char **argv)
-{
-	const cmd_table_t *p = cmd_table_info.table;
-	for (int i = 0; i < cmd_table_info.count; i++) {
-		printf(p->cmd);
-		printf("\t:");
-		printf(p->desc);
-		printf("\n");
-		p++;
-	}
 	return 0;
 }
