X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Recipient: djgpp AT delorie DOT com X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=pklKglPNk3TzvSQaN3vremLJ8d4nIiLvErv7JbQIK5o=; b=ojTb6KpRbFmUjUMmCSYSsB8tJOCDyrEc/bm5JoOFVXWgEavnE37Jt0cdiN7rRDhtDl geIkZ1Ah2th92PkSkimrzzrrEr+J9fTq1auzWIhXuypuxOcgp9vm2YAvNc1ZxW4RYb3J /e/lw6YpnT3lgqu/EsXQsuhMrBjlEklnomLo3APo9j2XkUFojQLVu+IbFKiDLtLrhGXj RAqUu9M3//gxXmeuY1T3NcltjSYtJjoXzxdTpokWvfjT4P0R4CbeHRCKb8brS2/4Ir7F p9OZdPOPGXdZ6/YrNc5PM7aBubPVbCgP/CEOHl0hfAox+bcNegoCqWY3CqPJa0xKCq73 TN3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:references:in-reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pklKglPNk3TzvSQaN3vremLJ8d4nIiLvErv7JbQIK5o=; b=o/V4JikqY2j6Q+LWXvrM9+AwbBYus1I1xlpNFtLg0ysSJ3HSNaspl5s0l5AK6l3P8M lstvedQmmb6poO+vqvHGOlniRlyA94iCadcfuwdjlTs4g00vdUMclHVHmrONcGjnqqFq j67c8hHOq+iGFSnSWc659+D+GhKmcQZM83CKM98UeBEyxl338I6MXprtm8akbi6ulB7m na7iyfrW4a+ebHk113EF7cqXRWgn4vnJxrFv5lQKIryi8aM4CDGI13UICC9fRI5aJgH6 vF74WTT5mWT/nXcwe6Jq3WiL8aAslz01PHQ9wBSIkRBrKZwScnCvTb3SlKGkgjtguabK 4y6w== X-Gm-Message-State: AFqh2kraHgOvtn2J7AoLx0lUAlqLer1ifl8LcVAmi0F65E7Oe89FpZgG WQGRlClHVTetzu84o98MccZ2KoTMT3bOt/K5qw63Dfsq X-Google-Smtp-Source: AMrXdXun93EIQn1OLuyMYMkYVCAoefe6zy3QWrGra88YtfvXN6gZDe3PC2uH/EpVshrvAioTVinEWd2bqnB62fcITXA= X-Received: by 2002:a05:600c:1d25:b0:3da:fa8a:8511 with SMTP id l37-20020a05600c1d2500b003dafa8a8511mr3069271wms.185.1675146358003; Mon, 30 Jan 2023 22:25:58 -0800 (PST) MIME-Version: 1.0 In-Reply-To: References: <835ycn529o DOT fsf AT gnu DOT org> From: "Ozkan Sezer (sezeroz AT gmail DOT com) [via djgpp AT delorie DOT com]" Date: Tue, 31 Jan 2023 09:25:56 +0300 Message-ID: Subject: Re: [PATCH] dxe3gen: add support for using an exports file. To: djgpp AT delorie DOT com Content-Type: multipart/mixed; boundary="0000000000009dc48605f38967c3" Reply-To: djgpp AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --0000000000009dc48605f38967c3 Content-Type: text/plain; charset="UTF-8" On 1/30/23, Ozkan Sezer wrote: >> LGTM, > > OK, can apply tomorrow unless I get further reviews/objections. > >> but why did you use binary mode for reading the exports file? > > Easier forme that way -- uniform parsing across platforms. Version 2 of patch attached. Changes: - Fixes segfault if the exports file has no newline at end - Reports missing exports in verbose mode. For convenience, an interdiff to first version is inlined below (cosmetic changes excluded.) --- dxe3gen.c~ +++ dxe3gen.c @@ -519,7 +520,7 @@ opt.export_names[opt.num_names++] = ptr++; loc1: - while (*ptr != '\r' && *ptr != '\n') + while (*ptr && *ptr != '\r' && *ptr != '\n') ++ptr; } } @@ -1277,9 +1278,12 @@ BOOL ok = FALSE; for (j = 0; j < opt.num_names; j++) { + if (!opt.export_names[j]) + continue; if (strcmp(opt.export_names[j], name) == 0) { ok = TRUE; + opt.export_names[j] = NULL; break; } } @@ -1310,6 +1314,15 @@ } DEBUG_PRINT_SYMBOL_TABLE_EPILOG(); + if (opt.verbose && opt.num_names && opt.num_names != dh.n_exp_syms) + { + for (j = 0; j < opt.num_names; j++) + { + if (opt.export_names[j]) + printf("missing export: `%s'\n", opt.export_names[j]); + } + } + if (errcount) { fclose(outf); --0000000000009dc48605f38967c3 Content-Type: text/x-patch; charset="US-ASCII"; name="exports2.patch" Content-Disposition: attachment; filename="exports2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: file0 SW5kZXg6IGR4ZTNnZW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL2RqZ3BwL2RqZ3BwL3Ny Yy9keGUvZHhlM2dlbi5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI3CmRpZmYgLXUgLXAgLXIx LjI3IGR4ZTNnZW4uYwotLS0gZGpncHAvc3JjL2R4ZS9keGUzZ2VuLmMJMjggSmFuIDIwMjMgMTQ6 MTA6MDMgLTAwMDAJMS4yNworKysgZGpncHAvc3JjL2R4ZS9keGUzZ2VuLmMJMzEgSmFuIDIwMjMg MDU6NTU6MzIgLTAwMDAKQEAgLTI3Nyw2ICsyNzcsOSBAQCBzdGF0aWMgc3RydWN0CiAgIGNoYXIg KmltcGxpYjsgICAgICAgICAgICAgICAgIC8qIG5hbWUgb2YgaW1wb3J0IGxpYnJhcnkgKi8KICAg Y2hhciAqZHhlZmlsZTsgICAgICAgICAgICAgICAgLyogdGhlIG5hbWUgb2YgZHhlIGZpbGUgb24g Y29tbWFuZCBsaW5lICovCiAgIGNoYXIgKmRlc2NyaXB0aW9uOyAgICAgICAgICAgIC8qIGEgZGVz Y3JpcHRpb24gb2YgdGhlIG1vZHVsZSAqLworICB1bnNpZ25lZCBpbnQgbnVtX25hbWVzOyAgICAg ICAvKiBudW1iZXIgb2YgZXhwb3J0ZWQgc3ltYm9sIG5hbWVzICovCisgIHVuc2lnbmVkIGludCBt YXhfbmFtZXM7ICAgICAgIC8qIG1heGltYWwgbnVtYmVyIG9mIGV4cG9ydGVkIHN5bWJvbCBuYW1l cyAqLworICBjaGFyICoqZXhwb3J0X25hbWVzOyAgICAgICAgICAvKiBleHBvcnRlZCBzeW1ib2wg bmFtZXMgKi8KICAgdW5zaWduZWQgaW50IG51bV9wcmVmaXg7ICAgICAgLyogbnVtYmVyIG9mIGV4 cG9ydGVkIHByZWZpeGVzICovCiAgIHVuc2lnbmVkIGludCBtYXhfcHJlZml4OyAgICAgIC8qIG1h eGltYWwgbnVtYmVyIG9mIGV4cG9ydGVkIHByZWZpeGVzICovCiAgIGNoYXIgKipleHBvcnRfcHJl Zml4OyAgICAgICAgIC8qIGV4cG9ydGVkIHN5bWJvbCBwcmVmaXhlcyAqLwpAQCAtMzA3LDYgKzMx MCw5IEBAIHN0YXRpYyBzdHJ1Y3QKICAgTlVMTCwKICAgMCwKICAgMCwKKyAgTlVMTCwKKyAgMCwK KyAgMCwKICAgTlVMTAogfTsKIApAQCAtMzE5LDYgKzMyNSw4IEBAIHN0YXRpYyBjaGFyICpkeGVf YXI7IC8qIGRlZmF1bHQ6ICJhciIgKi8KIHN0YXRpYyBjaGFyICpkeGVfbGQ7IC8qIGRlZmF1bHQ6 ICJsZCIgKi8KIC8qIGxpbmtlciBzY3JpcHQgKi8KIHN0YXRpYyBjaGFyICpkeGVfc2M7IC8qIGRl ZmF1bHQ6ICJkeGUubGQiICovCisvKiBleHBvcnRzIGZpbGUgKi8KK3N0YXRpYyBjaGFyICpleHBm aWxlOwogCiAKIC8qIERlc2M6IHJlcGxhY2VzIGJhY2tzbGFzaCB3aXRoIHNsYXNoIGluIGEgcGF0 aApAQCAtNDIyLDYgKzQzMCw3IEBAIHN0YXRpYyB2b2lkIGRpc3BsYXlfaGVscCh2b2lkKQogICBw cmludGYoIi1YIHByZWZpeFx0RXhjbHVkZSBzeW1ib2xzIHRoYXQgc3RhcnQgd2l0aCA8cHJlZml4 PiAoY3VtdWxhdGl2ZSlcbiIpOwogICBwcmludGYoIi1VXHRcdEFsbG93IHVucmVzb2x2ZWQgc3lt Ym9scyBpbiBEWEUgZmlsZVxuIik7CiAgIHByaW50ZigiLVZcdFx0VmVyYm9zZSBvdXRwdXQgKG1p bmltYWwgb3V0cHV0IGJ5IGRlZmF1bHQpXG4iKTsKKyAgcHJpbnRmKCItLWV4cG9ydHMgZmlsZVx0 RXhwb3J0IHN5bWJvbHMgZnJvbSB0aGlzIGZpbGUgKG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIC1F Ly1YKVxuIik7CiAgIHByaW50ZigiLS1zaG93LWRlcFx0U2hvdyBkZXBlbmRlbmNpZXMgZm9yIHNw ZWNpZmllZCBtb2R1bGVcbiIpOwogICBwcmludGYoIi0tc2hvdy1leHBcdFNob3cgc3ltYm9scyBl eHBvcnRlZCBieSB0aGUgRFhFIG1vZHVsZVxuIik7CiAgIHByaW50ZigiLS1zaG93LXVucmVzXHRT aG93IHVucmVzb2x2ZWQgc3ltYm9scyBpbiB0aGUgRFhFIG1vZHVsZVxuIik7CkBAIC00NjUsNiAr NDc0LDU4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZW52KHZvaWQpCiB9CiAKIAorLyogRGVzYzog cHJvY2VzcyB0aGUgZXhwb3J0cyBmaWxlIHBvaW50ZWQgdG8gYnkgLS1leHBvcnRzIG9wdGlvbi4K KyAqCisgKiBJbiAgOiAtCisgKiBPdXQgOiAtCisgKgorICogTm90ZTogLQorICovCitzdGF0aWMg dm9pZCBwcm9jZXNzX2V4cF9maWxlKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgIEZJTEUgKmYgPSBm b3BlbihuYW1lLCAicmIiKTsKKyAgY2hhciAqcHRyOworICBsb25nIGxlbjsKKworICBpZiAoIWYp CisgIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yOiBDb3VsZG4ndCBvcGVuIGV4cG9ydHMg ZmlsZSAlcy5cbiIsIG5hbWUpOworICAgIGV4aXQoMSk7CisgIH0KKworICBmc2VlayhmLCAwLCBT RUVLX0VORCk7CisgIGxlbiA9IGZ0ZWxsKGYpOworICBmc2VlayhmLCAwLCBTRUVLX1NFVCk7Cisg IGV4cGZpbGUgPSBtYWxsb2MobGVuICsgMSk7CisgIGZyZWFkKGV4cGZpbGUsIDEsIGxlbiwgZik7 CisgIGZjbG9zZShmKTsKKyAgZXhwZmlsZVtsZW5dID0gJ1wwJzsKKworICBwdHIgPSBleHBmaWxl OworICBmb3IgKDs7KQorICB7CisgICAgd2hpbGUgKCpwdHIgPT0gJ1xyJyB8fCAqcHRyID09ICdc bicpCisgICAgICAqcHRyKysgPSAnXDAnOworCisgICAgaWYgKCEqcHRyKSBicmVhazsKKworICAg IGlmICgqcHRyID09ICcjJykgLyogY29tbWVudCAqLworICAgICAgZ290byBsb2MxOworCisgICAg aWYgKG9wdC5udW1fbmFtZXMgPj0gb3B0Lm1heF9uYW1lcykKKyAgICB7CisgICAgICBvcHQubWF4 X25hbWVzICs9IDE2OworICAgICAgb3B0LmV4cG9ydF9uYW1lcyA9IChjaGFyICoqKXJlYWxsb2Mo b3B0LmV4cG9ydF9uYW1lcywgb3B0Lm1heF9uYW1lcyAqIHNpemVvZihjaGFyICopKTsKKyAgICB9 CisgICAgb3B0LmV4cG9ydF9uYW1lc1tvcHQubnVtX25hbWVzKytdID0gcHRyKys7CisKKyAgICBs b2MxOgorICAgIHdoaWxlICgqcHRyICYmICpwdHIgIT0gJ1xyJyAmJiAqcHRyICE9ICdcbicpCisg ICAgICArK3B0cjsKKyAgfQorfQorCisKIC8qIERlc2M6IHByb2Nlc3MgY29tbWFuZCBsaW5lIGFy Z3MKICAqCiAgKiBJbiAgOiBubyBvZiBhcmd1bWVudHMsIGFyZ3VtZW50IGxpc3QsIHB0ciB0byBz dG9yZSBsaW5rZXIgYXJncwpAQCAtNDc1LDYgKzUzNiw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3Nf ZW52KHZvaWQpCiBzdGF0aWMgdm9pZCBwcm9jZXNzX2FyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSwgY29uc3QgY2hhciAqbmV3X2FyZ3ZbXSkKIHsKICAgaW50IGksIG5ld19hcmdjID0gTlVNQkVS X09GX0xJTktFUl9BUkdTOworICBpbnQgdXNlX2V4cG9ydHMgPSAwOwogCiAgIGlmICghbGliZGly KQogICB7CkBAIC00ODIsNiArNTQ0LDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfYXJncyhpbnQg YXJnYywgY2hhciAKICAgICBleGl0KDEpOwogICB9CiAKKyAgZm9yIChpID0gMTsgaSA8IGFyZ2M7 ICsraSkKKyAgeworICAgICBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLS1leHBvcnRzIikpCisgICAg ICAgKyt1c2VfZXhwb3J0czsKKyAgfQorICBpZiAodXNlX2V4cG9ydHMgPiAxKQorICB7CisgICAg ZnByaW50ZihzdGRlcnIsICJFcnJvcjogbXVsdGlwbGUgLS1leHBvcnRzIGFyZ3VtZW50cyBub3Qg YWxsb3dlZC5cbiIpOworICAgIGV4aXQoMSk7CisgIH0KKwogICBuZXdfYXJndlswXSA9IGR4ZV9s ZDsKICAgbmV3X2FyZ3ZbMV0gPSAiLVgiOwogICBuZXdfYXJndlsyXSA9ICItUyI7CkBAIC01MTMs NiArNTg2LDExIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfYXJncyhpbnQgYXJnYywgY2hhciAKICAg ICAgIHByaW50ZigiVXNhZ2U6ICVzIG91dHB1dC5keGUgc3ltYm9sIGlucHV0Lm8gW2lucHV0Mi5v IC4uLiAtbGdjYyAtbGNdXG4iLCBwcm9nbmFtZSk7CiAgICAgICBleGl0KC0xKTsKICAgICB9Cisg ICAgaWYgKHVzZV9leHBvcnRzKQorICAgIHsKKyAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6 IC0tZXhwb3J0cyBub3QgYWxsb3dlZCBpbiBsZWdhY3kgbW9kZS5cbiIpOworICAgICAgZXhpdCgx KTsKKyAgICB9CiAKICAgICBvcHQubWF4X3ByZWZpeCA9IDE2OwogICAgIG9wdC5leHBvcnRfcHJl Zml4ID0gKGNoYXIgKiopbWFsbG9jKG9wdC5tYXhfcHJlZml4ICogc2l6ZW9mKGNoYXIgKikpOwpA QCAtNTUyLDggKzYzMCwxMyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2FyZ3MoaW50IGFyZ2MsIGNo YXIgCiAgICAgICAgIG9wdC5pbXBsaWIgPSBhcmd2WysraV07CiAgICAgICAgIG9wdC5hdXRvcmVz b2x2ZSA9IFRSVUU7CiAgICAgICB9CisgICAgICBlbHNlIGlmICghc3RyY21wKGFyZ3ZbaV0sICIt LWV4cG9ydHMiKSkKKyAgICAgIHsKKyAgICAgICAgcHJvY2Vzc19leHBfZmlsZShhcmd2WysraV0p OworICAgICAgfQogICAgICAgZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLUUiKSkKICAgICAg IHsKKyAgICAgICAgaWYgKHVzZV9leHBvcnRzKSBnb3RvIGJhZF9vcHQxOwogICAgICAgICBpZiAo b3B0Lm51bV9wcmVmaXggPj0gb3B0Lm1heF9wcmVmaXgpCiAgICAgICAgIHsKICAgICAgICAgICBv cHQubWF4X3ByZWZpeCArPSAxNjsKQEAgLTU2Myw2ICs2NDYsMTEgQEAgc3RhdGljIHZvaWQgcHJv Y2Vzc19hcmdzKGludCBhcmdjLCBjaGFyIAogICAgICAgfQogICAgICAgZWxzZSBpZiAoIXN0cmNt cChhcmd2W2ldLCAiLVgiKSkKICAgICAgIHsKKyAgICAgICAgaWYgKHVzZV9leHBvcnRzKQorICAg ICAgICB7IGJhZF9vcHQxOgorICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3I6IC0tZXhw b3J0cyBhbmQgLUUgLyAtWCBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuXG4iKTsKKyAg ICAgICAgICBleGl0KDEpOworICAgICAgICB9CiAgICAgICAgIGlmIChvcHQubnVtX2V4Y2wgPj0g b3B0Lm1heF9leGNsKQogICAgICAgICB7CiAgICAgICAgICAgIG9wdC5tYXhfZXhjbCArPSAxNjsK QEAgLTExODUsNiArMTI3MywyNCBAQCBzdGF0aWMgaW50IHdyaXRlX2R4ZShGSUxFICppbmYsIEZJ TEUgKm91CiAgICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAKKyAgICAgIGlmIChvcHQubnVt X25hbWVzKQorICAgICAgeworICAgICAgICBCT09MIG9rID0gRkFMU0U7CisgICAgICAgIGZvciAo aiA9IDA7IGogPCBvcHQubnVtX25hbWVzOyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICBpZiAo IW9wdC5leHBvcnRfbmFtZXNbal0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICBp ZiAoc3RyY21wKG9wdC5leHBvcnRfbmFtZXNbal0sIG5hbWUpID09IDApCisgICAgICAgICAgewor ICAgICAgICAgICAgb2sgPSBUUlVFOworICAgICAgICAgICAgb3B0LmV4cG9ydF9uYW1lc1tqXSA9 IE5VTEw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg ICAgaWYgKCFvaykKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKwogICAgICAgLyogZXhw b3J0ZWQgc3ltYm9sICovCiAgICAgICBkaC5uX2V4cF9zeW1zKys7CiAKQEAgLTEyMDgsNiArMTMx NCwxNSBAQCBzdGF0aWMgaW50IHdyaXRlX2R4ZShGSUxFICppbmYsIEZJTEUgKm91CiAgIH0KICAg REVCVUdfUFJJTlRfU1lNQk9MX1RBQkxFX0VQSUxPRygpOwogCisgIGlmIChvcHQudmVyYm9zZSAm JiBvcHQubnVtX25hbWVzICYmIG9wdC5udW1fbmFtZXMgIT0gZGgubl9leHBfc3ltcykKKyAgewor ICAgIGZvciAoaiA9IDA7IGogPCBvcHQubnVtX25hbWVzOyBqKyspCisgICAgeworICAgICAgaWYg KG9wdC5leHBvcnRfbmFtZXNbal0pCisgICAgICAgIHByaW50ZigibWlzc2luZyBleHBvcnQ6IGAl cydcbiIsIG9wdC5leHBvcnRfbmFtZXNbal0pOworICAgIH0KKyAgfQorCiAgIGlmIChlcnJjb3Vu dCkKICAgewogICAgIGZjbG9zZShvdXRmKTsK --0000000000009dc48605f38967c3--