From cc0d4af20ae021090cfa95306a3fe1d05e34d96e Mon Sep 17 00:00:00 2001 From: TAiGA <> Date: Thu, 5 Sep 2024 11:24:44 +0800 Subject: [PATCH] tools/mksymtab: support for structure --- tools/mksymtab.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) 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) {