From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22a.google.com (mail-oi1-x22a.google.com [IPv6:2607:f8b0:4864:20::22a]) by sourceware.org (Postfix) with ESMTPS id 8C791386F816; Sun, 24 May 2020 20:02:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 8C791386F816 Received: by mail-oi1-x22a.google.com with SMTP id x23so14491072oic.3; Sun, 24 May 2020 13:02:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=O8nxluWM417a80avehXaPxMxW+bR2MtOSMdcBDAkjDc=; b=ucgboWTwWlWuF+AwkotYs6mxiVz2+j6cvrsIDWlVtbpAsS+uxfzhnZDB29w0q83Wv1 /8svHitbtrq8s/BlLsjBt03jvd0wIgLIy0dH0v1wK1uthFACl5d0lscgkbM8m+MArWgs b8ymaVZHYT1UV8bKLD2BVpY0rpfEYKkvyqs5NYLBnow1Rfb/DSUWhpBQmZPuB4rIDgD8 P5FKTgel2ub0orK3vQg4HfRdwzJWK4Aack/GmAiNuKDayqieHGPSrCPDBuBiggKK0Wmh WZP56KjtUDGm9cQdIS9G9hW2+pnSmYL5jmV9D0vDCPEWxfhQAUlMyqrNRr2TOe6lZ8Ql s0DQ== X-Gm-Message-State: AOAM5300PbKIqkkesbDTi0ATXrAwa1+z488LikGfV8PsW/24jGwQkYyu F73EE1rYKpmqm6RfVSYz/j9vb5YKuACE6tuTEgpxD9ejOl8= X-Google-Smtp-Source: ABdhPJyhXSLhwWosXHCCV5nZGj8VJdH3dJUj9WLjWlQhrBVC8Ek9mb1CrJMdDgxHqFcKzwcgi6pMxX9GIJv9+NAsO88= X-Received: by 2002:aca:ac0e:: with SMTP id v14mr9229601oie.65.1590350564807; Sun, 24 May 2020 13:02:44 -0700 (PDT) MIME-Version: 1.0 From: =?UTF-8?Q?Nicolas_B=C3=A9rtolo?= Date: Sun, 24 May 2020 17:02:32 -0300 Message-ID: Subject: [PATCH] Port libgccjit to Windows. To: jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Content-Type: multipart/mixed; boundary="0000000000007beab105a66a583c" X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 May 2020 20:02:46 -0000 --0000000000007beab105a66a583c Content-Type: text/plain; charset="UTF-8" Hello gcc devs. I have ported libgccjit to Windows. I have tested it with the native-compilation branch of Emacs so I'm confident that it works well. The work is not finished though, I could use some help with these two points: I have had to concede defeat to libtool and Automake. I could not get libgccjit to create a dll and put it in the correct directories. So for now we'll have to copy lib/libgccjit.so to bin/libgccjit.dll. It is not necessary to use --enable-host-shared in Windows (I tested it), but I don't know the proper way to disable that check. Nicolas --0000000000007beab105a66a583c Content-Type: application/octet-stream; name="0001-Incomplete-port-of-libgccjit-to-Windows.patch" Content-Disposition: attachment; filename="0001-Incomplete-port-of-libgccjit-to-Windows.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kalhmxen0 RnJvbSA4NjQ0Yjk3OWNmNzMyZTBiNGQ1N2M4MjgxMjI5ZmMzZGNjOWRjNzM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Tmljb2w9QzM9QTFzPTIwQj1DMz1BOXJ0b2xv Pz0gPG5pY29sYXNiZXJ0b2xvQGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAyMiBNYXkgMjAyMCAxNzo1 NDo0MSAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIEluY29tcGxldGUgcG9ydCBvZiBsaWJnY2NqaXQg dG8gV2luZG93cy4KCiogZ2NjL01ha2VmaWxlLmluOiBkb24ndCBsb29rIGZvciBsaWJpYmVydHkg aW4gdGhlICJwaWMiIHN1YmRpcmVjdG9yeSB3aGVuCmJ1aWxkaW5nIGZvciBNaW5ndy4gQWRkIGRl cGVuZGVuY3kgb24geGdjYyB3aXRoIHRoZSBwcm9wZXIgZXh0ZW5zaW9uLgoqIGdjYy9jL01ha2Ut bGFuZy5pbjogUmVtb3ZlIGV4dHJhIHNsYXNoLgoqIGdjYy9qaXQvTWFrZS1sYW5nLmluOiBSZW1v dmUgZXh0cmEgc2xhc2guCiogZ2NjL2ppdC9qaXQtcGxheWJhY2suYzogRG8gbm90IGNobW9kIGZp bGVzIGluIFdpbmRvd3MuIFVzZSBMb2FkTGlicmFyeSwKRnJlZUxpYnJhcnkgYW5kIEdldFByb2NB ZGRyZXNzIGluc3RlYWQgb2YgbGliZGwuCiogZ2NjL2ppdC9qaXQtdGVtcGRpci5jOiBEbyBub3Qg dXNlIG1rZHRlbXAoKSBpbiBXaW5kb3dzLiBHZXQgYSBmaWxlbmFtZSB3aXRoCkdldFRlbXBGaWxl TmFtZS4KLS0tCiBnY2MvTWFrZWZpbGUuaW4gICAgICAgIHwgMTAgKysrKystLS0KIGdjYy9jL01h a2UtbGFuZy5pbiAgICAgfCAgMiArLQogZ2NjL2ppdC9NYWtlLWxhbmcuaW4gICB8IDEwICsrKyst LS0tCiBnY2Mvaml0L2ppdC1wbGF5YmFjay5jIHwgMjUgKysrKysrKysrKysrKysrKystLQogZ2Nj L2ppdC9qaXQtcmVzdWx0LmMgICB8IDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0KIGdjYy9qaXQvaml0LXRlbXBkaXIuYyAgfCA1NiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKyksIDE3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmls ZS5pbgppbmRleCAwZmUyYmEyNDEuLmU2ZGQ5ZjU5ZSAxMDA2NDQKLS0tIGEvZ2NjL01ha2VmaWxl LmluCisrKyBiL2djYy9NYWtlZmlsZS5pbgpAQCAtMTA0NiwxMCArMTA0NiwxMiBAQCBBTExfTElO S0VSRkxBR1MgPSAkKEFMTF9DWFhGTEFHUykKIAogIyBCdWlsZCBhbmQgaG9zdCBzdXBwb3J0IGxp YnJhcmllcy4KIAotIyBVc2UgdGhlICJwaWMiIGJ1aWxkIG9mIGxpYmliZXJ0eSBpZiAtLWVuYWJs ZS1ob3N0LXNoYXJlZC4KKyMgVXNlIHRoZSAicGljIiBidWlsZCBvZiBsaWJpYmVydHkgaWYgLS1l bmFibGUtaG9zdC1zaGFyZWQsIHVubGVzcyB3ZSBhcmUKKyMgYnVpbGRpbmcgZm9yIG1pbmd3Lgor TElCSUJFUlRZX1BJQ0RJUj0kKGlmICQoZmluZHN0cmluZyBtaW5ndywkKGJ1aWxkKSksLHBpYykK IGlmZXEgKCQoZW5hYmxlX2hvc3Rfc2hhcmVkKSx5ZXMpCi1MSUJJQkVSVFkgPSAuLi9saWJpYmVy dHkvcGljL2xpYmliZXJ0eS5hCi1CVUlMRF9MSUJJQkVSVFkgPSAkKGJ1aWxkX2xpYm9iamRpcikv bGliaWJlcnR5L3BpYy9saWJpYmVydHkuYQorTElCSUJFUlRZID0gLi4vbGliaWJlcnR5LyQoTElC SUJFUlRZX1BJQ0RJUikvbGliaWJlcnR5LmEKK0JVSUxEX0xJQklCRVJUWSA9ICQoYnVpbGRfbGli b2JqZGlyKS9saWJpYmVydHkvJChMSUJJQkVSVFlfUElDRElSKS9saWJpYmVydHkuYQogZWxzZQog TElCSUJFUlRZID0gLi4vbGliaWJlcnR5L2xpYmliZXJ0eS5hCiBCVUlMRF9MSUJJQkVSVFkgPSAk KGJ1aWxkX2xpYm9iamRpcikvbGliaWJlcnR5L2xpYmliZXJ0eS5hCkBAIC0xNzI2LDcgKzE3Mjgs NyBAQCBNT1NUTFlDTEVBTkZJTEVTID0gaW5zbi1mbGFncy5oIGluc24tY29uZmlnLmggaW5zbi1j b2Rlcy5oIFwKICMgVGhpcyBzeW1saW5rIG1ha2VzIHRoZSBmdWxsIGluc3RhbGxhdGlvbiBuYW1l IG9mIHRoZSBkcml2ZXIgYmUgYXZhaWxhYmxlCiAjIGZyb20gd2l0aGluIHRoZSAqYnVpbGQqIGRp cmVjdG9yeSwgZm9yIHVzZSB3aGVuIHJ1bm5pbmcgdGhlIEpJVCBsaWJyYXJ5CiAjIGZyb20gdGhl cmUgKGUuZy4gd2hlbiBydW5uaW5nIGl0cyB0ZXN0c3VpdGUpLgotJChGVUxMX0RSSVZFUl9OQU1F KTogLi94Z2NjCiskKEZVTExfRFJJVkVSX05BTUUpOiAuL3hnY2MkKGV4ZWV4dCkKIAlybSAtZiAk QAogCSQoTE5fUykgJDwgJEAKIApkaWZmIC0tZ2l0IGEvZ2NjL2MvTWFrZS1sYW5nLmluIGIvZ2Nj L2MvTWFrZS1sYW5nLmluCmluZGV4IDg5NDRiOWI5Zi4uN2VmYzdjMmMzIDEwMDY0NAotLS0gYS9n Y2MvYy9NYWtlLWxhbmcuaW4KKysrIGIvZ2NjL2MvTWFrZS1sYW5nLmluCkBAIC0xNjIsNyArMTYy LDcgQEAgYy5pbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMKICMgSW5zdGFsbCBpbXBvcnQgbGli cmFyeS4KIGlmZXEgKCQocGx1Z2luX2ltcGxpYikseWVzKQogCSQobWtpbnN0YWxsZGlycykgJChE RVNURElSKSQocGx1Z2luX3Jlc291cmNlc2RpcikKLQkkKElOU1RBTExfREFUQSkgY2MxJChleGVl eHQpLmEgJChERVNURElSKS8kKHBsdWdpbl9yZXNvdXJjZXNkaXIpL2NjMSQoZXhlZXh0KS5hCisJ JChJTlNUQUxMX0RBVEEpIGNjMSQoZXhlZXh0KS5hICQoREVTVERJUikkKHBsdWdpbl9yZXNvdXJj ZXNkaXIpL2NjMSQoZXhlZXh0KS5hCiBlbmRpZgogCiBjLnVuaW5zdGFsbDoKZGlmZiAtLWdpdCBh L2djYy9qaXQvTWFrZS1sYW5nLmluIGIvZ2NjL2ppdC9NYWtlLWxhbmcuaW4KaW5kZXggMzhkZGZh ZDI4Li4yNGYzN2M5OGIgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvTWFrZS1sYW5nLmluCisrKyBiL2dj Yy9qaXQvTWFrZS1sYW5nLmluCkBAIC0yNzcsMTcgKzI3NywxNyBAQCBzZWxmdGVzdC1qaXQ6CiAj IEluc3RhbGwgaG9va3M6CiBqaXQuaW5zdGFsbC1jb21tb246IGluc3RhbGxkaXJzCiAJJChJTlNU QUxMX1BST0dSQU0pICQoTElCR0NDSklUX0ZJTEVOQU1FKSBcCi0JICAkKERFU1RESVIpLyQobGli ZGlyKS8kKExJQkdDQ0pJVF9GSUxFTkFNRSkKKwkgICQoREVTVERJUikkKGxpYmRpcikvJChMSUJH Q0NKSVRfRklMRU5BTUUpCiAJbG4gLXNmIFwKIAkgICQoTElCR0NDSklUX0ZJTEVOQU1FKSBcCi0J ICAkKERFU1RESVIpLyQobGliZGlyKS8kKExJQkdDQ0pJVF9TT05BTUVfU1lNTElOSykKKwkgICQo REVTVERJUikkKGxpYmRpcikvJChMSUJHQ0NKSVRfU09OQU1FX1NZTUxJTkspCiAJbG4gLXNmIFwK IAkgICQoTElCR0NDSklUX1NPTkFNRV9TWU1MSU5LKVwKLQkgICQoREVTVERJUikvJChsaWJkaXIp LyQoTElCR0NDSklUX0xJTktFUl9OQU1FX1NZTUxJTkspCisJICAkKERFU1RESVIpJChsaWJkaXIp LyQoTElCR0NDSklUX0xJTktFUl9OQU1FX1NZTUxJTkspCiAJJChJTlNUQUxMX0RBVEEpICQoc3Jj ZGlyKS9qaXQvbGliZ2Njaml0LmggXAotCSAgJChERVNURElSKS8kKGluY2x1ZGVkaXIpL2xpYmdj Y2ppdC5oCisJICAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9saWJnY2NqaXQuaAogCSQoSU5TVEFM TF9EQVRBKSAkKHNyY2Rpcikvaml0L2xpYmdjY2ppdCsrLmggXAotCSAgJChERVNURElSKS8kKGlu Y2x1ZGVkaXIpL2xpYmdjY2ppdCsrLmgKKwkgICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2xpYmdj Y2ppdCsrLmgKIAogaml0Lmluc3RhbGwtbWFuOgogCmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC1w bGF5YmFjay5jIGIvZ2NjL2ppdC9qaXQtcGxheWJhY2suYwppbmRleCBkMmM4YmI0YzEuLjI0Zjk2 NTI0NCAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9qaXQtcGxheWJhY2suYworKysgYi9nY2Mvaml0L2pp dC1wbGF5YmFjay5jCkBAIC00Nyw2ICs0NywxMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBm aWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQogI2luY2x1ZGUgImppdC1idWlsdGlucy5oIgogI2lu Y2x1ZGUgImppdC10ZW1wZGlyLmgiCiAKKyNpZmRlZiBfV0lOMzIKKyNpbmNsdWRlIDx3aW5kb3dz Lmg+CisjZW5kaWYKKwogLyogQ29tcGFyZSB3aXRoIGdjYy9jLWZhbWlseS9jLWNvbW1vbi5oOiBE RUNMX0NfQklUX0ZJRUxELAogICAgU0VUX0RFQ0xfQ19CSVRfRklFTEQuCiAgICBUaGVzZSBhcmUg cmVkZWZpbmVkIGhlcmUgdG8gYXZvaWQgZGVwZW5kaW5nIGZyb20gdGhlIEMgZnJvbnRlbmQuICAq LwpAQCAtMjE1OSw4ICsyMTYzLDkgQEAgcGxheWJhY2s6OmNvbXBpbGVfdG9fZmlsZTo6Y29weV9m aWxlIChjb25zdCBjaGFyICpzcmNfcGF0aCwKIAogICBnY2NfYXNzZXJ0ICh0b3RhbF9zel9pbiA9 PSB0b3RhbF9zel9vdXQpOwogICBpZiAoZ2V0X2xvZ2dlciAoKSkKLSAgICBnZXRfbG9nZ2VyICgp LT5sb2cgKCJ0b3RhbCBieXRlcyBjb3BpZWQ6ICVsZCIsIHRvdGFsX3N6X291dCk7CisgICAgZ2V0 X2xvZ2dlciAoKS0+bG9nICgidG90YWwgYnl0ZXMgY29waWVkOiAlenUiLCB0b3RhbF9zel9vdXQp OwogCisJI2lmbmRlZiBfV0lOMzIKICAgLyogU2V0IHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgY29w eSB0byB0aG9zZSBvZiB0aGUgb3JpZ2luYWwgZmlsZSwKICAgICAgaW4gcGFydGljdWxhciB0aGUg ImV4ZWN1dGFibGUiIGJpdHMuICAqLwogICBpZiAoZmNobW9kIChmaWxlbm8gKGZfb3V0KSwgc3Rh dF9idWYuc3RfbW9kZSkgPT0gLTEpCkBAIC0yMTY4LDYgKzIxNzMsNyBAQCBwbGF5YmFjazo6Y29t cGlsZV90b19maWxlOjpjb3B5X2ZpbGUgKGNvbnN0IGNoYXIgKnNyY19wYXRoLAogCSAgICAgICAi ZXJyb3Igc2V0dGluZyBtb2RlIG9mICVzOiAlcyIsCiAJICAgICAgIGRzdF9wYXRoLAogCSAgICAg ICB4c3RyZXJyb3IgKGVycm5vKSk7CisJI2VuZGlmCiAKICAgZmNsb3NlIChmX291dCk7CiB9CkBA IC0yNjQ1LDkgKzI2NTEsMjIgQEAgZGxvcGVuX2J1aWx0X2RzbyAoKQogICBKSVRfTE9HX1NDT1BF IChnZXRfbG9nZ2VyICgpKTsKICAgYXV0b190aW1ldmFyIGxvYWRfdGltZXZhciAoZ2V0X3RpbWVy ICgpLCBUVl9MT0FEKTsKICAgdm9pZCAqaGFuZGxlID0gTlVMTDsKLSAgY29uc3QgY2hhciAqZXJy b3IgPSBOVUxMOwogICByZXN1bHQgKnJlc3VsdF9vYmogPSBOVUxMOwogCisjaWZkZWYgX1dJTjMy CisgIC8qIENsZWFyIGFueSBleGlzdGluZyBlcnJvci4gICovCisgIFNldExhc3RFcnJvcigwKTsK KworICBoYW5kbGUgPSBMb2FkTGlicmFyeShtX3RlbXBkaXItPmdldF9wYXRoX3NvX2ZpbGUgKCkp OworICBpZiAoR2V0TGFzdEVycm9yKCkgIT0gMCkgIHsKKwkJY2hhciBidWZbMjU2XTsKKwkJRm9y bWF0TWVzc2FnZUEoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfCBGT1JNQVRfTUVTU0FHRV9J R05PUkVfSU5TRVJUUywKKwkJCQkJCQkJCSBOVUxMLCBHZXRMYXN0RXJyb3IoKSwgTUFLRUxBTkdJ RChMQU5HX05FVVRSQUwsIFNVQkxBTkdfREVGQVVMVCksCisJCQkJCQkJCQkgYnVmLCBzaXplb2Yo YnVmKSwgTlVMTCk7CisgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgYnVmKTsKKyAgfQorI2Vs c2UKKyAgY29uc3QgY2hhciAqZXJyb3IgPSBOVUxMOwogICAvKiBDbGVhciBhbnkgZXhpc3Rpbmcg ZXJyb3IuICAqLwogICBkbGVycm9yICgpOwogCkBAIC0yNjU2LDYgKzI2NzUsOCBAQCBkbG9wZW5f YnVpbHRfZHNvICgpCiAgIGlmICgoZXJyb3IgPSBkbGVycm9yKCkpICE9IE5VTEwpICB7CiAgICAg YWRkX2Vycm9yIChOVUxMLCAiJXMiLCBlcnJvcik7CiAgIH0KKyNlbmRpZgorCiAgIGlmIChoYW5k bGUpCiAgICAgewogICAgICAgLyogV2UndmUgc3VjY2Vzc2Z1bGx5IGRsb3BlbmVkIHRoZSByZXN1 bHQ7IGNyZWF0ZSBhCmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC1yZXN1bHQuYyBiL2djYy9qaXQv aml0LXJlc3VsdC5jCmluZGV4IGMxMGU1YTEzYy4uNmM4N2IzNWM3IDEwMDY0NAotLS0gYS9nY2Mv aml0L2ppdC1yZXN1bHQuYworKysgYi9nY2Mvaml0L2ppdC1yZXN1bHQuYwpAQCAtMjIsNiArMjIs MTAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUK ICNpbmNsdWRlICJzeXN0ZW0uaCIKICNpbmNsdWRlICJjb3JldHlwZXMuaCIKIAorI2lmZGVmIF9X SU4zMgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSAiaml0LWNvbW1v bi5oIgogI2luY2x1ZGUgImppdC1sb2dnaW5nLmgiCiAjaW5jbHVkZSAiaml0LXJlc3VsdC5oIgpA QCAtNDksOCArNTMsMTEgQEAgcmVzdWx0Ojp+cmVzdWx0KCkKIHsKICAgSklUX0xPR19TQ09QRSAo Z2V0X2xvZ2dlciAoKSk7CiAKKyNpZmRlZiBfV0lOMzIKKyAgRnJlZUxpYnJhcnkoKEhNT0RVTEUp bV9kc29faGFuZGxlKTsKKyNlbHNlCiAgIGRsY2xvc2UgKG1fZHNvX2hhbmRsZSk7Ci0KKyNlbmRp ZgogICAvKiBSZXNwb25zaWJpbGl0eSBmb3IgY2xlYW5pbmcgdXAgdGhlIHRlbXBkaXIgKGluY2x1 ZGluZyAiZmFrZS5zbyIgd2l0aGluCiAgICAgIHRoZSBmaWxlc3lzdGVtKSBtaWdodCBoYXZlIGJl ZW4gaGFuZGVkIHRvIHVzIGJ5IHRoZSBwbGF5YmFjazo6Y29udGV4dCwKICAgICAgc28gdGhhdCB0 aGUgY2xlYW51cCBjYW4gYmUgZGVsYXllZCAoc2VlIFBSIGppdC82NDIwNikuCkBAIC03Miw4ICs3 OSwyMiBAQCBnZXRfY29kZSAoY29uc3QgY2hhciAqZnVuY25hbWUpCiAgIEpJVF9MT0dfU0NPUEUg KGdldF9sb2dnZXIgKCkpOwogCiAgIHZvaWQgKmNvZGU7Ci0gIGNvbnN0IGNoYXIgKmVycm9yOwog CisjaWZkZWYgX1dJTjMyCisgIERXT1JEIGVycm9yOworICAvKiBDbGVhciBhbnkgZXhpc3Rpbmcg ZXJyb3IuICAqLworICBTZXRMYXN0RXJyb3IoMCk7CisKKyAgY29kZSA9ICh2b2lkICopR2V0UHJv Y0FkZHJlc3MoKEhNT0RVTEUpbV9kc29faGFuZGxlLCBmdW5jbmFtZSk7CisgIGlmICgoZXJyb3Ig PSBHZXRMYXN0RXJyb3IoKSkgIT0gMCkgIHsKKwkJY2hhciBidWZbMjU2XTsKKwkJRm9ybWF0TWVz c2FnZUEoRk9STUFUX01FU1NBR0VfRlJPTV9TWVNURU0gfCBGT1JNQVRfTUVTU0FHRV9JR05PUkVf SU5TRVJUUywKKwkJCQkJCQkJCSBOVUxMLCBHZXRMYXN0RXJyb3IoKSwgTUFLRUxBTkdJRChMQU5H X05FVVRSQUwsIFNVQkxBTkdfREVGQVVMVCksCisJCQkJCQkJCQkgYnVmLCBzaXplb2YoYnVmKSwg TlVMTCk7CisgICAgZnByaW50ZihzdGRlcnIsICIlc1xuIiwgYnVmKTsKKyAgfQorI2Vsc2UKKyAg Y29uc3QgY2hhciAqZXJyb3I7CiAgIC8qIENsZWFyIGFueSBleGlzdGluZyBlcnJvci4gICovCiAg IGRsZXJyb3IgKCk7CiAKQEAgLTgxLDcgKzEwMiw4IEBAIGdldF9jb2RlIChjb25zdCBjaGFyICpm dW5jbmFtZSkKIAogICBpZiAoKGVycm9yID0gZGxlcnJvcigpKSAhPSBOVUxMKSAgewogICAgIGZw cmludGYoc3RkZXJyLCAiJXNcbiIsIGVycm9yKTsKLSAgfQorCX0KKyNlbmRpZgogCiAgIHJldHVy biBjb2RlOwogfQpAQCAtOTksOCArMTIxLDIxIEBAIGdldF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5h bWUpCiAgIEpJVF9MT0dfU0NPUEUgKGdldF9sb2dnZXIgKCkpOwogCiAgIHZvaWQgKmdsb2JhbDsK LSAgY29uc3QgY2hhciAqZXJyb3I7CiAKKyNpZmRlZiBfV0lOMzIKKyAgLyogQ2xlYXIgYW55IGV4 aXN0aW5nIGVycm9yLiAgKi8KKyAgU2V0TGFzdEVycm9yKDApOworCisgIGdsb2JhbCA9ICh2b2lk ICopR2V0UHJvY0FkZHJlc3MoKEhNT0RVTEUpbV9kc29faGFuZGxlLCBuYW1lKTsKKyAgaWYgKEdl dExhc3RFcnJvcigpICE9IDApICB7CisJCWNoYXIgYnVmWzI1Nl07CisJCUZvcm1hdE1lc3NhZ2VB KEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIHwgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VS VFMsCisJCQkJCQkJCQkgTlVMTCwgR2V0TGFzdEVycm9yKCksIE1BS0VMQU5HSUQoTEFOR19ORVVU UkFMLCBTVUJMQU5HX0RFRkFVTFQpLAorCQkJCQkJCQkJIGJ1Ziwgc2l6ZW9mKGJ1ZiksIE5VTEwp OworICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIGJ1Zik7CisgIH0KKyNlbHNlCisgIGNvbnN0 IGNoYXIgKmVycm9yOwogICAvKiBDbGVhciBhbnkgZXhpc3RpbmcgZXJyb3IuICAqLwogICBkbGVy cm9yICgpOwogCkBAIC0xMDgsNyArMTQzLDggQEAgZ2V0X2dsb2JhbCAoY29uc3QgY2hhciAqbmFt ZSkKIAogICBpZiAoKGVycm9yID0gZGxlcnJvcigpKSAhPSBOVUxMKSAgewogICAgIGZwcmludGYo c3RkZXJyLCAiJXNcbiIsIGVycm9yKTsKLSAgfQorCX0KKyNlbmRpZgogCiAgIHJldHVybiBnbG9i YWw7CiB9CmRpZmYgLS1naXQgYS9nY2Mvaml0L2ppdC10ZW1wZGlyLmMgYi9nY2Mvaml0L2ppdC10 ZW1wZGlyLmMKaW5kZXggMTBjNTI4ZmFmLi4zN2ZjM2UxMTMgMTAwNjQ0Ci0tLSBhL2djYy9qaXQv aml0LXRlbXBkaXIuYworKysgYi9nY2Mvaml0L2ppdC10ZW1wZGlyLmMKQEAgLTI0LDcgKzI0LDEx IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAK ICNpbmNsdWRlICJqaXQtdGVtcGRpci5oIgogCisjaWZkZWYgX1dJTjMyCisjaW5jbHVkZSAid2lu ZG93cy5oIgorI2VuZGlmCiAKKyNpZm5kZWYgX1dJTjMyCiAvKiBDb25zdHJ1Y3QgYSB0ZW1wZGly IHBhdGggdGVtcGxhdGUgc3VpdGFibGUgZm9yIHVzZSBieSBta2R0ZW1wCiAgICBlLmcuICIvdG1w L2xpYmdjY2ppdC1YWFhYWFgiLCBidXQgcmVzcGVjdGluZyB0aGUgcnVsZXMgaW4KICAgIGxpYmli ZXJ0eSdzIGNob29zZV90ZW1wZGlyIHJhdGhlciB0aGFuIGhhcmRjb2RpbmcgIi90bXAvIi4KQEAg LTYyLDYgKzY2LDUzIEBAIG1ha2VfdGVtcGRpcl9wYXRoX3RlbXBsYXRlICgpCiAKICAgcmV0dXJu IHJlc3VsdDsKIH0KKyNlbHNlCitzdGF0aWMgY2hhciAqCit3aW5fbWtkdGVtcCgpCit7CisJY2hh ciBzelRlbXBGaWxlTmFtZVtNQVhfUEFUSF07CisJY2hhciBscFRlbXBQYXRoQnVmZmVyW01BWF9Q QVRIXTsKKworCXdoaWxlICh0cnVlKQorCQl7CisJCQkvKiBHZXRzIHRoZSB0ZW1wIHBhdGggZW52 IHN0cmluZyAobm8gZ3VhcmFudGVlIGl0J3MgYSB2YWxpZCBwYXRoKS4gKi8KKwkJCURXT1JEIGR3 UmV0VmFsID0gR2V0VGVtcFBhdGggKE1BWF9QQVRILCBscFRlbXBQYXRoQnVmZmVyKTsKKwkJCWlm IChkd1JldFZhbCA+IE1BWF9QQVRIIHx8IChkd1JldFZhbCA9PSAwKSkKKwkJCQlnb3RvIGVycm9y OworCisJCQkvKiBHZW5lcmF0ZXMgYSB0ZW1wb3JhcnkgZmlsZSBuYW1lLiAqLworCQkJaWYgKCFH ZXRUZW1wRmlsZU5hbWVBIChscFRlbXBQYXRoQnVmZmVyLCAiZ2Njaml0IiwgMCwgc3pUZW1wRmls ZU5hbWUpKQorCQkJCWdvdG8gZXJyb3I7CisKKwkJCS8qIEdldFRlbXBGaWxlTmFtZUEgYWN0dWFs bHkgY3JlYXRlcyBhIGZpbGUsIHdlIGFyZSBuZWVkIGEgZGlyZWN0b3J5LCBzbworCQkJCSByZW1v dmUgaXQuICovCisJCQlpZiAoIURlbGV0ZUZpbGVBIChzelRlbXBGaWxlTmFtZSkpCisJCQkJZ290 byBlcnJvcjsKKworCQkJaWYgKENyZWF0ZURpcmVjdG9yeUEgKHN6VGVtcEZpbGVOYW1lLCBOVUxM KSkKKwkJCQlicmVhazsgLy8gc3VjY2VzcyEKKworCQkJLyogSWYgd2UgY2FuJ3QgY3JlYXRlIHRo ZSBkaXJlY3RvcnkgYmVjYXVzZSB3ZSBnb3QgdW5sdWNreSBhbmQgYW5vdGhlcgorCQkJCSBwcm9j ZXNzIGNyZWF0ZWQgYSBmaWxlIHJldHJ5LCBvdGhlcndpc2UgZmFpbC4gKi8KKwkJCWlmIChHZXRM YXN0RXJyb3IgKCkgIT0gRVJST1JfQUxSRUFEWV9FWElTVFMpCisJCQkJZ290byBlcnJvcjsKKwkJ fQorCisJeworCQljaGFyICogcmVzdWx0ID0gWE5FV1ZFQyAoY2hhciwgTUFYX1BBVEgpOworCQlz dHJjcHkgKHJlc3VsdCwgc3pUZW1wRmlsZU5hbWUpOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwor IGVycm9yOgorCS8qIFJldXNlIHN6VGVtcEZpbGVOYW1lIGZvciB0aGUgZXJyb3IgbWVzc2FnZS4g Ki8KKwlGb3JtYXRNZXNzYWdlQShGT1JNQVRfTUVTU0FHRV9GUk9NX1NZU1RFTSB8IEZPUk1BVF9N RVNTQUdFX0lHTk9SRV9JTlNFUlRTLAorCQkJCQkJCQkgTlVMTCwgR2V0TGFzdEVycm9yKCksIE1B S0VMQU5HSUQoTEFOR19ORVVUUkFMLCBTVUJMQU5HX0RFRkFVTFQpLAorCQkJCQkJCQkgc3pUZW1w RmlsZU5hbWUsIHNpemVvZihzelRlbXBGaWxlTmFtZSksIE5VTEwpOworCWZwcmludGYoc3RkZXJy LCAiJXNcbiIsIHN6VGVtcEZpbGVOYW1lKTsKKwlyZXR1cm4gTlVMTDsKK30KKyNlbmRpZgogCiAv KiBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSBqaXQ6OnRlbXBkaXIgb2JqZWN0LgogICAgVGhlIHJl YWwgd29yayBpcyBkb25lIGJ5IHRoZSBqaXQ6OnRlbXBkaXI6OmNyZWF0ZSBtZXRob2QuICAqLwpA QCAtODcsNiArMTM4LDkgQEAgZ2NjOjpqaXQ6OnRlbXBkaXI6OmNyZWF0ZSAoKQogewogICBKSVRf TE9HX1NDT1BFIChnZXRfbG9nZ2VyICgpKTsKIAorI2lmZGVmIF9XSU4zMgorCW1fcGF0aF90ZW1w ZGlyID0gd2luX21rZHRlbXAgKCk7CisjZWxzZQogICBtX3BhdGhfdGVtcGxhdGUgPSBtYWtlX3Rl bXBkaXJfcGF0aF90ZW1wbGF0ZSAoKTsKICAgaWYgKCFtX3BhdGhfdGVtcGxhdGUpCiAgICAgcmV0 dXJuIGZhbHNlOwpAQCAtOTcsNiArMTUxLDggQEAgZ2NjOjpqaXQ6OnRlbXBkaXI6OmNyZWF0ZSAo KQogICAgICBpcyB1bmlxdWUuICBIZW5jZSBubyBvdGhlciAobm9uLXJvb3QpIHVzZXJzIHNob3Vs ZCBoYXZlIGFjY2VzcyB0bwogICAgICB0aGUgcGF0aHMgd2l0aGluIGl0LiAgKi8KICAgbV9wYXRo X3RlbXBkaXIgPSBta2R0ZW1wIChtX3BhdGhfdGVtcGxhdGUpOworI2VuZGlmCisKICAgaWYgKCFt X3BhdGhfdGVtcGRpcikKICAgICByZXR1cm4gZmFsc2U7CiAgIGxvZyAoIm1fcGF0aF90ZW1wZGly OiAlcyIsIG1fcGF0aF90ZW1wZGlyKTsKLS0gCjIuMjUuMS53aW5kb3dzLjEKCg== --0000000000007beab105a66a583c--