X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tools%2Fcvt_data.c;h=abcdd41591cb4bb63f551e2359a07ff394079619;hb=f124ee13ba892739bb8164e6be9c8d3942a28744;hp=432e4c57275fa617766023d1cddc43a5e78fa0a9;hpb=9bbecbfbce7530f47af567605611f091f2bd84ad;p=ia32rtools.git diff --git a/tools/cvt_data.c b/tools/cvt_data.c index 432e4c5..abcdd41 100644 --- a/tools/cvt_data.c +++ b/tools/cvt_data.c @@ -306,18 +306,11 @@ check_sym: return pp; } - if (pp_cmp_func(pp, pp_sym)) { - if (pp_sym->argc_stack == 0 && pp_sym->is_fastcall - && pp->argc_stack == 0 - && (pp->is_fastcall || pp->argc_reg == 0) - && pp_sym->argc_reg > pp->argc_reg) - ; /* fascall compatible func doesn't use all args -> ok */ - else { - pp_print(fp_sym, sizeof(fp_sym), pp_sym); - anote("var: %s\n", fp_var); - anote("sym: %s\n", fp_sym); - awarn("^ mismatch\n"); - } + if (!pp_compatible_func(pp_sym, pp)) { + pp_print(fp_sym, sizeof(fp_sym), pp_sym); + anote("entry: %s\n", fp_var); + anote("label: %s\n", fp_sym); + awarn("^ mismatch\n"); } return pp; @@ -389,6 +382,7 @@ int main(int argc, char *argv[]) const struct parsed_proto *pp; int no_decorations = 0; int in_export_table = 0; + int rm_labels_lines = 0; char comment_char = '#'; char words[20][256]; char word[256]; @@ -632,6 +626,8 @@ int main(int argc, char *argv[]) } snprintf(last_sym, sizeof(last_sym), "%s", sym); + if (IS_START(sym, "__IMPORT_DESCRIPTOR_")) + rm_labels_lines = 5; pp = proto_parse(fhdr, sym, 1); if (pp != NULL) { @@ -797,6 +793,7 @@ int main(int argc, char *argv[]) p = words[w]; if (IS_START(p, "loc_") || IS_START(p, "__imp") || strchr(p, '?') || strchr(p, '@') + || rm_labels_lines > 0 || bsearch(&p, rlist, rlist_cnt, sizeof(rlist[0]), cmpstringp)) { @@ -829,6 +826,9 @@ int main(int argc, char *argv[]) } fin: + if (rm_labels_lines > 0) + rm_labels_lines--; + if (g_comment[0] != 0) { fprintf(fout, "\t\t%c %s", comment_char, g_comment); g_comment[0] = 0;