From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 7AFF03858C50 for ; Tue, 4 Oct 2022 18:30:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7AFF03858C50 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1664908246; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=5fPEe2zkKoNmFIcL4zoX9hz/OO5kzbIIW6dPYSDXCIg=; b=KfiSnXm/6dpkrgCkN/qJIC9bDOdce0UEs9XUOjqG5NLeWGd/neyQZOBy6Hf31kuE5axAi4 9k9BnuMZddAutK0T6AJ2qjjXJAOzmEvOi/1NwOPuqOnj3ahLHcAgIhrHCHl170GYnD9uVv eldkE6h6vRb2v/R3uy3k+GV4XeBPoYs= Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-529-uYEoEYMjNV6fyaNkt3n7Bw-1; Tue, 04 Oct 2022 14:30:42 -0400 X-MC-Unique: uYEoEYMjNV6fyaNkt3n7Bw-1 Received: by mail-qk1-f197.google.com with SMTP id j13-20020a05620a410d00b006e08208eb31so1563058qko.3 for ; Tue, 04 Oct 2022 11:30:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date; bh=5fPEe2zkKoNmFIcL4zoX9hz/OO5kzbIIW6dPYSDXCIg=; b=LdeEQP7RILg2FojWUMJO6J9M5ohzrpsTtQ+pX3CzHqbOtioEvTaj1tmMttKgJ5rlHj 58kjfsYcVm4BVyKIXIx7cIJiveMnvh0jnPxYKenBv7k0Z5wPwmoGRVkpjoPBfoRUf7R4 KxgS0d0qxRR+P0/fBix/+RhQpzKLneTXVSwIF/TQZkShiBxBWLBqqx4QP42G9agDtRGP dVV+r4HKX/ql6OSVMcVmKJNbl7GcRq5xhqw6GIcmAHngsGlfMjZ9U5xOsSjfTQY1wCjO gzKtTe/YVe45J8Ha2izT7qeN2X+WrF+JQVX1tuJo1WpYmXe8SgLgw0YoepUCFefPnAI/ gNFw== X-Gm-Message-State: ACrzQf02kluApS8OtkAvndW7be0hY5p1G9LDHCnvfwibAOLTrQk+p9K7 zE65Fq3l7sEUYFFsIWvzNXdZ77s53nzd6yq93Eb6qPhHQm5gV2uVSYsg20OWC/NCxK4Ob3/OYc+ PVzKII/4y6YBrXYQFyDjagTL0FhepNXk= X-Received: by 2002:ac8:7d92:0:b0:35c:be77:5e2b with SMTP id c18-20020ac87d92000000b0035cbe775e2bmr20501137qtd.505.1664908242295; Tue, 04 Oct 2022 11:30:42 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4ITqt4VL2NoUBjXN5Prw/au88+46rrsajl4NgGWN7riax9OZ2N4YjutVv0PG6L8uZ/RXhsbhqB/82muiuCmGw= X-Received: by 2002:ac8:7d92:0:b0:35c:be77:5e2b with SMTP id c18-20020ac87d92000000b0035cbe775e2bmr20501110qtd.505.1664908241938; Tue, 04 Oct 2022 11:30:41 -0700 (PDT) MIME-Version: 1.0 References: <20221004165109.559028-1-jwakely@redhat.com> In-Reply-To: From: Jonathan Wakely Date: Tue, 4 Oct 2022 19:30:30 +0100 Message-ID: Subject: Re: [RFC] libstdc++: Generate error_constants.h from [PR104883] To: Jonathan Wakely Cc: libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000588fd905ea39a8bf" X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000588fd905ea39a8bf Content-Type: text/plain; charset="UTF-8" On Tue, 4 Oct 2022 at 19:05, Jonathan Wakely wrote: > > On Tue, 4 Oct 2022 at 17:51, Jonathan Wakely via Libstdc++ > wrote: > > > > Does anybody see any issues with generating the list of error numbers at > > build time? > > > > > > -- >8 -- > > > > Instead of having several very similar target-specific headers with > > slightly different sets of enumerators, generate the error_constants.h > > file as part of the build. This ensures that all enumerators are always > > defined, with the value from the corresponding errno macro if present, > > or a libstdc++-specific alternative value. > > > > The libstdc++-specific values will be values greater than the positive > > integer _GLIBCXX_ERRC_ORIGIN, which defaults to 9999 but can be set in > > os_defines.h if a more suitable value exists for the OS (e.g. ELAST > > could be used for BSD targets). > ... > > +${CXXCPP} -P -D_POSIX_C_SOURCE=200809L -x c++ "$constants_h" \ > > + | sed -e '1,/^GLIBCXX ERROR CONSTANTS BELOW HERE$/d' \ > > + >> "$output_h" || exit $? > > Gah, this is the wrong version of the script! It's supposed to replace > unexpanded EXXX tokens with __LINE__ (which is why #line is used to > set the origin) but I seem to have committed the wrong version. > > Let me dig that out of my git reflog ... I was looking on the wrong machine. Here's the working patch that expands undefined EXXX constants to __LINE__, which has been offset by the _GLIBCXX_ERRC_ORIGIN value. --000000000000588fd905ea39a8bf Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l8ujd63y0 Y29tbWl0IDVlNjcxNGU0YzU5MWQzOTBlMmI4YWE1YzY3MzQ5MGU5OWQ4YzkwNmEKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBUaHUgU2VwIDIyIDIx OjU0OjQ0IDIwMjIKCiAgICBsaWJzdGRjKys6IEdlbmVyYXRlIGVycm9yX2NvbnN0YW50cy5oIGZy b20gPGVycm5vLmg+IFtQUjEwNDg4M10KICAgIAogICAgSW5zdGVhZCBvZiBoYXZpbmcgc2V2ZXJh bCB2ZXJ5IHNpbWlsYXIgdGFyZ2V0LXNwZWNpZmljIGhlYWRlcnMgd2l0aAogICAgc2xpZ2h0bHkg ZGlmZmVyZW50IHNldHMgb2YgZW51bWVyYXRvcnMsIGdlbmVyYXRlIHRoZSBlcnJvcl9jb25zdGFu dHMuaAogICAgZmlsZSBhcyBwYXJ0IG9mIHRoZSBidWlsZC4gVGhpcyBlbnN1cmVzIHRoYXQgYWxs IGVudW1lcmF0b3JzIGFyZSBhbHdheXMKICAgIGRlZmluZWQsIHdpdGggdGhlIHZhbHVlIGZyb20g dGhlIGNvcnJlc3BvbmRpbmcgZXJybm8gbWFjcm8gaWYgcHJlc2VudCwKICAgIG9yIGEgbGlic3Rk YysrLXNwZWNpZmljIGFsdGVybmF0aXZlIHZhbHVlLgogICAgCiAgICBUaGUgbGlic3RkYysrLXNw ZWNpZmljIHZhbHVlcyB3aWxsIGJlIHZhbHVlcyBncmVhdGVyIHRoYW4gdGhlIHBvc2l0aXZlCiAg ICBpbnRlZ2VyIF9HTElCQ1hYX0VSUkNfT1JJR0lOLCB3aGljaCBkZWZhdWx0cyB0byA5OTk5IGJ1 dCBjYW4gYmUgc2V0IGluCiAgICBvc19kZWZpbmVzLmggaWYgYSBtb3JlIHN1aXRhYmxlIHZhbHVl IGV4aXN0cyBmb3IgdGhlIE9TIChlLmcuIEVMQVNUCiAgICBjb3VsZCBiZSB1c2VkIGZvciBCU0Qg dGFyZ2V0cykuCiAgICAKICAgIGxpYnN0ZGMrKy12My9DaGFuZ2VMb2c6CiAgICAKICAgICAgICAg ICAgUFIgbGlic3RkYysrLzEwNDg4MwogICAgICAgICAgICAqIGNvbmZpZ3VyZS5ob3N0IChlcnJv cl9jb25zdGFudHNfZGlyKTogUmVtb3ZlLgogICAgICAgICAgICAqIGluY2x1ZGUvTWFrZWZpbGUu YW0gKGVycm9yX2NvbnN0YW50cy5oKTogR2VuZXJhdGUgdXNpbmcKICAgICAgICAgICAgbWFrZV9l cnJjLnNoIHNjcmlwdC4KICAgICAgICAgICAgKiBpbmNsdWRlL01ha2VmaWxlLmluOiBSZWdlbmVy YXRlLgogICAgICAgICAgICAqIHNjcmlwdHMvbWFrZV9lcnJjLnNoOiBOZXcgZmlsZS4KCmRpZmYg LS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QgYi9saWJzdGRjKystdjMvY29uZmln dXJlLmhvc3QKaW5kZXggZWMzMjk4MGFhMGQuLjZkNTFjNWY2YTExIDEwMDY0NAotLS0gYS9saWJz dGRjKystdjMvY29uZmlndXJlLmhvc3QKKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0 CkBAIC01Niw5ICs1Niw2IEBACiAjICAgY3B1X29wdF9leHRfcmFuZG9tICAgICBwYXRoIG5hbWUg b2YgcmFuZG9tLmggY29udGFpbmluZyBDUFUtc3BlY2lmaWMKICMgICAgICAgICAgICAgICAgICAg ICAgICAgIG9wdGltaXphdGlvbnMgZm9yIGV4dGVuc2lvbnMKICMKLSMgICBlcnJvcl9jb25zdGFu dHNfZGlyICAgIGxvY2F0aW9uIG9mIGVycm9yX2NvbnN0YW50cy5oCi0jICAgICAgICAgICAgICAg ICAgICAgICAgICBkZWZhdWx0cyB0byBvcy9nZW5lcmljLgotIwogIyBJdCBwb3NzaWJseSBtb2Rp ZmllcyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlczoKICMKICMgICBPUFRfTERGTEFHUyAgICAgICAg ICAgIGV4dHJhIGZsYWdzIHRvIHBhc3Mgd2hlbiBsaW5raW5nIHRoZSBsaWJyYXJ5LCBvZgpAQCAt OTMsNyArOTAsNiBAQCBjcHVfZGVmaW5lc19kaXI9ImNwdS9nZW5lcmljIgogdHJ5X2NwdT1nZW5l cmljCiBhYmlfYmFzZWxpbmVfc3ViZGlyX3N3aXRjaD0tLXByaW50LW11bHRpLWRpcmVjdG9yeQog YWJpX3R3ZWFrc19kaXI9ImNwdS9nZW5lcmljIgotZXJyb3JfY29uc3RhbnRzX2Rpcj0ib3MvZ2Vu ZXJpYyIKIHRtYWtlX2ZpbGU9CiAKICMgSE9TVC1TUEVDSUZJQyBPVkVSUklERVMKQEAgLTI0Nyw3 ICsyNDMsNiBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgogICAgIDs7CiAgICpkamdwcCopICAgICAg IyBsZWFkaW5nICogcGlja3MgdXAgIm1zZG9zZGpncHAiCiAgICAgb3NfaW5jbHVkZV9kaXI9Im9z L2RqZ3BwIgotICAgIGVycm9yX2NvbnN0YW50c19kaXI9Im9zL2RqZ3BwIgogICAgIDs7CiAgIGRy YWdvbmZseSopCiAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL2JzZC9kcmFnb25mbHkiCkBAIC0yNzQs MTEgKzI2OSw5IEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCiAgICAgY2FzZSAiJGhvc3QiIGluCiAg ICAgICAqLXc2NC0qKQogICAgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvbWluZ3czMi13NjQiCi0g ICAgICAgIGVycm9yX2NvbnN0YW50c19kaXI9Im9zL21pbmd3MzItdzY0IgogICAgICAgICA7Owog ICAgICAgKikKICAgICAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL21pbmd3MzIiCi0gICAgICAgIGVy cm9yX2NvbnN0YW50c19kaXI9Im9zL21pbmd3MzIiCiAgICAgICAgIDs7CiAgICAgZXNhYwogICAg IE9QVF9MREZMQUdTPSIke09QVF9MREZMQUdTfSBcJChsdF9ob3N0X2ZsYWdzKSIKZGlmZiAtLWdp dCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL01ha2VmaWxlLmFtIGIvbGlic3RkYysrLXYzL2luY2x1 ZGUvTWFrZWZpbGUuYW0KaW5kZXggOTc1NDI1MjRhNjkuLjI4YzViM2M0NDUzIDEwMDY0NAotLS0g YS9saWJzdGRjKystdjMvaW5jbHVkZS9NYWtlZmlsZS5hbQorKysgYi9saWJzdGRjKystdjMvaW5j bHVkZS9NYWtlZmlsZS5hbQpAQCAtMTAzMyw3ICsxMDMzLDYgQEAgaG9zdF9oZWFkZXJzID0gXAog CSR7Z2xpYmN4eF9zcmNkaXJ9LyQoQVRPTUlDX1dPUkRfU1JDRElSKS9hdG9taWNfd29yZC5oIFwK IAkke2dsaWJjeHhfc3JjZGlyfS8kKEFCSV9UV0VBS1NfU1JDRElSKS9jeHhhYmlfdHdlYWtzLmgg XAogCSR7Z2xpYmN4eF9zcmNkaXJ9LyQoQ1BVX0RFRklORVNfU1JDRElSKS9jcHVfZGVmaW5lcy5o IFwKLQkke2dsaWJjeHhfc3JjZGlyfS8kKEVSUk9SX0NPTlNUQU5UU19TUkNESVIpL2Vycm9yX2Nv bnN0YW50cy5oIFwKIAkke2dsaWJjeHhfc3JjZGlyfS9pbmNsdWRlL3ByZWNvbXBpbGVkL3N0ZGMr Ky5oIFwKIAkke2dsaWJjeHhfc3JjZGlyfS9pbmNsdWRlL3ByZWNvbXBpbGVkL3N0ZHRyMWMrKy5o IFwKIAkke2dsaWJjeHhfc3JjZGlyfS9pbmNsdWRlL3ByZWNvbXBpbGVkL2V4dGMrKy5oCkBAIC0x MDUxLDYgKzEwNTAsNyBAQCBob3N0X2hlYWRlcnNfZXh0cmEgPSBcCiAJJHtob3N0X2J1aWxkZGly fS9jKythbGxvY2F0b3IuaCBcCiAJJHtob3N0X2J1aWxkZGlyfS9jKytpby5oIFwKIAkke2hvc3Rf YnVpbGRkaXJ9L2MrK2xvY2FsZS5oIFwKKwkke2hvc3RfYnVpbGRkaXJ9L2Vycm9yX2NvbnN0YW50 cy5oIFwKIAkke2hvc3RfYnVpbGRkaXJ9L21lc3NhZ2VzX21lbWJlcnMuaCBcCiAJJHtob3N0X2J1 aWxkZGlyfS90aW1lX21lbWJlcnMuaAogCkBAIC0xMTA2LDYgKzExMDYsNyBAQCBhbGxzdGFtcGVk ID0gXAogIyBjYXRlbmF0aW9uLgogYWxsY3JlYXRlZCA9IFwKIAkke2hvc3RfYnVpbGRkaXJ9L2Mr K2NvbmZpZy5oIFwKKwkke2hvc3RfYnVpbGRkaXJ9L2Vycm9yX2NvbnN0YW50cy5oIFwKIAkke2hv c3RfYnVpbGRkaXJ9L2xhcmdlZmlsZS1jb25maWcuaCBcCiAJJHt0aHJlYWRfaG9zdF9oZWFkZXJz fSBcCiAJJHtwY2hfYnVpbGR9CkBAIC0xNDA0LDYgKzE0MDUsOSBAQCAke2hvc3RfYnVpbGRkaXJ9 L2MrK2NvbmZpZy5oOiAke0NPTkZJR19IRUFERVJ9IFwKIAllY2hvICIiID4+ICRAIDtcCiAJZWNo byAiI2VuZGlmIC8vIF9HTElCQ1hYX0NYWF9DT05GSUdfSCIgPj4gJEAKIAorJHtob3N0X2J1aWxk ZGlyfS9lcnJvcl9jb25zdGFudHMuaDogJHtnbGliY3h4X3NyY2Rpcn0vc2NyaXB0cy9tYWtlX2Vy cmMuc2gKKwkke2dsaWJjeHhfc3JjZGlyfS9zY3JpcHRzL21ha2VfZXJyYy5zaCAkQCAiJHtDWFhD UFB9IiAke0FNX0NQUEZMQUdTfQorCiAjIEhvc3QgaW5jbHVkZXMgZm9yIHRocmVhZHMKIHVwcGVy Y2FzZSA9IFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9dCiAKZGlmZiAtLWdpdCBhL2xpYnN0 ZGMrKy12My9zY3JpcHRzL21ha2VfZXJyYy5zaCBiL2xpYnN0ZGMrKy12My9zY3JpcHRzL21ha2Vf ZXJyYy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uMTBjZGZiMWIz ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzdGRjKystdjMvc2NyaXB0cy9tYWtlX2VycmMuc2gK QEAgLTAsMCArMSwxNjggQEAKKyMhL2Jpbi9zaAorCitbIC16ICIkMSIgXSAmJiBleGl0IDEKK3Rh cmdldD0kMQorc2hpZnQKK0NYWENQUD0iJEAiCisKK3sKKyAgZGlyPWAodW1hc2sgMDc3ICYmIG1r dGVtcCAtZCAiJHRhcmdldC5YWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKKyAgdGVzdCAtZCAiJGRp ciIKK30gfHwgeworICBkaXI9JHRhcmdldC4kUkFORE9NJCQKKyAgKHVtYXNrIDA3NyAmJiBta2Rp ciAiJGRpciIpCit9IHx8IGV4aXQgJD8KKworb3V0cHV0X2g9JGRpci9vdXRwdXQuaAorY29uc3Rh bnRzX2g9JGRpci9jb25zdGFudHMuaAorCitjYXQgPiAiJG91dHB1dF9oIiA8PCBFT1QKKy8vIERl ZmluaXRpb24gb2Ygc3RkOjplcnJjIGVudW1lcmF0aW9uIHR5cGUgIC0qLSBDKysgLSotCisKKy8v IENvcHlyaWdodCBUaGUgR05VIFRvb2xjaGFpbiBBdXRob3JzLgorLy8KKy8vIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUK Ky8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVu ZGVyIHRoZQorLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUKKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorLy8gYW55IGxhdGVyIHZlcnNpb24uCisKKy8vIFRo aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisKKy8vIFVuZGVyIFNlY3Rpb24gNyBvZiBHUEwgdmVyc2lvbiAzLCB5 b3UgYXJlIGdyYW50ZWQgYWRkaXRpb25hbAorLy8gcGVybWlzc2lvbnMgZGVzY3JpYmVkIGluIHRo ZSBHQ0MgUnVudGltZSBMaWJyYXJ5IEV4Y2VwdGlvbiwgdmVyc2lvbgorLy8gMy4xLCBhcyBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKworLy8gWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5k CisvLyBhIGNvcHkgb2YgdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOworLy8gc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5S VU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisvLyA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisKKy8qKiBAZmlsZSBiaXRzL2VycmMuaAorICogIFRoaXMgaXMgYW4gaW50 ZXJuYWwgaGVhZGVyIGZpbGUsIGluY2x1ZGVkIGJ5IG90aGVyIGxpYnJhcnkgaGVhZGVycy4KKyAq ICBEbyBub3QgYXR0ZW1wdCB0byB1c2UgaXQgZGlyZWN0bHkuIEBoZWFkZXJuYW1le3N5c3RlbV9l cnJvcn0KKyAqLworCisvLyBUaGlzIGlzIGEgZ2VuZXJhdGVkIGZpbGUuIERvIG5vdCBlZGl0IGRp cmVjdGx5LgorCisjaWZuZGVmIF9HTElCQ1hYX0VSUkNfSAorI2RlZmluZSBfR0xJQkNYWF9FUlJD X0ggMQorCisjaWYgX19jcGx1c3BsdXMgPj0gMjAxMTAzTAorbmFtZXNwYWNlIHN0ZCBfR0xJQkNY WF9WSVNJQklMSVRZKGRlZmF1bHQpCit7CitfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lP TgorCisgIGVudW0gY2xhc3MgZXJyYworICAgIHsKK0VPVAorCitjYXQgPiAiJGNvbnN0YW50c19o IiA8PEVPVAorI2lmIF9faGFzX2luY2x1ZGUgKDxlcnJuby5oPikKKyNpbmNsdWRlIDxlcnJuby5o PgorI2VuZGlmCisjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KKyNpZm5kZWYgX0dMSUJDWFhf RVJSQ19PUklHSU4KKyMgZGVmaW5lIF9HTElCQ1hYX0VSUkNfT1JJR0lOIDk5OTkKKyNlbmRpZgor R0xJQkNYWCBFUlJPUiBDT05TVEFOVFMgQkVMT1cgSEVSRQorbGluZSBfR0xJQkNYWF9FUlJDX09S SUdJTgorICAgICAgYWRkcmVzc19mYW1pbHlfbm90X3N1cHBvcnRlZCA9IEVBRk5PU1VQUE9SVCwK KyAgICAgIGFkZHJlc3NfaW5fdXNlID0gRUFERFJJTlVTRSwKKyAgICAgIGFkZHJlc3Nfbm90X2F2 YWlsYWJsZSA9IEVBRERSTk9UQVZBSUwsCisgICAgICBhbHJlYWR5X2Nvbm5lY3RlZCA9IEVJU0NP Tk4sCisgICAgICBhcmd1bWVudF9vdXRfb2ZfZG9tYWluID0gRURPTSwKKyAgICAgIGJhZF9hZGRy ZXNzID0gRUZBVUxULAorICAgICAgYmFkX2ZpbGVfZGVzY3JpcHRvciA9IEVCQURGLAorICAgICAg YmFkX21lc3NhZ2UgPSBFQkFETVNHLAorICAgICAgYnJva2VuX3BpcGUgPSBFUElQRSwKKyAgICAg IGNvbm5lY3Rpb25fYWJvcnRlZCA9IEVDT05OQUJPUlRFRCwKKyAgICAgIGNvbm5lY3Rpb25fYWxy ZWFkeV9pbl9wcm9ncmVzcyA9IEVBTFJFQURZLAorICAgICAgY29ubmVjdGlvbl9yZWZ1c2VkID0g RUNPTk5SRUZVU0VELAorICAgICAgY29ubmVjdGlvbl9yZXNldCA9IEVDT05OUkVTRVQsCisgICAg ICBjcm9zc19kZXZpY2VfbGluayA9IEVYREVWLAorICAgICAgZGVzdGluYXRpb25fYWRkcmVzc19y ZXF1aXJlZCA9IEVERVNUQUREUlJFUSwKKyAgICAgIGRldmljZV9vcl9yZXNvdXJjZV9idXN5ID0g RUJVU1ksCisgICAgICBkaXJlY3Rvcnlfbm90X2VtcHR5ID0gRU5PVEVNUFRZLAorICAgICAgZXhl Y3V0YWJsZV9mb3JtYXRfZXJyb3IgPSBFTk9FWEVDLAorICAgICAgZmlsZV9leGlzdHMgPSBFRVhJ U1QsCisgICAgICBmaWxlX3Rvb19sYXJnZSA9IEVGQklHLAorICAgICAgZmlsZW5hbWVfdG9vX2xv bmcgPSBFTkFNRVRPT0xPTkcsCisgICAgICBmdW5jdGlvbl9ub3Rfc3VwcG9ydGVkID0gRU5PU1lT LAorICAgICAgaG9zdF91bnJlYWNoYWJsZSA9IEVIT1NUVU5SRUFDSCwKKyAgICAgIGlkZW50aWZp ZXJfcmVtb3ZlZCA9IEVJRFJNLAorICAgICAgaWxsZWdhbF9ieXRlX3NlcXVlbmNlID0gRUlMU0VR LAorICAgICAgaW5hcHByb3ByaWF0ZV9pb19jb250cm9sX29wZXJhdGlvbiA9IEVOT1RUWSwKKyAg ICAgIGludGVycnVwdGVkID0gRUlOVFIsCisgICAgICBpbnZhbGlkX2FyZ3VtZW50ID0gRUlOVkFM LAorICAgICAgaW52YWxpZF9zZWVrID0gRVNQSVBFLAorICAgICAgaW9fZXJyb3IgPSBFSU8sCisg ICAgICBpc19hX2RpcmVjdG9yeSA9IEVJU0RJUiwKKyAgICAgIG1lc3NhZ2Vfc2l6ZSA9IEVNU0dT SVpFLAorICAgICAgbmV0d29ya19kb3duID0gRU5FVERPV04sCisgICAgICBuZXR3b3JrX3Jlc2V0 ID0gRU5FVFJFU0VULAorICAgICAgbmV0d29ya191bnJlYWNoYWJsZSA9IEVORVRVTlJFQUNILAor ICAgICAgbm9fYnVmZmVyX3NwYWNlID0gRU5PQlVGUywKKyAgICAgIG5vX2NoaWxkX3Byb2Nlc3Mg PSBFQ0hJTEQsCisgICAgICBub19saW5rID0gRU5PTElOSywKKyAgICAgIG5vX2xvY2tfYXZhaWxh YmxlID0gRU5PTENLLAorICAgICAgbm9fbWVzc2FnZV9hdmFpbGFibGUgPSBFTk9EQVRBLAorICAg ICAgbm9fbWVzc2FnZSA9IEVOT01TRywKKyAgICAgIG5vX3Byb3RvY29sX29wdGlvbiA9IEVOT1BS T1RPT1BULAorICAgICAgbm9fc3BhY2Vfb25fZGV2aWNlID0gRU5PU1BDLAorICAgICAgbm9fc3Ry ZWFtX3Jlc291cmNlcyA9IEVOT1NSLAorICAgICAgbm9fc3VjaF9kZXZpY2Vfb3JfYWRkcmVzcyA9 IEVOWElPLAorICAgICAgbm9fc3VjaF9kZXZpY2UgPSBFTk9ERVYsCisgICAgICBub19zdWNoX2Zp bGVfb3JfZGlyZWN0b3J5ID0gRU5PRU5ULAorICAgICAgbm9fc3VjaF9wcm9jZXNzID0gRVNSQ0gs CisgICAgICBub3RfYV9kaXJlY3RvcnkgPSBFTk9URElSLAorICAgICAgbm90X2Ffc29ja2V0ID0g RU5PVFNPQ0ssCisgICAgICBub3RfYV9zdHJlYW0gPSBFTk9TVFIsCisgICAgICBub3RfY29ubmVj dGVkID0gRU5PVENPTk4sCisgICAgICBub3RfZW5vdWdoX21lbW9yeSA9IEVOT01FTSwKKyAgICAg IG5vdF9zdXBwb3J0ZWQgPSBFTk9UU1VQLAorICAgICAgb3BlcmF0aW9uX2NhbmNlbGVkID0gRUNB TkNFTEVELAorICAgICAgb3BlcmF0aW9uX2luX3Byb2dyZXNzID0gRUlOUFJPR1JFU1MsCisgICAg ICBvcGVyYXRpb25fbm90X3Blcm1pdHRlZCA9IEVQRVJNLAorICAgICAgb3BlcmF0aW9uX25vdF9z dXBwb3J0ZWQgPSBFT1BOT1RTVVBQLAorICAgICAgb3BlcmF0aW9uX3dvdWxkX2Jsb2NrID0gRVdP VUxEQkxPQ0ssCisgICAgICBvd25lcl9kZWFkID0gRU9XTkVSREVBRCwKKyAgICAgIHBlcm1pc3Np b25fZGVuaWVkID0gRUFDQ0VTLAorICAgICAgcHJvdG9jb2xfZXJyb3IgPSBFUFJPVE8sCisgICAg ICBwcm90b2NvbF9ub3Rfc3VwcG9ydGVkID0gRVBST1RPTk9TVVBQT1JULAorICAgICAgcmVhZF9v bmx5X2ZpbGVfc3lzdGVtID0gRVJPRlMsCisgICAgICByZXNvdXJjZV9kZWFkbG9ja193b3VsZF9v Y2N1ciA9IEVERUFETEssCisgICAgICByZXNvdXJjZV91bmF2YWlsYWJsZV90cnlfYWdhaW4gPSBF QUdBSU4sCisgICAgICByZXN1bHRfb3V0X29mX3JhbmdlID0gRVJBTkdFLAorICAgICAgc3RhdGVf bm90X3JlY292ZXJhYmxlID0gRU5PVFJFQ09WRVJBQkxFLAorICAgICAgc3RyZWFtX3RpbWVvdXQg PSBFVElNRSwKKyAgICAgIHRleHRfZmlsZV9idXN5ID0gRVRYVEJTWSwKKyAgICAgIHRpbWVkX291 dCA9IEVUSU1FRE9VVCwKKyAgICAgIHRvb19tYW55X2ZpbGVzX29wZW5faW5fc3lzdGVtID0gRU5G SUxFLAorICAgICAgdG9vX21hbnlfZmlsZXNfb3BlbiA9IEVNRklMRSwKKyAgICAgIHRvb19tYW55 X2xpbmtzID0gRU1MSU5LLAorICAgICAgdG9vX21hbnlfc3ltYm9saWNfbGlua19sZXZlbHMgPSBF TE9PUCwKKyAgICAgIHZhbHVlX3Rvb19sYXJnZSA9IEVPVkVSRkxPVywKKyAgICAgIHdyb25nX3By b3RvY29sX3R5cGUgPSBFUFJPVE9UWVBFLAorRU9UCisKKyR7Q1hYQ1BQfSAtUCAtRF9QT1NJWF9D X1NPVVJDRT0yMDA4MDlMIC14IGMrKyAiJGNvbnN0YW50c19oIiBcCisgIHwgc2VkIC1lICcxLC9e R0xJQkNYWCBFUlJPUiBDT05TVEFOVFMgQkVMT1cgSEVSRSQvZCcgXAorCS1lICdzL15saW5lIFtb OmRpZ2l0Ol1dKiQvIyYvJyBcCisJLWUgJ3MvID0gRS4qLC8gPSBfX0xJTkVfXywvJyBcCisgIHwg JHtDWFhDUFB9IC1QIC14IGMrKyAtIFwKKyAgPj4gIiRvdXRwdXRfaCIgfHwgZXhpdCAkPworCitj YXQgPj4gIiRvdXRwdXRfaCIgPDwgRU9UCisgICAgfTsKK19HTElCQ1hYX0VORF9OQU1FU1BBQ0Vf VkVSU0lPTgorfSAvLyBuYW1lc3BhY2Ugc3RkCisjZW5kaWYgLy8gQysrMTEKKyNlbmRpZiAvLyBf R0xJQkNYWF9FUlJDX0gKK0VPVAorCittdiAiJG91dHB1dF9oIiAiJHRhcmdldCIKK3JtIC1yICRk aXIK --000000000000588fd905ea39a8bf--