Ignore:
Timestamp:
Jul 21, 2020, 8:38:44 AM (4 years ago)
Author:
coas-nagasima
Message:

プログラムテーブルのセクションを追加しntshellで読みだしてHELPを表示するよう変更

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/prototool/src/elf.c

    r443 r446  
    3838#include <string.h>
    3939#include <elf.h>
     40#include <ntshell/usrcmd.h>
     41
     42extern int mrbc_main(int argc, char **argv);
     43extern int mrdb_main(int argc, char **argv);
     44extern int mruby_main(int argc, char **argv);
     45extern int mirb_main(int argc, char **argv);
     46extern int curl_main(int argc, char **argv);
     47extern int tcc_main(int argc, char **argv);
     48extern int vi_main(int argc, char **argv);
     49extern int openssl_main(int argc, char *argv[]);
     50extern int onitest_main(int argc, char **argv);
     51extern int tcp_echo_main(int argc, char **argv);
     52
     53static 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};
     65const cmd_table_info_t cmd_table_info = { &cmdlist, sizeof(cmdlist) / sizeof(cmdlist[0]) };
    4066
    4167#define FVECT_SECT          __attribute__ ((section (".proginf")))
     
    5076        Elf32_Ehdr ehdr;
    5177        Elf32_Phdr phdr[3];
    52         Elf32_Shdr shdr[4];
     78        Elf32_Shdr shdr[5];
    5379        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")];
    5581} TProgInf;
    5682
     
    152178                        .sh_addralign = (Elf32_Word)8,
    153179                        .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,
    154192                }
    155193        },
    156194        {
    157                 .sh_name = (Elf32_Word)26,
     195                .sh_name = (Elf32_Word)35,
    158196                .sh_type = (Elf32_Word)SHT_STRTAB,
    159197                .sh_flags = (Elf32_Word)0,
     
    166204                .sh_entsize = (Elf32_Word)0,
    167205        },
    168         "\0.text\0.rodata\0.data\0.bss\0.shstrtab"
     206        "\0.text\0.rodata\0.data\0.bss\0.cmdlist\0.shstrtab"
    169207};
Note: See TracChangeset for help on using the changeset viewer.