X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=tools%2Fcvt_data.c;h=6aaf52cc750a69e433e341903dcdad83f1055b15;hb=fe18709a017c7142452df242f060eea4d1b4ed34;hp=044857bdbef22d761ee8247291915dbbb2ae4417;hpb=f0be238a6a7a2801edfb842a637b19bf91b245bd;p=ia32rtools.git diff --git a/tools/cvt_data.c b/tools/cvt_data.c index 044857b..6aaf52c 100644 --- a/tools/cvt_data.c +++ b/tools/cvt_data.c @@ -138,7 +138,7 @@ static const char *type_name(enum dx_type type) case DXT_BYTE: return ".byte"; case DXT_WORD: - return ".word"; + return ".hword"; case DXT_DWORD: return ".long"; case DXT_QUAD: @@ -240,7 +240,6 @@ static const struct parsed_proto *check_var(FILE *fhdr, { const struct parsed_proto *pp, *pp_sym; char fp_sym[256], fp_var[256]; - int i, bad = 0; pp = proto_parse(fhdr, varname, 1); if (pp == NULL) { @@ -287,24 +286,7 @@ check_sym: return pp; } - if (pp->argc != pp_sym->argc || pp->argc_reg != pp_sym->argc_reg) - bad = 1; - else { - for (i = 0; i < pp->argc; i++) { - if ((pp->arg[i].reg != NULL) != (pp_sym->arg[i].reg != NULL)) { - bad = 1; - break; - } - if ((pp->arg[i].reg != NULL) - && !IS(pp->arg[i].reg, pp_sym->arg[i].reg)) - { - bad = 1; - break; - } - } - } - - if (bad) { + if (pp_cmp_func(pp, pp_sym)) { pp_print(fp_sym, sizeof(fp_sym), pp_sym); anote("var: %s\n", fp_var); anote("sym: %s\n", fp_sym); @@ -501,9 +483,19 @@ int main(int argc, char *argv[]) asmln++; p = sskip(line); - if (*p == 0 || *p == ';') + if (*p == 0) continue; + if (*p == ';') { + if (IS_START(p, ";org") && sscanf(p + 5, "%Xh", &i) == 1) { + // ;org is only seen at section start, so assume . addr 0 + i &= 0xfff; + if (i != 0) + fprintf(fout, "\t\t .skip 0x%x\n", i); + } + continue; + } + for (wordc = 0; wordc < ARRAY_SIZE(words); wordc++) { p = sskip(next_word_s(words[wordc], sizeof(words[0]), p)); if (*p == 0 || *p == ';') {