From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt1-x82a.google.com (mail-qt1-x82a.google.com [IPv6:2607:f8b0:4864:20::82a]) by sourceware.org (Postfix) with ESMTPS id 9F73338515CC for ; Fri, 7 Jul 2023 09:38:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9F73338515CC Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-qt1-x82a.google.com with SMTP id d75a77b69052e-4036e428de0so14055871cf.3 for ; Fri, 07 Jul 2023 02:38:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688722688; x=1691314688; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=WQQ6qxHX+cfaMGnmLSAtC6j4ECtIjGuwVmQVDaymnjQ=; b=bLY2DyjMXAiNdmXWGbpp1KSJbhlAn54FHtqTIHkexzIw1vn0MIK++2+sGQN+3Z2hEr /tnNEN74D3kBSI0GAvQx6m9rbLkZgDSSJ/o8GD6Z7byPpSOC001DU2vZIBupoBXjfqhq nhRfs/86MAD9oVORlTVWF1EgkxZsj58pgaVEDV64TUhENSOuhgqanPsz0l70w1wauU8L FgGBQuTVSl93x8UgOzAOIdh9XpLE+x1sTlZlAEEVG6+T7aTrvDaNXBmrlaVVFfYzePGD pe8+m6fWnHYWtbGduZj3erXJziw9FHtg+yEJHQMJ4EZo6X2TZxa9P05zK+UzJfJY8r8o tLSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688722688; x=1691314688; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=WQQ6qxHX+cfaMGnmLSAtC6j4ECtIjGuwVmQVDaymnjQ=; b=R3mrw4RXjqDqRua/9SeE7vA0wuOB8YzhvXYQCYg/FlfE5cnVDHVMs+gMikFhn+4WIV 7CkSpTqF0E7HrnFmU2H1UacvH5YI8franNYsXq5kB7EVXvFV8N0XO51HKsEAcm5vQAKG w2eXYZSlnbyGTXXTykYaZwu/7n3LvfQ3Rly9D9emxJYdDCsQP9nFjXwY3Ujn8aba/9HY zqkXBGHeuJM6HhPOak/IrWWu8TUeRncvo9fJpRB3WVhlSBq1B+5tTNiLOlWazcvQO5+e Va8Ug8VvQ0aB3UTG4tmaeha8WGYuEhugIbJeaXQOnTaS05ynoecNjFWFj66r9qCNtscL t1Og== X-Gm-Message-State: ABy/qLZL3z1l01C6VJNzdbY2IK/w5p7il+wiWtSX56DA59s/pEhtARF3 zSkSbHMbs1FLa9GKOsNR1njnVrO6ib3GQb3i3k8fQKG3EeU= X-Google-Smtp-Source: APBJJlESq0teku1lCi13PCHbM9Rqz3nJlzz/ySm2CYPjGXJA88ApnoFUIK4/SBtbapf35iW7HED4Ui4t08YjtjWjpkA= X-Received: by 2002:a05:622a:1891:b0:400:880e:7584 with SMTP id v17-20020a05622a189100b00400880e7584mr6029555qtc.46.1688722687844; Fri, 07 Jul 2023 02:38:07 -0700 (PDT) MIME-Version: 1.0 From: Julian Waters Date: Fri, 7 Jul 2023 17:37:29 +0800 Message-ID: Subject: [PATCH] SEH: Reimplement the .seh_scope directive To: binutils@sourceware.org Content-Type: multipart/mixed; boundary="000000000000ef099405ffe263c9" X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000ef099405ffe263c9 Content-Type: multipart/alternative; boundary="000000000000ef099305ffe263c7" --000000000000ef099305ffe263c7 Content-Type: text/plain; charset="UTF-8" The .seh_scope directive was removed a little over a decade ago due to being too Microsoft specific. This has proven to be a mistake as there is now no easy way for reusable inline assembly to express Structured Exception Handling scopes for Microsoft Windows targets. This patch reimplements a simpler version of .seh_scope, with the proper semantics in place --000000000000ef099305ffe263c7-- --000000000000ef099405ffe263c9 Content-Type: application/octet-stream; name="0001-Reimplement-the-.seh_scope-directive.patch" Content-Disposition: attachment; filename="0001-Reimplement-the-.seh_scope-directive.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ljsdv1a80 RnJvbSAxOGRhNDVlOTY2YTdmMWNjOTE3ODI1MTdlM2M5OTJjYmY1MmNkOTc0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUaGVTaGVybWFuVGFu a2VyIDx0YW5rc2hlcm1hbjI3QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA3IEp1 bCAyMDIzIDE2OjIzOjA3ICswODAwClN1YmplY3Q6IFtQQVRDSF0gUmVpbXBs ZW1lbnQgdGhlIC5zZWhfc2NvcGUgZGlyZWN0aXZlCgotLS0KIGdhcy9jb25m aWcvb2JqLWNvZmYtc2VoLmMgfCAxMDAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0KIGdhcy9jb25maWcvb2JqLWNvZmYtc2VoLmgg fCAgMTYgKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25z KCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dhcy9jb25maWcv b2JqLWNvZmYtc2VoLmMgYi9nYXMvY29uZmlnL29iai1jb2ZmLXNlaC5jCmlu ZGV4IDdiNDQ4NmEzNDhmLi42NjFjM2Q2MTEzNyAxMDA2NDQKLS0tIGEvZ2Fz L2NvbmZpZy9vYmotY29mZi1zZWguYworKysgYi9nYXMvY29uZmlnL29iai1j b2ZmLXNlaC5jCkBAIC0zODgsNiArMzg4LDY5IEBAIG9ial9jb2ZmX3NlaF9o YW5kbGVyZGF0YSAoaW50IHdoYXQgQVRUUklCVVRFX1VOVVNFRCkKICAgc3dp dGNoX3hkYXRhIChzZWhfY3R4X2N1ci0+c3Vic2VjdGlvbiArIDEsIHNlaF9j dHhfY3VyLT5jb2RlX3NlZyk7CiB9CiAKK3N0YXRpYyB2b2lkCitvYmpfY29m Zl9zZWhfc2NvcGUgKGludCkKK3sKKyAgaWYgKCF2ZXJpZnlfY29udGV4dF9h bmRfdGFyZ2V0ICgiLnNlaF9zY29wZSIsIHNlaF9raW5kX3g2NCkpCisgICAg cmV0dXJuOworCisgIHNlaF9jdHhfY3VyLT5zY29wZXMgKz0gMTsKKworICBl eHByZXNzaW9uUyBhZGRyc1s0XTsKKworICBmb3IgKHVuc2lnbmVkIHNob3J0 IGkgPSAwOyBpIDwgNDsgaSArPSAxKSB7CisgICAgd2hpbGUgKCppbnB1dF9s aW5lX3BvaW50ZXIgPT0gJyAnIHx8ICppbnB1dF9saW5lX3BvaW50ZXIgPT0g J1x0JyB8fCAqaW5wdXRfbGluZV9wb2ludGVyID09ICcsJykgeworICAgICAg aW5wdXRfbGluZV9wb2ludGVyICs9IDE7CisgICAgfQorCisgICAgaWYgKCpp bnB1dF9saW5lX3BvaW50ZXIgPT0gTlVMTCB8fCAqaW5wdXRfbGluZV9wb2lu dGVyID09ICdcbicpIHsKKyAgICAgICAgYXNfZmF0YWwgKF8oIi5zZWhfc2Nv cGUgcmVxdWlyZXMgZm91ciBzeW1ib2wgbmFtZXMuXG4iKSk7CisgICAgICAg IGRlbWFuZF9lbXB0eV9yZXN0X29mX2xpbmUgKCk7CisgICAgICAgIHJldHVy bjsKKyAgICB9CisKKyAgICBleHByZXNzaW9uUyBleHA7CisKKyAgICBpZiAo KmlucHV0X2xpbmVfcG9pbnRlciA9PSAnQCcgJiYgaSA+IDEpIHsKKyAgICAg IGNoYXIqIG5hbWU7CisgICAgICBjaGFyIGVuZDsKKyAgICAgIGVuZCA9IGdl dF9zeW1ib2xfbmFtZSAoJm5hbWUpOworICAgICAgaWYgKHN0cmNhc2VjbXAg KG5hbWUsICJAbnVsbCIpID09IDApIHsKKyAgICAgICAgZXhwLlhfb3AgPSBP X2NvbnN0YW50OworICAgICAgICBleHAuWF9hZGRfbnVtYmVyID0gMDsKKyAg ICAgIH0gZWxzZSB7CisgICAgICAgIGFzX2ZhdGFsIChfKCIuc2VoX3Njb3Bl IGVuY291bnRlcmVkIGFuIHVua25vd24gY29uc3RhbnRcbiIpKTsKKyAgICAg ICAgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAoKTsKKyAgICAgICAgcmV0 dXJuOworICAgICAgfQorICAgICAgcmVzdG9yZV9saW5lX3BvaW50ZXIgKGVu ZCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGV4cHJlc3Npb24oJmV4cCk7Cisg ICAgICBleHAuWF9vcCA9IE9fc3ltYm9sX3J2YTsKKyAgICB9CisKKyAgICBh ZGRyc1tpXSA9IGV4cDsKKyAgfQorCisgIHNlaF9zY29wZSBzY29wZTsKKwor ICBzY29wZS5zdGFydCA9IGFkZHJzWzBdOworICBzY29wZS5lbmQgPSBhZGRy c1sxXTsKKyAgc2NvcGUuZmlsdGVyID0gYWRkcnNbMl07CisgIHNjb3BlLmhh bmRsZXIgPSBhZGRyc1szXTsKKworICBpZiAoc2VoX2N0eF9jdXItPnNjb3Bl aW5mbyA9PSBOVUxMKSB7CisgICAgc2VoX2N0eF9jdXItPnNjb3BlaW5mbyA9 IFhDTkVXIChzZWhfc2NvcGUpOworICB9IGVsc2UgeworICAgIHNlaF9zY29w ZSogbmV3YXJyYXkgPSBYQ05FV1ZFQyAoc2VoX3Njb3BlLCBzZWhfY3R4X2N1 ci0+c2NvcGVzKTsKKyAgICBtZW1jcHkgKG5ld2FycmF5LCBzZWhfY3R4X2N1 ci0+c2NvcGVpbmZvLCAoc2VoX2N0eF9jdXItPnNjb3BlcyAtIDEpICogc2l6 ZW9mIChzZWhfc2NvcGUpKTsKKyAgICBYREVMRVRFVkVDIChzZWhfY3R4X2N1 ci0+c2NvcGVpbmZvKTsKKyAgICBzZWhfY3R4X2N1ci0+c2NvcGVpbmZvID0g bmV3YXJyYXk7CisgIH0KKworICBtZW1jcHkgKHNlaF9jdHhfY3VyLT5zY29w ZWluZm8gKyAoc2VoX2N0eF9jdXItPnNjb3BlcyAtIDEpLCAmc2NvcGUsIHNp emVvZiAoc2VoX3Njb3BlKSk7Cit9CisKIC8qIE1hcmsgZW5kIG9mIGN1cnJl bnQgY29udGV4dC4gICovCiAKIHN0YXRpYyB2b2lkCkBAIC05MDIsNiArOTY1 LDI1IEBAIHNlaF94NjRfd3JpdGVfZnVuY3Rpb25feGRhdGEgKHNlaF9jb250 ZXh0ICpjKQogICAvKiBIYW5kbGVyIGRhdGEgd2lsbCBiZSB0YWNrZWQgaW4g aGVyZSBieSBzdWJzZWN0aW9ucy4gICovCiB9CiAKK3N0YXRpYyB2b2lkCitz ZWhfeDY0X21heWJlX2VtaXRfc2NvcGVfaW5mbyAoc2VoX2NvbnRleHQgKmMp Cit7CisKKyAgaWYgKGMtPnNjb3BlaW5mbyAhPSBOVUxMKSB7CisgICAgb3V0 X2ZvdXIgKGMtPnNjb3Blcyk7CisgICAgZm9yICh1bnNpZ25lZCBzaG9ydCBp ID0gMDsgaSA8IGMtPnNjb3BlczsgaSArPSAxKSB7CisgICAgICBzZWhfc2Nv cGUgc2NvcGUgPSAqKGMtPnNjb3BlaW5mbyArIGkpOworICAgICAgZW1pdF9l eHByICgmKHNjb3BlLnN0YXJ0KSwgNCk7CisgICAgICBlbWl0X2V4cHIgKCYo c2NvcGUuZW5kKSwgNCk7CisgICAgICBlbWl0X2V4cHIgKCYoc2NvcGUuZmls dGVyKSwgNCk7CisgICAgICBlbWl0X2V4cHIgKCYoc2NvcGUuaGFuZGxlciks IDQpOworICAgIH0KKworICAgIFhERUxFVEVWRUMgKGMtPnNjb3BlaW5mbyk7 CisgIH0KKworfQorCiAvKiBXcml0ZSBvdXQgeGRhdGEgZm9yIG9uZSBmdW5j dGlvbi4gICovCiAKIHN0YXRpYyB2b2lkCkBAIC05MTgsNiArMTAwMCwxMCBA QCB3cml0ZV9mdW5jdGlvbl94ZGF0YSAoc2VoX2NvbnRleHQgKmMpCiAKICAg c2VoX3g2NF93cml0ZV9mdW5jdGlvbl94ZGF0YSAoYyk7CiAKKyAgc3dpdGNo X3hkYXRhIChjLT5zdWJzZWN0aW9uICsgMSwgYy0+Y29kZV9zZWcpOworCisg IHNlaF94NjRfbWF5YmVfZW1pdF9zY29wZV9pbmZvIChjKTsKKwogICBzdWJz ZWdfc2V0IChzYXZlX3NlZywgc2F2ZV9zdWJzZWcpOwogfQogCmRpZmYgLS1n aXQgYS9nYXMvY29uZmlnL29iai1jb2ZmLXNlaC5oIGIvZ2FzL2NvbmZpZy9v YmotY29mZi1zZWguaAppbmRleCA4ZDc3YmFjZmY3MS4uZjgzZTk5YzNjNjUg MTAwNjQ0Ci0tLSBhL2dhcy9jb25maWcvb2JqLWNvZmYtc2VoLmgKKysrIGIv Z2FzL2NvbmZpZy9vYmotY29mZi1zZWguaApAQCAtNzUsNyArNzUsOCBAQAog CXsic2VoX25vMzIiLCBvYmpfY29mZl9zZWhfMzIsIDB9LCBcCiAJeyJzZWhf aGFuZGxlciIsIG9ial9jb2ZmX3NlaF9oYW5kbGVyLCAwfSwgXAogCXsic2Vo X2NvZGUiLCBvYmpfY29mZl9zZWhfY29kZSwgMH0sIFwKLQl7InNlaF9oYW5k bGVyZGF0YSIsIG9ial9jb2ZmX3NlaF9oYW5kbGVyZGF0YSwgMH0sCisJeyJz ZWhfaGFuZGxlcmRhdGEiLCBvYmpfY29mZl9zZWhfaGFuZGxlcmRhdGEsIDB9 LCBcCisJeyJzZWhfc2NvcGUiLCBvYmpfY29mZl9zZWhfc2NvcGUsIDB9LAog CiAvKiBUeXBlIGRlZmluaXRpb25zLiAgKi8KIApAQCAtODcsNiArODgsMTQg QEAgdHlwZWRlZiBzdHJ1Y3Qgc2VoX3Byb2xvZ3VlX2VsZW1lbnQKICAgc3lt Ym9sUyAqcGNfYWRkcjsKIH0gc2VoX3Byb2xvZ3VlX2VsZW1lbnQ7CiAKK3R5 cGVkZWYgc3RydWN0IHNlaF9zY29wZQoreworICBleHByZXNzaW9uUyBzdGFy dDsKKyAgZXhwcmVzc2lvblMgZW5kOworICBleHByZXNzaW9uUyBmaWx0ZXI7 CisgIGV4cHJlc3Npb25TIGhhbmRsZXI7Cit9IHNlaF9zY29wZTsKKwogdHlw ZWRlZiBzdHJ1Y3Qgc2VoX2NvbnRleHQKIHsKICAgc3RydWN0IHNlaF9jb250 ZXh0ICpuZXh0OwpAQCAtMTI4LDYgKzEzNywxMCBAQCB0eXBlZGVmIHN0cnVj dCBzZWhfY29udGV4dAogICBpbnQgZWxlbXNfY291bnQ7CiAgIGludCBlbGVt c19tYXg7CiAgIHNlaF9wcm9sb2d1ZV9lbGVtZW50ICplbGVtczsKKworICAv KiBJbmZvcm1hdGlvbiBmb3IgLnNlaF9zY29wZSBvbiB4NjQgKi8KKyAgdW5z aWduZWQgaW50IHNjb3BlczsKKyAgc2VoX3Njb3BlICpzY29wZWluZm87CiB9 IHNlaF9jb250ZXh0OwogCiB0eXBlZGVmIGVudW0gc2VoX2tpbmQgewpAQCAt MTUxLDYgKzE2NCw3IEBAIHN0YXRpYyB2b2lkIG9ial9jb2ZmX3NlaF9wcm9j ICAoaW50KTsKIHN0YXRpYyB2b2lkIG9ial9jb2ZmX3NlaF9oYW5kbGVyIChp bnQpOwogc3RhdGljIHZvaWQgb2JqX2NvZmZfc2VoX2hhbmRsZXJkYXRhIChp bnQpOwogc3RhdGljIHZvaWQgb2JqX2NvZmZfc2VoX2NvZGUgKGludCk7Citz dGF0aWMgdm9pZCBvYmpfY29mZl9zZWhfc2NvcGUgKGludCk7CiAKICNkZWZp bmUgVU5EU0VDIGJmZF91bmRfc2VjdGlvbl9wdHIKIAotLSAKMi4zNS4xLndp bmRvd3MuMgoK --000000000000ef099405ffe263c9--