From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by sourceware.org (Postfix) with ESMTPS id C9AD53858D33; Wed, 16 Aug 2023 16:32:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C9AD53858D33 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-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-3fe24dd8898so63603675e9.2; Wed, 16 Aug 2023 09:32:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692203539; x=1692808339; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=gEmbrOSwYaRda+FZ5BmEdIUy8hHHUjoBcEqXsy3nWfM=; b=P4wRGgVWfWuxbDnSNHFiUblSCPB8NNfNU2sQ/RlCh3s4vstR6NRKI/8qCj/wQmlHmS ts7i6t1prjFkKq/jfYwHvk5gOmQqMySMZxD75HKCLLB4xTRa/wr33pgIkG+/QOUJoP7d hJn8Vigy29N/SKbGzLjVusBCS/fHhHDlVvdibYIhXH5pm2t4Rkz0zuN23gfBDa1dbBLe 6rXSdKqLfYpvfgzFHLwn87P6tA2GlW7/g/wkEOKpsQm/HdwJfj6fG5/ZMS2cCSosbG6h hk2HE3ZzxyPQfqlpRF2O4oCLu4zkup+IMEVY6plCqqcUkMI535ZtOS0kxI4Cayk9eFlo 5F8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692203539; x=1692808339; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=gEmbrOSwYaRda+FZ5BmEdIUy8hHHUjoBcEqXsy3nWfM=; b=DWDWgvoDRFXr29UXnXQzaTAKkblSfP5Vu5C+Sq3Hzzos9TfF8mR2j+WxygG5plRNJM A7zts6n2RtvwGK1271zClAyPelSH5hgCbKyiVTBUL9yROm2F+k/Rr6uwgHwC7cRiwRqR CGDoLw6Mo8rg8OzWlKOlDYmaJgZVxjwoJiZrxFEoluX673Vp14jqaloedu5x5loRYTQA UZsgTi79qhYAfkPPNcT7rJY9+Vp1ANKGLLREt05ZV25kFDiG9IOm7WZWiYwTn3VISXXt yb4toHQdCGOUyIL+gm0yUC6EE2qMHkWBYJX5Xozc/dKSMhKzMiMKJhyQVvfL2E+bFvY2 vWug== X-Gm-Message-State: AOJu0YwHtAeHobFPeed8cjmHd4kJx+whjl9DkNZXminrAHLiXaC+BHLz Dsl6Tae0hwA7qA6HHF9dwuQ83I7G9Nk/IECj8oRs79Z99ko= X-Google-Smtp-Source: AGHT+IHE/1V8RYQIzhrvhswrgbwhjnL02RewcmRduqF1aEG+ygLO4v8AADTCxob0SH3mENTZyKQwRrnLrU/zLXOUs8I= X-Received: by 2002:a7b:cbd0:0:b0:3fb:fea1:affa with SMTP id n16-20020a7bcbd0000000b003fbfea1affamr1806161wmi.37.1692203538541; Wed, 16 Aug 2023 09:32:18 -0700 (PDT) MIME-Version: 1.0 From: Guillaume Gomez Date: Wed, 16 Aug 2023 18:32:07 +0200 Message-ID: Subject: [PATCH] libgccjit: Add support for `restrict` attribute on function parameters To: gcc-patches@gcc.gnu.org, jit@gcc.gnu.org Content-Type: multipart/mixed; boundary="000000000000cd843106030cd684" X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: --000000000000cd843106030cd684 Content-Type: text/plain; charset="UTF-8" Hi, This patch adds the possibility to specify the __restrict__ attribute for function parameters. It is used by the Rust GCC backend. Thanks in advance for the review. --000000000000cd843106030cd684 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-support-for-restrict-attribute-on-function-param.patch" Content-Disposition: attachment; filename="0001-Add-support-for-restrict-attribute-on-function-param.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lldyab2t0 RnJvbSA4Y2FmYWRiODQwOTA5NGM3ZmM2NmExMDczMzk3OTQyYTYwY2IyN2IzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHdWlsbGF1bWUgR29tZXogPGd1aWxsYXVtZTEuZ29tZXpAZ21h aWwuY29tPgpEYXRlOiBGcmksIDExIEF1ZyAyMDIzIDIyOjQ4OjExICswMjAwClN1YmplY3Q6IFtQ QVRDSF0gQWRkIHN1cHBvcnQgZm9yIGByZXN0cmljdGAgYXR0cmlidXRlIG9uIGZ1bmN0aW9uIHBh cmFtZXRlcnMKCmdjYy9qaXQvQ2hhbmdlbG9nOgoKCSogaml0LXBsYXliYWNrLmNjOiBSZW1vdmUg dHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgoJKiBqaXQtcGxheWJhY2suaDogQWRkIGdl dF9yZXN0cmljdCBtZXRob2QuCgkqIGppdC1yZWNvcmRpbmcuY2M6IEFkZCBnZXRfcmVzdHJpY3Qg bWV0aG9kcy4KCSogaml0LXJlY29yZGluZy5oOiBBZGQgZ2V0X3Jlc3RyaWN0IG1ldGhvZHMuCgkq IGxpYmdjY2ppdCsrLmg6IEFkZCBnZXRfcmVzdHJpY3QgbWV0aG9kcy4KCSogbGliZ2Njaml0LmNj OiBBZGQgZ2NjX2ppdF90eXBlX2dldF9yZXN0cmljdC4KCSogbGliZ2Njaml0Lmg6IERlY2xhcmUg Z2NjX2ppdF90eXBlX2dldF9yZXN0cmljdC4KCSogbGliZ2Njaml0Lm1hcDogRGVjbGFyZSBnY2Nf aml0X3R5cGVfZ2V0X3Jlc3RyaWN0LgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJKiBqaXQu ZGcvdGVzdC1yZXN0cmljdC5jOiBBZGQgdGVzdCBmb3IgX19yZXN0cmljdF9fIGF0dHJpYnV0ZS4K ClNpZ25lZC1vZmYtYnk6IEd1aWxsYXVtZSBHb21leiA8Z3VpbGxhdW1lMS5nb21lekBnbWFpbC5j b20+Ci0tLQogZ2NjL2ppdC9qaXQtcGxheWJhY2suY2MgICAgICAgICAgICAgIHwgIDIgKy0KIGdj Yy9qaXQvaml0LXBsYXliYWNrLmggICAgICAgICAgICAgICB8ICA1ICsrCiBnY2Mvaml0L2ppdC1y ZWNvcmRpbmcuY2MgICAgICAgICAgICAgfCA0NyArKysrKysrKysrKysrKysrKwogZ2NjL2ppdC9q aXQtcmVjb3JkaW5nLmggICAgICAgICAgICAgIHwgMzcgKysrKysrKysrKysrLQogZ2NjL2ppdC9s aWJnY2NqaXQrKy5oICAgICAgICAgICAgICAgIHwgIDYgKysrCiBnY2Mvaml0L2xpYmdjY2ppdC5j YyAgICAgICAgICAgICAgICAgfCAxNCArKysrKwogZ2NjL2ppdC9saWJnY2NqaXQuaCAgICAgICAg ICAgICAgICAgIHwgIDQgKysKIGdjYy9qaXQvbGliZ2Njaml0Lm1hcCAgICAgICAgICAgICAgICB8 ICAxICsKIGdjYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtcmVzdHJpY3QuYyB8IDc3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDkgZmlsZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcv dGVzdC1yZXN0cmljdC5jCgpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcGxheWJhY2suY2MgYi9n Y2Mvaml0L2ppdC1wbGF5YmFjay5jYwppbmRleCA4OGUxYjIxMjAzMC4uMGViNGU5NGZkYzQgMTAw NjQ0Ci0tLSBhL2djYy9qaXQvaml0LXBsYXliYWNrLmNjCisrKyBiL2djYy9qaXQvaml0LXBsYXli YWNrLmNjCkBAIC0zNzkzLDcgKzM3OTMsNyBAQCBpZiAodCkgXAogICBOQU1FX1RZUEUgKGNvbXBs ZXhfZmxvYXRfdHlwZV9ub2RlLCAiY29tcGxleCBmbG9hdCIpOwogICBOQU1FX1RZUEUgKGNvbXBs ZXhfZG91YmxlX3R5cGVfbm9kZSwgImNvbXBsZXggZG91YmxlIik7CiAgIE5BTUVfVFlQRSAoY29t cGxleF9sb25nX2RvdWJsZV90eXBlX25vZGUsICJjb21wbGV4IGxvbmcgZG91YmxlIik7Ci0gIAor CiAgIG1fY29uc3RfY2hhcl9wdHIgPSBidWlsZF9wb2ludGVyX3R5cGUoCiAgICAgYnVpbGRfcXVh bGlmaWVkX3R5cGUgKGNoYXJfdHlwZV9ub2RlLCBUWVBFX1FVQUxfQ09OU1QpKTsKIApkaWZmIC0t Z2l0IGEvZ2NjL2ppdC9qaXQtcGxheWJhY2suaCBiL2djYy9qaXQvaml0LXBsYXliYWNrLmgKaW5k ZXggZDE1M2Y0OTQ1ZDguLmZiNGY3YjhiNjViIDEwMDY0NAotLS0gYS9nY2Mvaml0L2ppdC1wbGF5 YmFjay5oCisrKyBiL2djYy9qaXQvaml0LXBsYXliYWNrLmgKQEAgLTQ5MCw2ICs0OTAsMTEgQEAg cHVibGljOgogICAgIHJldHVybiBuZXcgdHlwZSAoYnVpbGRfcXVhbGlmaWVkX3R5cGUgKG1faW5u ZXIsIFRZUEVfUVVBTF9WT0xBVElMRSkpOwogICB9CiAKKyAgdHlwZSAqZ2V0X3Jlc3RyaWN0ICgp IGNvbnN0CisgIHsKKyAgICByZXR1cm4gbmV3IHR5cGUgKGJ1aWxkX3F1YWxpZmllZF90eXBlICht X2lubmVyLCBUWVBFX1FVQUxfUkVTVFJJQ1QpKTsKKyAgfQorCiAgIHR5cGUgKmdldF9hbGlnbmVk IChzaXplX3QgYWxpZ25tZW50X2luX2J5dGVzKSBjb25zdDsKICAgdHlwZSAqZ2V0X3ZlY3RvciAo c2l6ZV90IG51bV91bml0cykgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL2djYy9qaXQvaml0LXJlY29y ZGluZy5jYyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5jYwppbmRleCBmOTYyYzk3NDhjNC4uYzVm NTAzNDkzMTEgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LXJlY29yZGluZy5jYworKysgYi9nY2Mv aml0L2ppdC1yZWNvcmRpbmcuY2MKQEAgLTIzODAsNiArMjM4MCwxOSBAQCByZWNvcmRpbmc6OnR5 cGU6OmdldF9jb25zdCAoKQogICByZXR1cm4gcmVzdWx0OwogfQogCisvKiBHaXZlbiBhIHR5cGUg VCwgZ2V0IHRoZSB0eXBlIHJlc3RyaWN0IFQuCisKKyAgIEltcGxlbWVudHMgdGhlIHBvc3QtZXJy b3ItY2hlY2tpbmcgcGFydCBvZgorICAgZ2NjX2ppdF90eXBlX2dldF9yZXN0cmljdC4gICovCisK K3JlY29yZGluZzo6dHlwZSAqCityZWNvcmRpbmc6OnR5cGU6OmdldF9yZXN0cmljdCAoKQorewor ICByZWNvcmRpbmc6OnR5cGUgKnJlc3VsdCA9IG5ldyBtZW1lbnRvX29mX2dldF9yZXN0cmljdCAo dGhpcyk7CisgIG1fY3R4dC0+cmVjb3JkIChyZXN1bHQpOworICByZXR1cm4gcmVzdWx0OworfQor CiAvKiBHaXZlbiBhIHR5cGUgVCwgZ2V0IHRoZSB0eXBlIHZvbGF0aWxlIFQuCiAKICAgIEltcGxl bWVudHMgdGhlIHBvc3QtZXJyb3ItY2hlY2tpbmcgcGFydCBvZgpAQCAtMzA5MCw2ICszMTAzLDQw IEBAIHJlY29yZGluZzo6bWVtZW50b19vZl9nZXRfdm9sYXRpbGU6OndyaXRlX3JlcHJvZHVjZXIg KHJlcHJvZHVjZXIgJnIpCiAJICAgci5nZXRfaWRlbnRpZmllcl9hc190eXBlIChtX290aGVyX3R5 cGUpKTsKIH0KIAorLyogVGhlIGltcGxlbWVudGF0aW9uIG9mIGNsYXNzIGdjYzo6aml0OjpyZWNv cmRpbmc6Om1lbWVudG9fb2ZfZ2V0X3Jlc3RyaWN0LiAgKi8KKworLyogSW1wbGVtZW50YXRpb24g b2YgcHVyZSB2aXJ0dWFsIGhvb2sgcmVjb3JkaW5nOjptZW1lbnRvOjpyZXBsYXlfaW50bworICAg Zm9yIHJlY29yZGluZzo6bWVtZW50b19vZl9nZXRfcmVzdHJpY3QuICAqLworCit2b2lkCityZWNv cmRpbmc6Om1lbWVudG9fb2ZfZ2V0X3Jlc3RyaWN0OjpyZXBsYXlfaW50byAocmVwbGF5ZXIgKikK K3sKKyAgc2V0X3BsYXliYWNrX29iaiAobV9vdGhlcl90eXBlLT5wbGF5YmFja190eXBlICgpLT5n ZXRfcmVzdHJpY3QgKCkpOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiByZWNvcmRpbmc6Om1l bWVudG86Om1ha2VfZGVidWdfc3RyaW5nIGZvcgorICAgcmVzdWx0cyBvZiBnZXRfcmVzdHJpY3Qs IHByZXBlbmRpbmcgInJlc3RyaWN0ICIuICAqLworCityZWNvcmRpbmc6OnN0cmluZyAqCityZWNv cmRpbmc6Om1lbWVudG9fb2ZfZ2V0X3Jlc3RyaWN0OjptYWtlX2RlYnVnX3N0cmluZyAoKQorewor ICByZXR1cm4gc3RyaW5nOjpmcm9tX3ByaW50ZiAobV9jdHh0LAorCQkJICAgICAgInJlc3RyaWN0 ICVzIiwgbV9vdGhlcl90eXBlLT5nZXRfZGVidWdfc3RyaW5nICgpKTsKK30KKworLyogSW1wbGVt ZW50YXRpb24gb2YgcmVjb3JkaW5nOjptZW1lbnRvOjp3cml0ZV9yZXByb2R1Y2VyIGZvciByZXN0 cmljdAorICAgdHlwZXMuICovCisKK3ZvaWQKK3JlY29yZGluZzo6bWVtZW50b19vZl9nZXRfcmVz dHJpY3Q6OndyaXRlX3JlcHJvZHVjZXIgKHJlcHJvZHVjZXIgJnIpCit7CisgIGNvbnN0IGNoYXIg KmlkID0gci5tYWtlX2lkZW50aWZpZXIgKHRoaXMsICJ0eXBlIik7CisgIHIud3JpdGUgKCIgIGdj Y19qaXRfdHlwZSAqJXMgPVxuIgorCSAgICIgICAgZ2NjX2ppdF90eXBlX2dldF9yZXN0cmljdCAo JXMpO1xuIiwKKwkgICBpZCwKKwkgICByLmdldF9pZGVudGlmaWVyX2FzX3R5cGUgKG1fb3RoZXJf dHlwZSkpOworfQorCiAvKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgY2xhc3MgZ2NjOjpqaXQ6OnJl Y29yZGluZzo6bWVtZW50b19vZl9nZXRfYWxpZ25lZC4gICovCiAKIC8qIEltcGxlbWVudGF0aW9u IG9mIHB1cmUgdmlydHVhbCBob29rIHJlY29yZGluZzo6bWVtZW50bzo6cmVwbGF5X2ludG8KZGlm ZiAtLWdpdCBhL2djYy9qaXQvaml0LXJlY29yZGluZy5oIGIvZ2NjL2ppdC9qaXQtcmVjb3JkaW5n LmgKaW5kZXggOTI5YmJlMzdjM2YuLjFhZmYyMmZmNjg5IDEwMDY0NAotLS0gYS9nY2Mvaml0L2pp dC1yZWNvcmRpbmcuaAorKysgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuaApAQCAtNTU1LDYgKzU1 NSw3IEBAIHB1YmxpYzoKICAgdHlwZSAqZ2V0X3BvaW50ZXIgKCk7CiAgIHR5cGUgKmdldF9jb25z dCAoKTsKICAgdHlwZSAqZ2V0X3ZvbGF0aWxlICgpOworICB0eXBlICpnZXRfcmVzdHJpY3QgKCk7 CiAgIHR5cGUgKmdldF9hbGlnbmVkIChzaXplX3QgYWxpZ25tZW50X2luX2J5dGVzKTsKICAgdHlw ZSAqZ2V0X3ZlY3RvciAoc2l6ZV90IG51bV91bml0cyk7CiAKQEAgLTYwMyw2ICs2MDQsNyBAQCBw dWJsaWM6CiAgIHZpcnR1YWwgYm9vbCBpc19ib29sICgpIGNvbnN0ID0gMDsKICAgdmlydHVhbCB0 eXBlICppc19wb2ludGVyICgpID0gMDsKICAgdmlydHVhbCB0eXBlICppc192b2xhdGlsZSAoKSB7 IHJldHVybiBOVUxMOyB9CisgIHZpcnR1YWwgdHlwZSAqaXNfcmVzdHJpY3QgKCkgeyByZXR1cm4g TlVMTDsgfQogICB2aXJ0dWFsIHR5cGUgKmlzX2NvbnN0ICgpIHsgcmV0dXJuIE5VTEw7IH0KICAg dmlydHVhbCB0eXBlICppc19hcnJheSAoKSA9IDA7CiAgIHZpcnR1YWwgc3RydWN0XyAqaXNfc3Ry dWN0ICgpIHsgcmV0dXJuIE5VTEw7IH0KQEAgLTczNyw3ICs3MzksNyBAQCBwcml2YXRlOgogfTsK IAogLyogQSBkZWNvcmF0ZWQgdmVyc2lvbiBvZiBhIHR5cGUsIGZvciBnZXRfY29uc3QsIGdldF92 b2xhdGlsZSwKLSAgIGdldF9hbGlnbmVkLCBhbmQgZ2V0X3ZlY3Rvci4gICovCisgICBnZXRfYWxp Z25lZCwgZ2V0X3Jlc3RyaWN0LCBhbmQgZ2V0X3ZlY3Rvci4gICovCiAKIGNsYXNzIGRlY29yYXRl ZF90eXBlIDogcHVibGljIHR5cGUKIHsKQEAgLTgyOSw2ICs4MzEsMzkgQEAgcHJpdmF0ZToKICAg dm9pZCB3cml0ZV9yZXByb2R1Y2VyIChyZXByb2R1Y2VyICZyKSBmaW5hbCBvdmVycmlkZTsKIH07 CiAKKy8qIFJlc3VsdCBvZiAiZ2NjX2ppdF90eXBlX2dldF9yZXN0cmljdCIuICAqLworY2xhc3Mg bWVtZW50b19vZl9nZXRfcmVzdHJpY3QgOiBwdWJsaWMgZGVjb3JhdGVkX3R5cGUKK3sKK3B1Ymxp YzoKKyAgbWVtZW50b19vZl9nZXRfcmVzdHJpY3QgKHR5cGUgKm90aGVyX3R5cGUpCisgIDogZGVj b3JhdGVkX3R5cGUgKG90aGVyX3R5cGUpIHt9CisKKyAgYm9vbCBpc19zYW1lX3R5cGVfYXMgKHR5 cGUgKm90aGVyKSBmaW5hbCBvdmVycmlkZQorICB7CisgICAgaWYgKCFvdGhlci0+aXNfcmVzdHJp Y3QgKCkpCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fb3RoZXJfdHlwZS0+aXNf c2FtZV90eXBlX2FzIChvdGhlci0+aXNfcmVzdHJpY3QgKCkpOworICB9CisKKyAgdHlwZSogY29w eShjb250ZXh0KiBjdHh0KSBmaW5hbCBvdmVycmlkZQorICB7CisgICAgdHlwZSogcmVzdWx0ID0g bmV3IG1lbWVudG9fb2ZfZ2V0X3Jlc3RyaWN0IChtX290aGVyX3R5cGUtPmNvcHkgKGN0eHQpKTsK KyAgICBjdHh0LT5yZWNvcmQgKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisg IC8qIFN0cmlwIG9mZiB0aGUgInJlc3RyaWN0IiwgZ2l2aW5nIHRoZSB1bmRlcmx5aW5nIHR5cGUu ICAqLworICB0eXBlICp1bnF1YWxpZmllZCAoKSBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBtX290 aGVyX3R5cGU7IH0KKworICB0eXBlICppc19yZXN0cmljdCAoKSBmaW5hbCBvdmVycmlkZSB7IHJl dHVybiBtX290aGVyX3R5cGU7IH0KKworICB2b2lkIHJlcGxheV9pbnRvIChyZXBsYXllciAqKSBm aW5hbCBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgc3RyaW5nICogbWFrZV9kZWJ1Z19zdHJpbmcg KCkgZmluYWwgb3ZlcnJpZGU7CisgIHZvaWQgd3JpdGVfcmVwcm9kdWNlciAocmVwcm9kdWNlciAm cikgZmluYWwgb3ZlcnJpZGU7Cit9OworCiAvKiBSZXN1bHQgb2YgImdjY19qaXRfdHlwZV9nZXRf YWxpZ25lZCIuICAqLwogY2xhc3MgbWVtZW50b19vZl9nZXRfYWxpZ25lZCA6IHB1YmxpYyBkZWNv cmF0ZWRfdHlwZQogewpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQrKy5oIGIvZ2NjL2pp dC9saWJnY2NqaXQrKy5oCmluZGV4IDRiODhlODc3YmM5Li5iNDMwZjdlYjA0OSAxMDA2NDQKLS0t IGEvZ2NjL2ppdC9saWJnY2NqaXQrKy5oCisrKyBiL2djYy9qaXQvbGliZ2Njaml0KysuaApAQCAt MTQxMCw2ICsxNDEwLDEyIEBAIHR5cGU6OmdldF9jb25zdCAoKQogICByZXR1cm4gdHlwZSAoZ2Nj X2ppdF90eXBlX2dldF9jb25zdCAoZ2V0X2lubmVyX3R5cGUgKCkpKTsKIH0KIAoraW5saW5lIHR5 cGUKK3R5cGU6OmdldF9yZXN0cmljdCAoKQoreworICByZXR1cm4gdHlwZSAoZ2NjX2ppdF90eXBl X2dldF9yZXN0cmljdCAoZ2V0X2lubmVyX3R5cGUgKCkpKTsKK30KKwogaW5saW5lIHR5cGUKIHR5 cGU6OmdldF92b2xhdGlsZSAoKQogewpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9saWJnY2NqaXQuY2Mg Yi9nY2Mvaml0L2xpYmdjY2ppdC5jYwppbmRleCAwNTBlNjhiNzM4Yy4uOWI4N2UwNTY5ZDYgMTAw NjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0LmNjCisrKyBiL2djYy9qaXQvbGliZ2Njaml0LmNj CkBAIC01MzksNiArNTM5LDIwIEBAIGdjY19qaXRfdHlwZV9nZXRfdm9sYXRpbGUgKGdjY19qaXRf dHlwZSAqdHlwZSkKICAgcmV0dXJuIChnY2Nfaml0X3R5cGUgKil0eXBlLT5nZXRfdm9sYXRpbGUg KCk7CiB9CiAKKy8qIFB1YmxpYyBlbnRyeXBvaW50LiAgU2VlIGRlc2NyaXB0aW9uIGluIGxpYmdj Y2ppdC5oLgorCisgICBBZnRlciBlcnJvci1jaGVja2luZywgdGhlIHJlYWwgd29yayBpcyBkb25l IGJ5IHRoZQorICAgZ2NjOjpqaXQ6OnJlY29yZGluZzo6dHlwZTo6Z2V0X3Jlc3RyaWN0IG1ldGhv ZCwgaW4KKyAgIGppdC1yZWNvcmRpbmcuY2MuICAqLworCitnY2Nfaml0X3R5cGUgKgorZ2NjX2pp dF90eXBlX2dldF9yZXN0cmljdCAoZ2NjX2ppdF90eXBlICp0eXBlKQoreworICBSRVRVUk5fTlVM TF9JRl9GQUlMICh0eXBlLCBOVUxMLCBOVUxMLCAiTlVMTCB0eXBlIik7CisKKyAgcmV0dXJuIChn Y2Nfaml0X3R5cGUgKil0eXBlLT5nZXRfcmVzdHJpY3QgKCk7Cit9CisKIC8qIFB1YmxpYyBlbnRy eXBvaW50LiAgU2VlIGRlc2NyaXB0aW9uIGluIGxpYmdjY2ppdC5oLgogCiAgICBBZnRlciBlcnJv ci1jaGVja2luZywgdGhlIHJlYWwgd29yayBpcyBkb25lIGJ5IHRoZQpkaWZmIC0tZ2l0IGEvZ2Nj L2ppdC9saWJnY2NqaXQuaCBiL2djYy9qaXQvbGliZ2Njaml0LmgKaW5kZXggNjBlYWYzOWJmZjYu LjJlMGQwOGEwNmQ4IDEwMDY0NAotLS0gYS9nY2Mvaml0L2xpYmdjY2ppdC5oCisrKyBiL2djYy9q aXQvbGliZ2Njaml0LmgKQEAgLTYzNSw2ICs2MzUsMTAgQEAgZ2NjX2ppdF90eXBlX2dldF9jb25z dCAoZ2NjX2ppdF90eXBlICp0eXBlKTsKIGV4dGVybiBnY2Nfaml0X3R5cGUgKgogZ2NjX2ppdF90 eXBlX2dldF92b2xhdGlsZSAoZ2NjX2ppdF90eXBlICp0eXBlKTsKIAorLyogR2l2ZW4gdHlwZSAi VCIsIGdldCB0eXBlICJyZXN0cmljdCBUIi4gICovCitleHRlcm4gZ2NjX2ppdF90eXBlICoKK2dj Y19qaXRfdHlwZV9nZXRfcmVzdHJpY3QgKGdjY19qaXRfdHlwZSAqdHlwZSk7CisKICNkZWZpbmUg TElCR0NDSklUX0hBVkVfU0laRURfSU5URUdFUlMKIAogLyogR2l2ZW4gdHlwZXMgTFRZUEUgYW5k IFJUWVBFLCByZXR1cm4gbm9uLXplcm8gaWYgdGhleSBhcmUgY29tcGF0aWJsZS4KZGlmZiAtLWdp dCBhL2djYy9qaXQvbGliZ2Njaml0Lm1hcCBiL2djYy9qaXQvbGliZ2Njaml0Lm1hcAppbmRleCBl NTJkZTAwNTdhNS4uYjcyODliMTM4NDUgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0Lm1h cAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5tYXAKQEAgLTEwNCw2ICsxMDQsNyBAQCBMSUJHQ0NK SVRfQUJJXzAKICAgICBnY2Nfaml0X3R5cGVfYXNfb2JqZWN0OwogICAgIGdjY19qaXRfdHlwZV9n ZXRfY29uc3Q7CiAgICAgZ2NjX2ppdF90eXBlX2dldF9wb2ludGVyOworICAgIGdjY19qaXRfdHlw ZV9nZXRfcmVzdHJpY3Q7CiAgICAgZ2NjX2ppdF90eXBlX2dldF92b2xhdGlsZTsKIAogICBsb2Nh bDogKjsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtcmVzdHJpY3QuYyBi L2djYy90ZXN0c3VpdGUvaml0LmRnL3Rlc3QtcmVzdHJpY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uNGM4YzQ0MDdmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2Mv dGVzdHN1aXRlL2ppdC5kZy90ZXN0LXJlc3RyaWN0LmMKQEAgLTAsMCArMSw3NyBAQAorLyogeyBk Zy1kbyBjb21waWxlIHsgdGFyZ2V0IHg4Nl82NC0qLSogfSB9ICovCisKKyNpbmNsdWRlIDxzdGRs aWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAibGliZ2Njaml0LmgiCisKKy8q IFdlIGRvbid0IHdhbnQgc2V0X29wdGlvbnMoKSBpbiBoYXJuZXNzLmggdG8gc2V0IC1PMyB0byBz ZWUgdGhhdCB0aGUgY29sZAorCSBhdHRyaWJ1dGUgYWZmZWN0cyB0aGUgb3B0aW1pemF0aW9ucy4g Ki8KKyNkZWZpbmUgVEVTVF9FU0NIRVdTX1NFVF9PUFRJT05TCitzdGF0aWMgdm9pZCBzZXRfb3B0 aW9ucyAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBjb25zdCBjaGFyICphcmd2MCkKK3sKKwkvLyBT ZXQgIi1PMyIuCisJZ2NjX2ppdF9jb250ZXh0X3NldF9pbnRfb3B0aW9uKGN0eHQsIEdDQ19KSVRf SU5UX09QVElPTl9PUFRJTUlaQVRJT05fTEVWRUwsIDMpOworfQorCisjZGVmaW5lIFRFU1RfQ09N UElMSU5HX1RPX0ZJTEUKKyNkZWZpbmUgT1VUUFVUX0tJTkQgICAgICBHQ0NfSklUX09VVFBVVF9L SU5EX0FTU0VNQkxFUgorI2RlZmluZSBPVVRQVVRfRklMRU5BTUUgICJvdXRwdXQtb2YtdGVzdC1y ZXN0cmljdC5jLnMiCisjaW5jbHVkZSAiaGFybmVzcy5oIgorCit2b2lkCitjcmVhdGVfY29kZSAo Z2NjX2ppdF9jb250ZXh0ICpjdHh0LCB2b2lkICp1c2VyX2RhdGEpCit7CisJLyogTGV0J3MgdHJ5 IHRvIGluamVjdCB0aGUgZXF1aXZhbGVudCBvZjoKK3ZvaWQgdChpbnQgKl9fcmVzdHJpY3RfXyBh LCBpbnQgKl9fcmVzdHJpY3RfXyBiLCBjaGFyICpfX3Jlc3RyaWN0X18gYykgeworCSphICs9ICpj OworCSpiICs9ICpjOworfQorCSovCisJZ2NjX2ppdF90eXBlICppbnRfdHlwZSA9CisJCWdjY19q aXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJVF9UWVBFX0lOVCk7CisJZ2NjX2ppdF90 eXBlICpwaW50X3R5cGUgPSBnY2Nfaml0X3R5cGVfZ2V0X3BvaW50ZXIoaW50X3R5cGUpOworCWdj Y19qaXRfdHlwZSAqcGludF9yZXN0cmljdF90eXBlID0gZ2NjX2ppdF90eXBlX2dldF9yZXN0cmlj dChwaW50X3R5cGUpOworCisJZ2NjX2ppdF90eXBlICp2b2lkX3R5cGUgPQorCQlnY2Nfaml0X2Nv bnRleHRfZ2V0X3R5cGUgKGN0eHQsIEdDQ19KSVRfVFlQRV9WT0lEKTsKKworCWdjY19qaXRfcGFy YW0gKmEgPQorCQlnY2Nfaml0X2NvbnRleHRfbmV3X3BhcmFtIChjdHh0LCBOVUxMLCBwaW50X3Jl c3RyaWN0X3R5cGUsICJhIik7CisJZ2NjX2ppdF9wYXJhbSAqYiA9CisJCWdjY19qaXRfY29udGV4 dF9uZXdfcGFyYW0gKGN0eHQsIE5VTEwsIHBpbnRfcmVzdHJpY3RfdHlwZSwgImIiKTsKKwlnY2Nf aml0X3BhcmFtICpjID0KKwkJZ2NjX2ppdF9jb250ZXh0X25ld19wYXJhbSAoY3R4dCwgTlVMTCwg cGludF9yZXN0cmljdF90eXBlLCAiYyIpOworCWdjY19qaXRfcGFyYW0gKnBhcmFtc1szXSA9IHth LCBiLCBjfTsKKworCWdjY19qaXRfZnVuY3Rpb24gKmZ1bmNfdCA9CisJCWdjY19qaXRfY29udGV4 dF9uZXdfZnVuY3Rpb24gKGN0eHQsIE5VTEwsCisJCQkJCUdDQ19KSVRfRlVOQ1RJT05fRVhQT1JU RUQsCisJCQkJCXZvaWRfdHlwZSwKKwkJCQkJInQiLAorCQkJCQkzLCBwYXJhbXMsCisJCQkJCTAp OworCisJZ2NjX2ppdF9ibG9jayAqYmxvY2sgPSBnY2Nfaml0X2Z1bmN0aW9uX25ld19ibG9jayAo ZnVuY190LCBOVUxMKTsKKworCS8qICphICs9ICpjOyAqLworCWdjY19qaXRfYmxvY2tfYWRkX2Fz c2lnbm1lbnRfb3AgKAorCQlibG9jaywgTlVMTCwKKwkJZ2NjX2ppdF9ydmFsdWVfZGVyZWZlcmVu Y2UgKGdjY19qaXRfcGFyYW1fYXNfcnZhbHVlIChhKSwgTlVMTCksCisJCUdDQ19KSVRfQklOQVJZ X09QX1BMVVMsCisJCWdjY19qaXRfbHZhbHVlX2FzX3J2YWx1ZSAoCisJCQlnY2Nfaml0X3J2YWx1 ZV9kZXJlZmVyZW5jZSAoZ2NjX2ppdF9wYXJhbV9hc19ydmFsdWUgKGMpLCBOVUxMKSkpOworCS8q ICpiICs9ICpjOyAqLworCWdjY19qaXRfYmxvY2tfYWRkX2Fzc2lnbm1lbnRfb3AgKAorCQlibG9j aywgTlVMTCwKKwkJZ2NjX2ppdF9ydmFsdWVfZGVyZWZlcmVuY2UgKGdjY19qaXRfcGFyYW1fYXNf cnZhbHVlIChiKSwgTlVMTCksCisJCUdDQ19KSVRfQklOQVJZX09QX1BMVVMsCisJCWdjY19qaXRf bHZhbHVlX2FzX3J2YWx1ZSAoCisJCQlnY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZSAoZ2NjX2pp dF9wYXJhbV9hc19ydmFsdWUgKGMpLCBOVUxMKSkpOworCisJZ2NjX2ppdF9ibG9ja19lbmRfd2l0 aF92b2lkX3JldHVybiAoYmxvY2ssIE5VTEwpOworfQorCisvKiB7IGRnLWZpbmFsIHsgaml0LXZl cmlmeS1vdXRwdXQtZmlsZS13YXMtY3JlYXRlZCAiIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBq aXQtdmVyaWZ5LWFzc2VtYmxlci1vdXRwdXQgImFkZGwJJWVheCwgKCVyZGkpCisJYWRkbAklZWF4 LCAoJXJzaSkiIH0gfSAqLwotLSAKMi4zNC4xCgo= --000000000000cd843106030cd684--