diff --git a/tools/mksymtab.c b/tools/mksymtab.c index 0c54f4b275..2c2c9404a0 100644 --- a/tools/mksymtab.c +++ b/tools/mksymtab.c @@ -130,6 +130,7 @@ int main(int argc, char **argv, char **envp) char *finalterm; char *ptr; bool cond; + bool parm1; FILE *instream; FILE *outstream; int ch; @@ -268,6 +269,12 @@ int main(int argc, char **argv, char **envp) { /* Parse the line from the CVS file */ + g_parm[NAME_INDEX][0] = 0; + g_parm[HEADER_INDEX][0] = 0; + g_parm[COND_INDEX][0] = 0; + g_parm[RETTYPE_INDEX][0] = 0; + g_parm[PARM1_INDEX][0] = 0; + int nargs = parse_csvline(ptr); if (nargs < PARM1_INDEX) { @@ -286,8 +293,17 @@ int main(int argc, char **argv, char **envp) /* Output the symbol table entry */ - fprintf(outstream, "%s { \"%s\", (FAR const void *)%s }", - nextterm, g_parm[NAME_INDEX], g_parm[NAME_INDEX]); + parm1 = strlen(g_parm[PARM1_INDEX]) > 0; + if (parm1) + { + fprintf(outstream, "%s { \"%s\", (FAR const void *)%s }", + nextterm, g_parm[NAME_INDEX], g_parm[NAME_INDEX]); + } + else + { + fprintf(outstream, "%s { \"%s\", (FAR const void *)&%s }", + nextterm, g_parm[NAME_INDEX], g_parm[NAME_INDEX]); + } if (cond) {