Changeset 446 for EcnlProtoTool/trunk/prototool/src
- Timestamp:
- Jul 21, 2020, 8:38:44 AM (4 years ago)
- Location:
- EcnlProtoTool/trunk/prototool/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/prototool/src/elf.c
r443 r446 38 38 #include <string.h> 39 39 #include <elf.h> 40 #include <ntshell/usrcmd.h> 41 42 extern int mrbc_main(int argc, char **argv); 43 extern int mrdb_main(int argc, char **argv); 44 extern int mruby_main(int argc, char **argv); 45 extern int mirb_main(int argc, char **argv); 46 extern int curl_main(int argc, char **argv); 47 extern int tcc_main(int argc, char **argv); 48 extern int vi_main(int argc, char **argv); 49 extern int openssl_main(int argc, char *argv[]); 50 extern int onitest_main(int argc, char **argv); 51 extern int tcp_echo_main(int argc, char **argv); 52 53 static const cmd_table_t cmdlist[] = { 54 {"mrbc", "mruby compiler executable", mrbc_main}, 55 {"mrdb","mruby debugger command", mrdb_main}, 56 {"mruby","mruby command", mruby_main}, 57 {"mirb", "Embeddable Interactive Ruby Shell", mirb_main}, 58 {"curl", "Command lines or scripts to transfer data", curl_main}, 59 {"tcc", "Tiny C compiler", tcc_main}, 60 {"vi", "Text editor", vi_main}, 61 {"openssl", "Cryptography and SSL/TLS Toolkit", openssl_main}, 62 {"onitest", "Onigumo Test", onitest_main}, 63 {"tcp_echo", "TCP echo server/client", tcp_echo_main}, 64 }; 65 const cmd_table_info_t cmd_table_info = { &cmdlist, sizeof(cmdlist) / sizeof(cmdlist[0]) }; 40 66 41 67 #define FVECT_SECT __attribute__ ((section (".proginf"))) … … 50 76 Elf32_Ehdr ehdr; 51 77 Elf32_Phdr phdr[3]; 52 Elf32_Shdr shdr[ 4];78 Elf32_Shdr shdr[5]; 53 79 Elf32_Shdr str_shdr; 54 char shstrtab[sizeof("\0.text\0.rodata\0.data\0.bss\0. shstrtab")];80 char shstrtab[sizeof("\0.text\0.rodata\0.data\0.bss\0.cmdlist\0.shstrtab")]; 55 81 } TProgInf; 56 82 … … 152 178 .sh_addralign = (Elf32_Word)8, 153 179 .sh_entsize = (Elf32_Word)0, 180 }, 181 { 182 .sh_name = (Elf32_Word)26, 183 .sh_type = (Elf32_Word)SHT_PROGBITS, 184 .sh_flags = (Elf32_Word)(SHF_ALLOC), 185 .sh_addr = (Elf32_Addr)&cmdlist, 186 .sh_offset = (Elf32_Off)&cmdlist/* - (Elf32_Off)&ProgInf*/, 187 .sh_size = (Elf32_Word)&cmdlist[sizeof(cmdlist) / sizeof(cmdlist[0])]/* - (Elf32_Off)&cmdlist*/, 188 .sh_link = (Elf32_Word)0, 189 .sh_info = (Elf32_Word)0, 190 .sh_addralign = (Elf32_Word)8, 191 .sh_entsize = (Elf32_Word)0, 154 192 } 155 193 }, 156 194 { 157 .sh_name = (Elf32_Word) 26,195 .sh_name = (Elf32_Word)35, 158 196 .sh_type = (Elf32_Word)SHT_STRTAB, 159 197 .sh_flags = (Elf32_Word)0, … … 166 204 .sh_entsize = (Elf32_Word)0, 167 205 }, 168 "\0.text\0.rodata\0.data\0.bss\0. shstrtab"206 "\0.text\0.rodata\0.data\0.bss\0.cmdlist\0.shstrtab" 169 207 }; -
EcnlProtoTool/trunk/prototool/src/main.c
r443 r446 78 78 }; 79 79 80 typedef struct 81 { 82 cmd_table_t *table; 83 cmd_table_t *count; 84 } cmd_table_info_t; 85 86 extern int mrbc_main(int argc, char **argv); 87 extern int mrdb_main(int argc, char **argv); 88 extern int mruby_main(int argc, char **argv); 89 extern int mirb_main(int argc, char **argv); 90 extern int curl_main(int argc, char **argv); 91 extern int tcc_main(int argc, char **argv); 92 extern int vi_main(int argc, char **argv); 93 extern int openssl_main(int argc, char *argv[]); 94 extern int onitest_main(int argc, char **argv); 95 extern int tcp_echo_main(int argc, char **argv); 96 extern int echo_client_main(int argc, char **argv); 97 extern int mrdb_break(void); 98 99 static const cmd_table_t cmdlist[] = { 100 {"mrbc", "mruby compiler executable", mrbc_main}, 101 {"mrdb","mruby debugger command", mrdb_main}, 102 {"mruby","mruby command", mruby_main}, 103 {"mirb", "Embeddable Interactive Ruby Shell", mirb_main}, 104 {"curl", "Command lines or scripts to transfer data", curl_main}, 105 {"tcc", "Tiny C compiler", tcc_main}, 106 {"vi", "Text editor", vi_main}, 107 {"openssl", "Cryptography and SSL/TLS Toolkit", openssl_main}, 108 {"onitest", "Onigumo Test", onitest_main}, 109 {"tcp_echo", "TCP echo server/client", tcp_echo_main}, 110 {"help", "This is a description text string for help command.", usrcmd_help}, 111 }; 112 cmd_table_info_t cmd_table_info = { &cmdlist, sizeof(cmdlist) / sizeof(cmdlist[0]) }; 80 extern const cmd_table_info_t cmd_table_info; 113 81 114 82 int echonet = 1; … … 199 167 printf("tcp_echo -c ipaddr port\n"); 200 168 201 return 0;202 }203 204 int usrcmd_help(int argc, char **argv)205 {206 const cmd_table_t *p = cmd_table_info.table;207 for (int i = 0; i < cmd_table_info.count; i++) {208 printf(p->cmd);209 printf("\t:");210 printf(p->desc);211 printf("\n");212 p++;213 }214 169 return 0; 215 170 }
Note:
See TracChangeset
for help on using the changeset viewer.