X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tools%2Fcvt_data.c;h=432e4c57275fa617766023d1cddc43a5e78fa0a9;hb=9bbecbfbce7530f47af567605611f091f2bd84ad;hp=692fa1076ac351b0af52e5816009a4d31d8538f4;hpb=7a7487bee79c16312270eb30275b095c92324348;p=ia32rtools.git diff --git a/tools/cvt_data.c b/tools/cvt_data.c index 692fa10..432e4c5 100644 --- a/tools/cvt_data.c +++ b/tools/cvt_data.c @@ -1,6 +1,6 @@ /* * ia32rtools - * (C) notaz, 2013,2014 + * (C) notaz, 2013-2015 * * This work is licensed under the terms of 3-clause BSD license. * See COPYING file in the top-level directory. @@ -239,7 +239,7 @@ static void sprint_pp_short(const struct parsed_proto *pp, char *buf, } static const struct parsed_proto *check_var(FILE *fhdr, - const char *sym, const char *varname) + const char *sym, const char *varname, int is_export) { const struct parsed_proto *pp, *pp_sym; char fp_sym[256], fp_var[256], *p; @@ -252,6 +252,8 @@ static const struct parsed_proto *check_var(FILE *fhdr, return NULL; } + if (is_export) + return NULL; if (!pp->is_func && !pp->is_fptr) return NULL; @@ -386,6 +388,7 @@ int main(int argc, char *argv[]) FILE *fout, *fasm, *fhdr = NULL, *frlist; const struct parsed_proto *pp; int no_decorations = 0; + int in_export_table = 0; char comment_char = '#'; char words[20][256]; char word[256]; @@ -467,7 +470,7 @@ int main(int argc, char *argv[]) while (my_fgets(line, sizeof(line), frlist)) { p = sskip(line); - if (*p == 0 || *p == ';') + if (*p == 0 || *p == ';' || *p == '#') continue; p = next_word(words[0], sizeof(words[0]), p); @@ -533,6 +536,10 @@ int main(int argc, char *argv[]) if (i != 0 && !header_mode) fprintf(fout, "\t\t .skip 0x%x\n", i); } + else if (IS_START(p, "; Export Address")) + in_export_table = 1; + else if (IS_START(p, "; Export")) + in_export_table = 0; continue; } @@ -797,7 +804,7 @@ int main(int argc, char *argv[]) snprintf(g_comment, sizeof(g_comment), "%s", p); } else { - pp = check_var(fhdr, sym, p); + pp = check_var(fhdr, sym, p, in_export_table); if (pp == NULL) { fprintf(fout, "%s%s", (no_decorations || p[0] == '_') ? "" : "_", p);