From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22e.google.com (mail-oi1-x22e.google.com [IPv6:2607:f8b0:4864:20::22e]) by sourceware.org (Postfix) with ESMTPS id 4ABCD3858D32 for ; Fri, 10 Feb 2023 05:42:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4ABCD3858D32 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-oi1-x22e.google.com with SMTP id n132so3620493oih.7 for ; Thu, 09 Feb 2023 21:42:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=hYbyw4Js319ceDGs2qzdpq00XQJB10uc4amWzqocADI=; b=D0NwXyMtf4fqaeyHYIwdJLe8ibc6bWE92i6i36QHHeFIVLh9aaQrqa4XjP4am8X9pi DmTPavIO1K0A3pL1VzO/b8g3qiER+eWh/Aym2W/+00wjvO6mFd/z6KwNTQzH6BsOQ4ei anb/u+1ANOCXi45pLLVo6I3DJ8yzwWk/Cj3kM7ay7cw+D9wv006zvtYg9njwEgsxgjj/ Burf0wbgcvJNnEPxP9nJkxPyRLZ5XhyZocK90M1a+iEOtUNef7Ywe+ICACJMPDRY8aIG KwLIEI8Tl7LqcYBiy3C4iVKldQBL6hsZvAqiZQXouLZEY4yaLtsU0uCeLoQkcVkuy0rt eiGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=hYbyw4Js319ceDGs2qzdpq00XQJB10uc4amWzqocADI=; b=tYRQ/nxyNSIzZ9V5vpJCxUrYGMM/+tX9+EBv4qYS0tFFzJ+Ca2whmMiMvKGFbUvVF3 xiBV+ShP3UPYrzFpmZf7G+ZKBoWkmG0pJEeFJyzrQo4EXPzC7nVdz2jnDrYqgB7g2bId daezYbWwMH1y1WGLWbz/ziBB6Hm1XQn8Ix2ZzwcmAqKBybHruLXpXsReb4DqaQJgKsps fj/6l0RZRMHCCcl0EJ3DVOkAj2cTyev3c60Wh6yynSWqW1paxRnFVKdQvivDGCTQVgYv kdeDJ++2YT1TEqUV3GYf6WgV/wx5nez/gntY+SqG5o6z0bZrMKf1qu/tg6HtrScX9jU+ Hefg== X-Gm-Message-State: AO0yUKUSkQVqdPAgGmJ1uvbcDtCc75vV9DVo0F2j5+8WZSXq5QMVvI9t r4cfIrLFmp8xuApALN+HZYjofv1MdNCu4eG2FQ7KYbQ5rBw= X-Google-Smtp-Source: AK7set879EKwKr1+qDx9rbyA601DeG6eDCIj9ROjGFuV/hg6uDNI4a0/gEfPwyrj/hcDJkB1AzWf3R8MtI3m3TjDXvI= X-Received: by 2002:a05:6808:482:b0:378:9226:3ce6 with SMTP id z2-20020a056808048200b0037892263ce6mr1256749oid.299.1676007771241; Thu, 09 Feb 2023 21:42:51 -0800 (PST) MIME-Version: 1.0 From: Rimvydas Jasinskas Date: Fri, 10 Feb 2023 07:42:47 +0200 Message-ID: Subject: Support for NOINLINE attribute To: fortran@gcc.gnu.org Content-Type: multipart/mixed; boundary="000000000000d8d6ff05f451f7c1" X-Spam-Status: No, score=-8.3 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: --000000000000d8d6ff05f451f7c1 Content-Type: text/plain; charset="UTF-8" Hello everyone, would it be possible to extend gfortran attribute support to handle NOINLINE too? Like: "!GCC$ ATTRIBUTES noinline :: ...". Recent testing with gcc-13 trunk uncovered several issues with LTO usage and for now it is unknown if it is host specific or something else. Given that there is little to no control from the fortran side to influence how lto1 backend handles symbol manipulations, such attribute (while not fixing root problems) would allow workaround compilation issues at source level, since most of LTO usage problems come from inlining and limits of resources available. While there, it would be handy to have support for NORETURN and WEAK attributes too. In one of the projects just adding 2 NORETURN comment pragmas into commonly used custom critical abort subroutine interfaces reduced the number of -Wmaybe-uninitialized diagnostics from 2867 to 2654. That is a huge reduction of pure false positives and results in smaller binaries produced. Explaining the need for the WEAK attribute is somewhat more complicated, when it is needed - it is needed (even if that means compiling to assembly intermediates and sed "/SYM/s/.globl/.weak/" which is quite fragile). Attached is a proof of concept patch with some test cases adapted mainly from already existing C testsuite variants and tested on x86_64. These additions are not intrusive and quite useful. I'm willing to help test/code to get NOINLINE support added, Best regards, Rimvydas --000000000000d8d6ff05f451f7c1 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fortran-Add-GCC-attributes-NOINLINE-NORETURN-WEAK.patch" Content-Disposition: attachment; filename="0001-Fortran-Add-GCC-attributes-NOINLINE-NORETURN-WEAK.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ldy35z7k0 RnJvbSA3YTE5NzYyM2MyZWZiMzBlNGVjZjc4Y2U2NTBiNjcyN2VlZjVlNjBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaW12eWRhcyBKYXNpbnNrYXMgPHJpbXZ5ZGFzLmphc0BnbWFp bC5jb20+CkRhdGU6IEZyaSwgMTAgRmViIDIwMjMgMDQ6MzQ6MTIgKzAwMDAKU3ViamVjdDogRm9y dHJhbjogQWRkICFHQ0MkIGF0dHJpYnV0ZXMgTk9JTkxJTkUsTk9SRVRVUk4sV0VBSwoKZ2NjL2Zv cnRyYW4vQ2hhbmdlTG9nOgoKCSogZGVjbC5jYzogQWRkIEVYVF9BVFRSX05PSU5MSU5FLCBFWFRf QVRUUl9OT1JFVFVSTiwgRVhUX0FUVFJfV0VBSy4KCSogZ2ZvcnRyYW4uaCAoZXh0X2F0dHJfaWRf dCk6IERpdHRvLgoJKiBnZm9ydHJhbi50ZXhpIChHQ0MkIEFUVFJJQlVURVMpOiBEb2N1bWVudCB0 aGVtLgoJKiB0cmFucy1kZWNsLmNjIChidWlsZF9mdW5jdGlvbl9kZWNsKTogQXBwbHkgdGhlbS4K CmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogZ2ZvcnRyYW4uZGcvbm9pbmxpbmUuZjkwOiBO ZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tMS5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9y dHJhbi5kZy9ub3JldHVybi0yLmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL25vcmV0dXJu LTMuZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tNC5mOTA6IE5ldyB0ZXN0 LgoJKiBnZm9ydHJhbi5kZy9ub3JldHVybi01LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRn L3dlYWstMS5mOTA6IE5ldyB0ZXN0LgoKU2lnbmVkLW9mZi1ieTogUmltdnlkYXMgSmFzaW5za2Fz IDxyaW12eWRhcy5qYXNAZ21haWwuY29tPgotLS0KIGdjYy9mb3J0cmFuL2RlY2wuY2MgICAgICAg ICAgICAgICAgICAgICAgfCAgMyArKwogZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCAgICAgICAgICAg ICAgICAgICB8ICAzICsrCiBnY2MvZm9ydHJhbi9nZm9ydHJhbi50ZXhpICAgICAgICAgICAgICAg IHwgIDkgKysrKysKIGdjYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MgICAgICAgICAgICAgICAgfCAx OSArKysrKysrKystCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vaW5saW5lLmY5MCAgIHwg MjMgKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTEuZjkw IHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2Zv cnRyYW4uZGcvbm9yZXR1cm4tMi5mOTAgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysK IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tMy5mOTAgfCAxNCArKysrKysrKwog Z2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub3JldHVybi00LmY5MCB8IDExICsrKysrKwogZ2Nj L3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub3JldHVybi01LmY5MCB8ICA5ICsrKysrCiBnY2MvdGVz dHN1aXRlL2dmb3J0cmFuLmRnL3dlYWstMS5mOTAgICAgIHwgIDYgKysrKwogMTEgZmlsZXMgY2hh bmdlZCwgMjExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vaW5saW5lLmY5MAogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tMS5mOTAKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTIuZjkwCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub3JldHVybi0zLmY5MAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tNC5mOTAK IGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTUu ZjkwCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy93ZWFrLTEu ZjkwCgpkaWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZGVjbC5jYyBiL2djYy9mb3J0cmFuL2RlY2wu Y2MKaW5kZXggMjdiNzI4ZmY1NTEuLmVlYzAzMTRjZjRjIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJh bi9kZWNsLmNjCisrKyBiL2djYy9mb3J0cmFuL2RlY2wuY2MKQEAgLTExNzMyLDYgKzExNzMyLDkg QEAgY29uc3QgZXh0X2F0dHJfdCBleHRfYXR0cl9saXN0W10gPSB7CiAgIHsgImZhc3RjYWxsIiwg ICAgIEVYVF9BVFRSX0ZBU1RDQUxMLCAgICAgImZhc3RjYWxsIiAgfSwKICAgeyAibm9fYXJnX2No ZWNrIiwgRVhUX0FUVFJfTk9fQVJHX0NIRUNLLCBOVUxMICAgICAgICB9LAogICB7ICJkZXByZWNh dGVkIiwgICBFWFRfQVRUUl9ERVBSRUNBVEVELCAgIE5VTEwJICAgICAgIH0sCisgIHsgIm5vaW5s aW5lIiwgICAgIEVYVF9BVFRSX05PSU5MSU5FLCAgICAgTlVMTAkgICAgICAgfSwKKyAgeyAibm9y ZXR1cm4iLCAgICAgRVhUX0FUVFJfTk9SRVRVUk4sICAgICBOVUxMCSAgICAgICB9LAorICB7ICJ3 ZWFrIiwJICAgIEVYVF9BVFRSX1dFQUssCSAgIE5VTEwJICAgICAgIH0sCiAgIHsgTlVMTCwgICAg ICAgICAgIEVYVF9BVFRSX0xBU1QsICAgICAgICAgTlVMTCAgICAgICAgfQogfTsKIApkaWZmIC0t Z2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKaW5k ZXggOTg4NGE1NTg4MmIuLmE4OTNlZTA2ZjNkIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9nZm9y dHJhbi5oCisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKQEAgLTgzOCw2ICs4MzgsOSBAQCB0 eXBlZGVmIGVudW0KICAgRVhUX0FUVFJfRkFTVENBTEwsCiAgIEVYVF9BVFRSX05PX0FSR19DSEVD SywKICAgRVhUX0FUVFJfREVQUkVDQVRFRCwKKyAgRVhUX0FUVFJfTk9JTkxJTkUsCisgIEVYVF9B VFRSX05PUkVUVVJOLAorICBFWFRfQVRUUl9XRUFLLAogICBFWFRfQVRUUl9MQVNULCBFWFRfQVRU Ul9OVU0gPSBFWFRfQVRUUl9MQVNUCiB9CiBleHRfYXR0cl9pZF90OwpkaWZmIC0tZ2l0IGEvZ2Nj L2ZvcnRyYW4vZ2ZvcnRyYW4udGV4aSBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLnRleGkKaW5kZXgg YzM4MTNkMDZjMjAuLjRkN2Y0ZGJkN2Q4IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi9nZm9ydHJh bi50ZXhpCisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLnRleGkKQEAgLTMyNDYsNiArMzI0Niwx NSBAQCByZXF1aXJlcyBhbiBleHBsaWNpdCBpbnRlcmZhY2UuCiBAaXRlbSBAY29kZXtERVBSRUNB VEVEfSAtLSBwcmludCBhIHdhcm5pbmcgd2hlbiB1c2luZyBhIHN1Y2gtdGFnZ2VkCiBkZXByZWNh dGVkIHByb2NlZHVyZSwgdmFyaWFibGUgb3IgcGFyYW1ldGVyOyB0aGUgd2FybmluZyBjYW4gYmUg c3VwcHJlc3NlZAogd2l0aCBAb3B0aW9uey1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnN9Lgor QGl0ZW0gQGNvZGV7Tk9JTkxJTkV9IC0tIHByZXZlbnQgaW5saW5pbmcgZ2l2ZW4gZnVuY3Rpb24u CitAaXRlbSBAY29kZXtOT1JFVFVSTn0gLS0gYWRkIGhpbnQgdGhhdCBnaXZlbiBmdW5jdGlvbiBj YW5ub3QgcmV0dXJuLiAgVGhpcworbWFrZXMgc2xpZ2h0bHkgYmV0dGVyIGNvZGUuICBNb3JlIGlt cG9ydGFudGx5LCBpdCBoZWxwcyBhdm9pZCBzcHVyaW91cyB3YXJuaW5ncworb2YgdW5pbml0aWFs aXplZCB2YXJpYWJsZXMuCitAaXRlbSBAY29kZXtXRUFLfSAtLSBlbWl0IHRoZSBkZWNsYXJhdGlv biBvZiBhbiBleHRlcm5hbCBzeW1ib2wgYXMgYSB3ZWFrCitzeW1ib2wgcmF0aGVyIHRoYW4gYSBn bG9iYWwuICBUaGlzIGlzIHByaW1hcmlseSB1c2VmdWwgaW4gZGVmaW5pbmcgbGlicmFyeQorZnVu Y3Rpb25zIHRoYXQgY2FuIGJlIG92ZXJyaWRkZW4gaW4gdXNlciBjb2RlLCB0aG91Z2ggaXQgY2Fu IGFsc28gYmUgdXNlZCB3aXRoCitub24tZnVuY3Rpb24gZGVjbGFyYXRpb25zLiAgVGhlIG92ZXJy aWRpbmcgc3ltYm9sIG11c3QgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzCit0aGUgd2VhayBzeW1ib2wu CiBAZW5kIGl0ZW1pemUKIAogCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1kZWNsLmNj IGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYwppbmRleCBmN2E3ZmY2MDdjZC4uNjc5OWQ4NzE1 OGYgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MKKysrIGIvZ2NjL2ZvcnRy YW4vdHJhbnMtZGVjbC5jYwpAQCAtMjMzOCw3ICsyMzM4LDcgQEAgbW9kdWxlX3N5bToKICAgICB9 CiAKICAgLyogTWFyayBub24tcmV0dXJuaW5nIGZ1bmN0aW9ucy4gICovCi0gIGlmIChzeW0tPmF0 dHIubm9yZXR1cm4pCisgIGlmIChzeW0tPmF0dHIubm9yZXR1cm4gfHwgc3ltLT5hdHRyLmV4dF9h dHRyICYgKDEgPDwgRVhUX0FUVFJfTk9SRVRVUk4pKQogICAgICAgVFJFRV9USElTX1ZPTEFUSUxF KGZuZGVjbCkgPSAxOwogCiAgIHN5bS0+YmFja2VuZF9kZWNsID0gZm5kZWNsOwpAQCAtMjQ4Miw2 ICsyNDgyLDIzIEBAIGJ1aWxkX2Z1bmN0aW9uX2RlY2wgKGdmY19zeW1ib2wgKiBzeW0sIGJvb2wg Z2xvYmFsKQogICAgICAgVFJFRV9TSURFX0VGRkVDVFMgKGZuZGVjbCkgPSAwOwogICAgIH0KIAor ICAvKiBNYXJrIG5vaW5saW5lIGZ1bmN0aW9ucy4gICovCisgIGlmIChhdHRyLmV4dF9hdHRyICYg KDEgPDwgRVhUX0FUVFJfTk9JTkxJTkUpKQorICAgICAgREVDTF9VTklOTElOQUJMRSAoZm5kZWNs KSA9IDE7CisKKyAgLyogTWFyayBub3JldHVybiBmdW5jdGlvbnMuICAqLworICBpZiAoYXR0ci5l eHRfYXR0ciAmICgxIDw8IEVYVF9BVFRSX05PUkVUVVJOKSkKKyAgICAgIFRSRUVfVEhJU19WT0xB VElMRSAoZm5kZWNsKSA9IDE7CisKKyAgLyogTWFyayB3ZWFrIGZ1bmN0aW9ucy4gICovCisgIGlm IChhdHRyLmV4dF9hdHRyICYgKDEgPDwgRVhUX0FUVFJfV0VBSykpCisgICAgeworICAgICAgaWYg KFNVUFBPUlRTX1dFQUspCisJZGVjbGFyZV93ZWFrIChmbmRlY2wpOworICAgICAgZWxzZQorCWdm Y19mYXRhbF9lcnJvciAoIndlYWsgZGVjbGFyYXRpb25zIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0 YXJnZXQiKTsKKworICAgIH0KIAogICAvKiBMYXlvdXQgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9u IGFuZCBwdXQgaXQgaW4gdGhlIGJpbmRpbmcgbGV2ZWwKICAgICAgb2YgdGhlIGN1cnJlbnQgZnVu Y3Rpb24uICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub2lubGlu ZS5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vaW5saW5lLmY5MApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWRhZTcyZWE1ZWIKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vaW5saW5lLmY5MApAQCAtMCwwICsxLDIz IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAiLU8yIC1mZHVtcC10cmVl LWRvbTIiIH0KKworc3Vicm91dGluZSBiYXIobixtLHAscykKK2ltcGxpY2l0IG5vbmUKK2ludGVn ZXIgOjogbixtCityZWFsLGludGVudChpbm91dCkgOjogcChuKSxzKCopCitjYWxsIGZvbyhuLG0s cCxzKQorY2FsbCBmb28obixtLHAscykKK2VuZCBzdWJyb3V0aW5lIGJhcgorCitzdWJyb3V0aW5l IGZvbyhuLG0scCxiKQoraW1wbGljaXQgbm9uZQoraW50ZWdlciA6OiBuLG0sagorcmVhbCxpbnRl bnQoaW5vdXQpIDo6IHAobiksYigqKQorIUdDQyQgQVRUUklCVVRFUyBub2lubGluZSA6OiBmb28K K2RvIGo9MSxuCisgIGIobStqLTEpPXAoaikKK2VuZGRvCittPW0rbgorZW5kIHN1YnJvdXRpbmUg Zm9vCisKKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJmb28gXFwoIiA0ICJk b20yIn0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub3JldHVybi0x LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tMS5mOTAKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMxNTVjZGYyMmFhCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub3JldHVybi0xLmY5MApAQCAtMCwwICsx LDYyIEBACishIENoZWNrIGZvciB2YXJpb3VzIHZhbGlkIGFuZCBlcnJvbmVvdXMgIm5vcmV0dXJu IiBjYXNlcy4KKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRpb25zICItTzIiIH0KKwor bW9kdWxlIGJhcmJhcgorIUdDQyQgQVRUUklCVVRFUyBub3JldHVybiA6OiBiYXIxCitjb250YWlu cworc3Vicm91dGluZSBiYXIxCitlbmQgc3Vicm91dGluZSBiYXIxICEgeyBkZy13YXJuaW5nICIn bm9yZXR1cm4nIGZ1bmN0aW9uIGRvZXMgcmV0dXJuIiAiZGV0ZWN0IGZhbGxpbmcgb2ZmIGVuZCBv ZiBub3JldHVybiIgfQorZW5kIG1vZHVsZQorCitzdWJyb3V0aW5lIGZvbzEKKyFHQ0MkIEFUVFJJ QlVURVMgbm9yZXR1cm4gOjogZm9vMQorZW5kIHN1YnJvdXRpbmUgZm9vMSAhIHsgZGctd2Fybmlu ZyAiJ25vcmV0dXJuJyBmdW5jdGlvbiBkb2VzIHJldHVybiIgImRldGVjdCBmYWxsaW5nIG9mZiBl bmQgb2Ygbm9yZXR1cm4iIH0KKworc3Vicm91dGluZSBmb28yCishR0NDJCBBVFRSSUJVVEVTIG5v cmV0dXJuIDo6IGZvbzIKK2NhbGwgZXhpdCgwKQorZW5kIHN1YnJvdXRpbmUgZm9vMiAhIHsgZGct Ym9ndXMgIndhcm5pbmc6IiAidGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGdldCBhbnkgd2Fybmlu Z3MiIH0KKworc3Vicm91dGluZSBmb28zCitlbmQgc3Vicm91dGluZSBmb28zICEgeyBkZy1ib2d1 cyAid2FybmluZzoiICJ0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZ2V0IGFueSB3YXJuaW5ncyIg fQorCitzdWJyb3V0aW5lIGZvbzQKKyFHQ0MkIEFUVFJJQlVURVMgbm9yZXR1cm4gOjogZm9vNAor Y2FsbCBmb28yKCkKK2VuZCBzdWJyb3V0aW5lIGZvbzQgISB7IGRnLWJvZ3VzICJ3YXJuaW5nOiIg InRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBnZXQgYW55IHdhcm5pbmdzIiB9CisKK3N1YnJvdXRp bmUgZm9vNQorIUdDQyQgQVRUUklCVVRFUyBub3JldHVybiA6OiBmb281CityZXR1cm4gICAgICAg ICAgICAgICEgeyBkZy13YXJuaW5nICInbm9yZXR1cm4nIGZ1bmN0aW9uIGRvZXMgcmV0dXJuIiAi ZGV0ZWN0IGludmFsaWQgcmV0dXJuIiB9CitlbmQgc3Vicm91dGluZSBmb281CisKK3N1YnJvdXRp bmUgZm9vNgorcmV0dXJuCitlbmQgc3Vicm91dGluZSBmb282ICEgeyBkZy1ib2d1cyAid2Fybmlu ZzoiICJ0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZ2V0IGFueSB3YXJuaW5ncyIgfQorCitzdWJy b3V0aW5lIGZvbzcKK2NhbGwgZm9vNigpCitlbmQgc3Vicm91dGluZSBmb283ICEgeyBkZy1ib2d1 cyAid2FybmluZzoiICJ0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZ2V0IGFueSB3YXJuaW5ncyIg fQorCitzdWJyb3V0aW5lIGZvbzgKKyFHQ0MkIEFUVFJJQlVURVMgbm9yZXR1cm4gOjogZm9vOAor Y2FsbCBmb283KCkKK2VuZCBzdWJyb3V0aW5lIGZvbzggISB7IGRnLXdhcm5pbmcgIidub3JldHVy bicgZnVuY3Rpb24gZG9lcyByZXR1cm4iICJkZXRlY3QgcmV0dXJuIGZyb20gdGFpbCBjYWxsIiB9 CisKK3N1YnJvdXRpbmUgZm9vOQorIUdDQyQgQVRUUklCVVRFUyBub3JldHVybiA6OiBmb285Citp bnRlcmZhY2UKK3N1YnJvdXRpbmUgYmFyCishR0NDJCBBVFRSSUJVVEVTIG5vcmV0dXJuIDo6IGJh cgorZW5kIHN1YnJvdXRpbmUgYmFyCitlbmQgaW50ZXJmYWNlCitjYWxsIGJhcigpCitlbmQgc3Vi cm91dGluZSBmb285ICEgeyBkZy1ib2d1cyAid2FybmluZzoiICJ0aGlzIGZ1bmN0aW9uIHNob3Vs ZCBub3QgZ2V0IGFueSB3YXJuaW5ncyIgfQorCitmdW5jdGlvbiBmZm8xKCkKK2ltcGxpY2l0IG5v bmUKKyFHQ0MkIEFUVFJJQlVURVMgbm9yZXR1cm4gOjogZmZvMQoraW50ZWdlciA6OiBmZm8xCitm Zm8xID0gMAorZW5kIGZ1bmN0aW9uIGZmbzEgICAhIHsgZGctd2FybmluZyAiJ25vcmV0dXJuJyBm dW5jdGlvbiBkb2VzIHJldHVybiIgImRldGVjdCBmYWxsaW5nIG9mZiBlbmQgb2Ygbm9yZXR1cm4i IH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tMi5mOTAg Yi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTIuZjkwCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYmI0NzkzMjM0ZgotLS0gL2Rldi9udWxsCisrKyBi L2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tMi5mOTAKQEAgLTAsMCArMSw1MyBA QAorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7IGRnLW9wdGlvbnMgIi1PMiAtV3VuaW5pdGlhbGl6 ZWQiIH0KKworc3Vicm91dGluZSBmb28xCitpbXBsaWNpdCBub25lCitpbnRlcmZhY2UKK3N1YnJv dXRpbmUgYmFyMQorIUdDQyQgQVRUUklCVVRFUyBub3JldHVybiA6OiBiYXIxCitlbmQgc3Vicm91 dGluZQorZW5kIGludGVyZmFjZQorcmVhbCxhbGxvY2F0YWJsZSA6OiBkKDopICEgeyBkZy1ub3Rl ICJkZWNsYXJlZCBoZXJlIiAibm90ZSIgfQorZCA9IDAuICEgeyBkZy13YXJuaW5nICJ1c2VkIHVu aW5pdGlhbGl6ZWQiICJ1bmluaXRpYWxpemVkIGRlc2NyaXB0b3IiIH0KK2NhbGwgYmFyMSgpCitk ID0gMC4gISB7IGRnLWJvZ3VzICJ3YXJuaW5nOiIgIm5vdCBvcHRpbWl6ZWQgb3V0IiB9CitlbmQg c3Vicm91dGluZSBmb28xCisKK2Z1bmN0aW9uIGZvbzIoKQoraW50ZWdlciA6OiBmb28yCitpbnRl cmZhY2UKK3N1YnJvdXRpbmUgYmFyMgorIUdDQyQgQVRUUklCVVRFUyBub3JldHVybiA6OiBiYXIy CitlbmQgc3Vicm91dGluZQorZW5kIGludGVyZmFjZQorY2FsbCBiYXIyCityZXR1cm4gISB7IGRn LWJvZ3VzICJfX3Jlc3VsdF9mb28yJyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQiICJyZXR1cm4iIH0K K2ZvbzIgPSAwCitlbmQgZnVuY3Rpb24gZm9vMgorCitzdWJyb3V0aW5lIGZvbzMKK2ltcGxpY2l0 IG5vbmUKK2ludGVnZXIgOjogaSxqCitpbnRlcmZhY2UKK3N1YnJvdXRpbmUgYWJvcnQyCishR0ND JCBBVFRSSUJVVEVTIG5vcmV0dXJuIDo6IGFib3J0MgorZW5kIHN1YnJvdXRpbmUKK2VuZCBpbnRl cmZhY2UKK2NhbGwgYWJvcnQyKCkKK2RvIGk9MSxqLTEgOyBlbmQgZG8gISB7IGRnLWJvZ3VzICJp cyB1c2VkIHVuaW5pdGlhbGl6ZWQiICJ1bmluaXRpYWxpemVkIiB9CitlbmQgc3Vicm91dGluZSBm b28zCisKK2Z1bmN0aW9uIGZvbzQoKQoraW50ZWdlciA6OiBmb280CishJEdDQyQgQVRUUklCVVRF UyBub3JldHVybiA6OiBmb280Citmb280ID0gMQorZW5kIGZ1bmN0aW9uCisKK3N1YnJvdXRpbmUg Zm9vNShrKQoraW1wbGljaXQgbm9uZQoraW50ZWdlciA6OiBpLCBrCishR0NDJCBBVFRSSUJVVEVT IG5vcmV0dXJuIDo6IG1waV9hYm9ydAorY2FsbCBtcGlfYWJvcnQoKQorayA9IGkKK2VuZCBzdWJy b3V0aW5lCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTMu ZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub3JldHVybi0zLmY5MApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmVmYTA5MmFlZjAKLS0tIC9kZXYvbnVsbAor KysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTMuZjkwCkBAIC0wLDAgKzEs MTQgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1X dW5pbml0aWFsaXplZCAtV21heWJlLXVuaW5pdGlhbGl6ZWQiIH0KKworc3Vicm91dGluZSBmb28K K2ltcGxpY2l0IG5vbmUKK2ludGVnZXIgOjogaQorIUdDQyQgQVRUUklCVVRFUyBub3JldHVybiA6 OiBtcGlfYWJvcnQKK2lmIChnZXRwaWQoKSA9PSAxKSB0aGVuCisgIGNhbGwgbXBpX2Fib3J0KCkK K2Vsc2UKKyAgaSA9IDgKK2VuZGlmCitpZiAoaSA+IDApIHByaW50ICosIGkKK2VuZCBzdWJyb3V0 aW5lCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTQuZjkw IGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9ub3JldHVybi00LmY5MApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTQwMjRlMjdjY2MKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTQuZjkwCkBAIC0wLDAgKzEsMTEg QEAKKyEgeyBkZy1kbyBydW4geyB0YXJnZXQgeyBub25waWMgfHwgcGllX2VuYWJsZWQgfSB9IH0K KyEgeyBkZy1vcHRpb25zICItTzIiIH0KKworcHJvZ3JhbSBiYXIKK2NhbGwgZm9vMSgpCitjYWxs IG5vcmV0dXJuX2F1dG9kZXRlY3Rpb25fZmFpbGVkKCkgISBjaGVjayBpZiBvcHRpbWl6ZWQgb3V0 IAorZW5kIHByb2dyYW0KKworc3Vicm91dGluZSBmb28xCitzdG9wIDAKK2VuZCBzdWJyb3V0aW5l IGZvbzEKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tNS5m OTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL25vcmV0dXJuLTUuZjkwCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kMDdiMDUwMmYwOAotLS0gL2Rldi9udWxsCisr KyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvbm9yZXR1cm4tNS5mOTAKQEAgLTAsMCArMSw5 IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGctb3B0aW9ucyAiLU8yIiB9CisKK3N1YnJv dXRpbmUgYmFyCishR0NDJCBBVFRSSUJVVEVTIG5vcmV0dXJuIDo6IGZvbzEKK2NhbGwgZm9vMSgp CitjYWxsIG5vcmV0dXJuX2F1dG9kZXRlY3Rpb25fZmFpbGVkKCkKK2VuZCBzdWJyb3V0aW5lCish IC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgIm5vcmV0dXJuX2F1dG9kZXRlY3Rp b25fZmFpbGVkIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcv d2Vhay0xLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvd2Vhay0xLmY5MApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDlhY2E2ODY3NzUKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3dlYWstMS5mOTAKQEAgLTAsMCArMSw2 IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGctcmVxdWlyZS13ZWFrICIiIH0KKyEgeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ3ZWFrXFteIFx0XF0qXFsgXHRcXV8/aW1wbCIgfSB9 CitzdWJyb3V0aW5lIGltcGwKKyFHQ0MkIEFUVFJJQlVURVMgd2VhayA6OiBpbXBsCitlbmQgc3Vi cm91dGluZQotLSAKMi4xMi4zCgo= --000000000000d8d6ff05f451f7c1--