From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from fencepost.gnu.org (fencepost.gnu.org [IPv6:2001:470:142:3::e]) by sourceware.org (Postfix) with ESMTPS id 18625385800D for ; Tue, 15 Dec 2020 08:00:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 18625385800D Received: from eggs.gnu.org ([2001:470:142:3::10]:35668) by fencepost.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kp5Fi-0004Vy-MX for gcc-patches@gnu.org; Tue, 15 Dec 2020 03:00:12 -0500 Received: from mail-il1-x144.google.com ([2607:f8b0:4864:20::144]:40308) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kp5Ff-00069I-TR for gcc-patches@gnu.org; Tue, 15 Dec 2020 03:00:10 -0500 Received: by mail-il1-x144.google.com with SMTP id g1so18359885ilk.7 for ; Tue, 15 Dec 2020 00:00:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=yxnrNj3hxm3rIn3Tt21flVR0ETock8GGoZt3WhycewQ=; b=ECy5YkrCA+w2vLSjpVB90jhP78uz16TLKeHGsKzYQeGdUwJXaGOwJSOKRA14uGr01j EzsdhhyrVFuiKb+DOkV7Eu+2mMTcq9c+3YY0+TC3fOLujxwc+I5wSXeplWAkb0dkbvLx QNIisL3+MIuddSeTWKaMsFMWP5OX5YpFmpy+8qXGd23+5qZYYXfe/t9lyDhAFiSyEt6l TvNXQY/UCaiAzAoy1UoCTO5z1c9+z1wCXGnE/MIWksY4qxMqK2+E6KcTO+/7gdLiYZod vOOp7lCCvL4n5gm9Jau2B3hgzJQbQlTGBo2ewk8k6/AWE9IUAheLng9m1VsT3f6gm52j Ez8w== X-Gm-Message-State: AOAM531aefK9a4XNOIPWIu0F60stJ7w8ULV8CoChLaz6asMdzvvOlFLE 4G+nj6eufanpIJDXlXXaGXc= X-Google-Smtp-Source: ABdhPJwjYC220RMLbFjy5mTr36ILELTP62r5I9PGGav3Dnoit5H7cMDsDY4ULFLHh86Ic914IfHH7Q== X-Received: by 2002:a05:6e02:c32:: with SMTP id q18mr40312604ilg.203.1608019206137; Tue, 15 Dec 2020 00:00:06 -0800 (PST) Received: from langur.local (pool-108-21-192-156.nycmny.fios.verizon.net. [108.21.192.156]) by smtp.gmail.com with ESMTPSA id d18sm12607200ilo.49.2020.12.15.00.00.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 15 Dec 2020 00:00:05 -0800 (PST) Subject: Re: [PATCH] Correct -fdump-go-spec's handling of incomplete types From: Nikhil Benesch To: Ian Lance Taylor Cc: Rainer Orth , gcc-patches , gofrontend-dev References: <52818e83-3ff8-31b3-f444-eb21e3931a82@gmail.com> <2913efa6-53ed-d5c1-fa04-7d14539dfbd9@gmail.com> <4b48e0a9-cac4-9df1-8cbe-ce499284f8b0@gmail.com> Message-ID: Date: Tue, 15 Dec 2020 03:00:04 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.4.3 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------F87FD7664FA964AE93D2F085" Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::144; envelope-from=nikhil.benesch@gmail.com; helo=mail-il1-x144.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, NICE_REPLY_A, 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-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Dec 2020 08:00:17 -0000 This is a multi-part message in MIME format. --------------F87FD7664FA964AE93D2F085 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 12/14/20 10:48 PM, Nikhil Benesch wrote: > On 12/14/20 10:34 PM, Ian Lance Taylor wrote: >> On Mon, Dec 14, 2020 at 7:14 PM Nikhil Benesch wrote: >>> Also godump now emits a dummy `type _u?pad128_t struct {}` entry, >>> so we just suppress that and conditionally add it back. >> >> I don't understand this bit. Why are we seeing an empty struct >> definition, and why is this change the right fix? >> >> Is the problem that because we don't know how to emit the definition >> of the struct, godump.c winds up emitting an empty definition? That >> doesn't sound like the right thing to do for this case. > > That's a good question. u?pad128_t is clearly getting marked as a > potential dummy type. But then you'd think it'd *also* get marked as > an invalid type, and then find_dummy_types would suppress it. I misunderstood how find_dummy_types worked. Here is a correct description. find_dummy_types will output a dummy type for an entry in pot_dummy_types if: (1) we never observed a definition for that type name, or (2) we observed an invalid definition for that type name. I don't actually understand why condition (2) is considered. Since types that refer to invalid types are themselves marked as invalid, godump will recursively comment out all types that refer even transitively to an invalid dummy type. So it doesn't seem necessary to emit a dummy type in condition (2). Ian, you added this behavior way back in 2012: https://github.com/gcc-mirror/gcc/commit/3eb9e389a6460b6bd9400a3f4acf88fb2e258e07 Perhaps you remember why? If consensus is this behavior is wrong, I've attached a patch (invalid-dummy.patch) that removes condition (2) from find_dummy_types along with some new test cases. I don't have enough context to say whether this patch is the right solution though. ---- Separately, I'm actually not sure why we're extracting _u?pad128_t from gen-sysinfo.go at all. Nothing in libgo refers to those types. And no types in [runtime_]sysinfo.go could refer to them either, because if they did they'd *also* be marked as invalid (right?). So I suspect we can just nuke those extractions from mk[r]sysinfo.sh. I've attached a patch that does so (solaris-godump.patch). I'm still waiting on my compile to complete, but initial signs look promising. If this patch looks good, I'll submit it upstream tomorrow. The nice thing about this approach, if it works, is that it works both with and without the change to find_dummy_types, so we can consider that patch independently. Cheers, Nikhil --------------F87FD7664FA964AE93D2F085 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="invalid-dummy.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="invalid-dummy.patch" ZGlmZiAtLWdpdCBhL2djYy9nb2R1bXAuYyBiL2djYy9nb2R1bXAuYwppbmRleCBmZjNhNGE5 YzUyYy4uNzhmZjIyZDVmMTMgMTAwNjQ0Ci0tLSBhL2djYy9nb2R1bXAuYworKysgYi9nY2Mv Z29kdW1wLmMKQEAgLTEzNTEsMTEgKzEzNTEsOSBAQCBmaW5kX2R1bW15X3R5cGVzIChjb25z dCBjaGFyICpjb25zdCAmcHRyLCBnb2R1bXBfY29udGFpbmVyICphZGF0YSkKICAgY2xhc3Mg Z29kdW1wX2NvbnRhaW5lciAqZGF0YSA9IChjbGFzcyBnb2R1bXBfY29udGFpbmVyICopIGFk YXRhOwogICBjb25zdCBjaGFyICp0eXBlID0gKGNvbnN0IGNoYXIgKikgcHRyOwogICB2b2lk ICoqc2xvdDsKLSAgdm9pZCAqKmlzbG90OwogCiAgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAo ZGF0YS0+dHlwZV9oYXNoLCB0eXBlLCBOT19JTlNFUlQpOwotICBpc2xvdCA9IGh0YWJfZmlu ZF9zbG90IChkYXRhLT5pbnZhbGlkX2hhc2gsIHR5cGUsIE5PX0lOU0VSVCk7Ci0gIGlmIChz bG90ID09IE5VTEwgfHwgaXNsb3QgIT0gTlVMTCkKKyAgaWYgKHNsb3QgPT0gTlVMTCkKICAg ICBmcHJpbnRmIChnb19kdW1wX2ZpbGUsICJ0eXBlIF8lcyBzdHJ1Y3Qge31cbiIsIHR5cGUp OwogICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLm1p c2MtdGVzdHMvZ29kdW1wLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLm1pc2MtdGVzdHMvZ29k dW1wLTEuYwppbmRleCBkMzdhYjBiNWFmNC4uZTIyZmI2YjhhODAgMTAwNjQ0Ci0tLSBhL2dj Yy90ZXN0c3VpdGUvZ2NjLm1pc2MtdGVzdHMvZ29kdW1wLTEuYworKysgYi9nY2MvdGVzdHN1 aXRlL2djYy5taXNjLXRlc3RzL2dvZHVtcC0xLmMKQEAgLTMwNCw2ICszMDQsMTEgQEAgbG9u ZyBkb3VibGUgbGRfdjE7CiBsZF90IGxkX3YyOwogLyogeyBkZy1maW5hbCB7IHNjYW4tZmls ZSBnb2R1bXAtMS5vdXQgIig/bileLy8gdmFyIF9sZF92MiBJTlZBTElELWZsb2F0LVxbMC05 XF0qJCIgfSB9ICovCiAKK3R5cGVkZWYgc3RydWN0IGxkX3MgeyBsb25nIGRvdWJsZSBsZF9z X2Y7IH0gbGRfc190OworLyogeyBkZy1maW5hbCB7IHNjYW4tZmlsZSBnb2R1bXAtMS5vdXQg Iig/bileLy8gdHlwZSBfbGRfcyBzdHJ1Y3QgXHsgbGRfc19mIElOVkFMSUQtZmxvYXQtXFsw LTlcXSo7IFx9JCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1maWxlIGdvZHVtcC0x Lm91dCAiKD9uKV4vLyB0eXBlIF9sZF9zX3QgX2xkX3MkIiB9IH0gKgorLyogeyBkZy1maW5h bCB7IHNjYW4tZmlsZS1ub3QgZ29kdW1wLTEub3V0ICIoP24pXnR5cGUgX2xkX3Mgc3RydWN0 IFx7XH0kIiB9IH0gKi8KKwogLyoqKiBjb21wbGV4IHR5cGVzICoqKi8KIHR5cGVkZWYgX0Nv bXBsZXggY3hfdDsKIC8qIHsgZGctZmluYWwgeyBzY2FuLWZpbGUgZ29kdW1wLTEub3V0ICIo P24pXnR5cGUgX2N4X3QgY29tcGxleFxbMC05XF0qJCIgfSB9ICovCkBAIC00NzYsNiArNDgx LDggQEAgc3RydWN0IHsgZG91YmxlIGQ7IHVpbnQ4X3QgOiAwOyB9IHNkX25vdF9lcXVpdjsK IC8qIHsgZGctZmluYWwgeyBzY2FuLWZpbGUgZ29kdW1wLTEub3V0ICIoP24pXnZhciBfc2Rf bm90X2VxdWl2IHN0cnVjdCBceyBkIGZsb2F0XFswLTlcXSo7IFx9JCIgfSB9ICovCiAKIHR5 cGVkZWYgc3RydWN0IHNfdW5kZWZfdCBzX3VuZGVmX3QyOworLyogeyBkZy1maW5hbCB7IHNj YW4tZmlsZSBnb2R1bXAtMS5vdXQgIig/biledHlwZSBfc191bmRlZl90MiBfc191bmRlZl90 JCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1maWxlIGdvZHVtcC0xLm91dCAiKD9u KV50eXBlIF9zX3VuZGVmX3Qgc3RydWN0IFx7XH0kIiB9IH0gKi8KIAogdHlwZWRlZiBzdHJ1 Y3Qgc19md2QgKnNfZndkX3A7CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1maWxlIGdvZHVtcC0x Lm91dCAiKD9uKV50eXBlIF9zX2Z3ZF9wIFxcKl9zX2Z3ZCQiIH0gfSAqLwpAQCAtODE2LDYg KzgyMyw4IEBAIHVuaW9uIHsgdWludDY0X3QgOiAxOyB1aW50OF90IGNhWzVdOyB9IHUyX3Np emU7CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1maWxlIGdvZHVtcC0xLm91dCAiKD9uKV52YXIg X3UyX3NpemUgc3RydWN0IFx7IGNhIFxcXFs0XFwrMVxcXF11aW50ODsgXH0kIiB9IH0gKi8K IAogdHlwZWRlZiB1bmlvbiB1X3VuZGVmX3QgdV91bmRlZl90MjsKKy8qIHsgZGctZmluYWwg eyBzY2FuLWZpbGUgZ29kdW1wLTEub3V0ICIoP24pXnR5cGUgX3VfdW5kZWZfdDIgX3VfdW5k ZWZfdCQiIH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tZmlsZSBnb2R1bXAtMS5vdXQg Iig/biledHlwZSBfdV91bmRlZl90IHN0cnVjdCBce1x9JCIgfSB9ICovCiAKIHR5cGVkZWYg dW5pb24geyB1aW50NjRfdCBiIDogMTsgdWludDhfdCBjYVs1XTsgfSB0dTNfc2l6ZTsKIC8q IHsgZGctZmluYWwgeyBzY2FuLWZpbGUgZ29kdW1wLTEub3V0ICIoP24pXnR5cGUgX3R1M19z aXplIHN0cnVjdCBceyBjYSBcXFxbNFxcKzFcXFxddWludDg7IEdvZHVtcF8wX3BhZCBcXFxb LlxcXF1ieXRlOyBHb2R1bXBfMV9hbGlnbiBcXFxbMFxcXF11P2ludDY0OyBcfSQiIH0gfSAq Lwo= --------------F87FD7664FA964AE93D2F085 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="solaris-godump.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="solaris-godump.patch" ZGlmZiAtLWdpdCBhL2xpYmdvL21rcnN5c2luZm8uc2ggYi9saWJnby9ta3JzeXNpbmZvLnNo CmluZGV4IGMyOGYwZTUuLjFiZDA5NTYgMTAwNzU1Ci0tLSBhL2xpYmdvL21rcnN5c2luZm8u c2gKKysrIGIvbGliZ28vbWtyc3lzaW5mby5zaApAQCAtMjQsMTEgKzI0LDE4IEBAIGdyZXAg LXYgJ14vLyAnIGdlbi1zeXNpbmZvLmdvIHwgXAogICBncmVwIC12ICdedHlwZSBfdGltZXNw ZWMgJyB8IFwKICAgZ3JlcCAtdiAnXnR5cGUgX2Vwb2xsXycgfCBcCiAgIGdyZXAgLXYgJ150 eXBlIF8qbG9jYWxlW18gXScgfCBcCi0gIGdyZXAgLXYgJ2luNl9hZGRyJyB8IFwKKyAgZ3Jl cCAtdiAnXnR5cGUgX2luNl9hZGRyJyB8IFwKICAgZ3JlcCAtdiAnc29ja2FkZHJfaW42JyB8 IFwKICAgc2VkIC1lICdzL1woW15hLXpBLVowLTlfXVwpX3RpbWV2YWxcKFteYS16QS1aMC05 X11cKS9cMXRpbWV2YWxcMi9nJyBcCisgICAgICAtZSAncy9cKFteYS16QS1aMC05X11cKV90 aW1ldmFsJC9cMXRpbWV2YWwvZycgXAogICAgICAgLWUgJ3MvXChbXmEtekEtWjAtOV9dXClf dGltZXNwZWNfdFwoW15hLXpBLVowLTlfXVwpL1wxdGltZXNwZWNcMi9nJyBcCisgICAgICAt ZSAncy9cKFteYS16QS1aMC05X11cKV90aW1lc3BlY190JC9cMXRpbWVzcGVjX3QvZycgXAog ICAgICAgLWUgJ3MvXChbXmEtekEtWjAtOV9dXClfdGltZXNwZWNcKFteYS16QS1aMC05X11c KS9cMXRpbWVzcGVjXDIvZycgXAorICAgICAgLWUgJ3MvXChbXmEtekEtWjAtOV9dXClfdGlt ZXNwZWMkL1wxdGltZXNwZWMvZycgXAorICAgICAgLWUgJ3MvXChbXmEtekEtWjAtOV9dXClf aW42X2FkZHJcKFteYS16QS1aMC05X11cKS9cMVsxNl1ieXRlXDIvZycgXAorICAgICAgLWUg J3MvXChbXmEtekEtWjAtOV9dXClfaW42X2FkZHIkL1wxWzE2XWJ5dGUvZycgXAorICAgICAg LWUgJ3MvXChbXmEtekEtWjAtOV9dXClfaW42X2FkZHJfdFwoW15hLXpBLVowLTlfXVwpL1wx WzE2XWJ5dGVcMi9nJyBcCisgICAgICAtZSAncy9cKFteYS16QS1aMC05X11cKV9pbjZfYWRk cl90JC9cMVsxNl1ieXRlL2cnIFwKICAgICA+PiAke09VVH0KIAogIyBUaGUgQyBsb25nIHR5 cGUsIG5lZWRlZCBiZWNhdXNlIHRoYXQgaXMgdGhlIHR5cGUgdGhhdCBwdHJhY2UgcmV0dXJu cy4KQEAgLTQ0LDE2ICs1MSw2IEBAIGVsc2UKICAgZXhpdCAxCiBmaQogCi0jIE9uIEFJWCwg dGhlIF9hcnBjb20gc3RydWN0LCBpcyBmaWx0ZXJlZCBieSB0aGUgYWJvdmUgZ3JlcCBzZXF1 ZW5jZSwgYXMgaXQgYXMKLSMgYSBmaWVsZCBvZiB0eXBlIF9pbjZfYWRkciwgYnV0IG90aGVy IHR5cGVzIGRlcGVuZCBvbiBfYXJwY29tLCBzbyB3ZSBuZWVkIHRvCi0jIHB1dCBpdCBiYWNr LgotZ3JlcCAnXnR5cGUgX2FycGNvbSAnIGdlbi1zeXNpbmZvLmdvIHwgXAotICBzZWQgLWUg J3MvX2luNl9hZGRyL1sxNl1ieXRlLycgPj4gJHtPVVR9Ci0KLSMgU2FtZSBvbiBTb2xhcmlz IGZvciBfbWxkX2hkcl90LgotZ3JlcCAnXnR5cGUgX21sZF9oZHJfdCAnIGdlbi1zeXNpbmZv LmdvIHwgXAotICBzZWQgLWUgJ3MvX2luNl9hZGRyL1sxNl1ieXRlLycgPj4gJHtPVVR9Ci0K ICMgVGhlIHRpbWUgc3RydWN0dXJlcyBuZWVkIHNwZWNpYWwgaGFuZGxpbmc6IHdlIG5lZWQg dG8gbmFtZSB0aGUKICMgdHlwZXMsIHNvIHRoYXQgd2UgY2FuIGNhc3QgaW50ZWdlcnMgdG8g dGhlIHJpZ2h0IHR5cGVzIHdoZW4KICMgYXNzaWduaW5nIHRvIHRoZSBzdHJ1Y3R1cmVzLgpA QCAtMTY1LDQwICsxNjIsNiBAQCBmaQogZ3JlcCAnXnR5cGUgX3NlbV90ICcgZ2VuLXN5c2lu Zm8uZ28gfCBcCiAgICAgc2VkIC1lICdzL19zZW1fdC9zZW10LycgPj4gJHtPVVR9CiAKLSMg U29sYXJpcyAyIG5lZWRzIF91P3BhZDEyOF90LCBidXQgaXRzIGRlZmF1bHQgZGVmaW5pdGlv biBpbiB0ZXJtcyBvZiBsb25nCi0jIGRvdWJsZSBpcyBjb21tZW50ZWQgYnkgLWZkdW1wLWdv LXNwZWMuCi1pZiBncmVwICJeLy8gdHlwZSBfcGFkMTI4X3QiIGdlbi1zeXNpbmZvLmdvID4g L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgZWNobyAidHlwZSBfcGFkMTI4X3Qgc3RydWN0IHsg X2wgWzRdaW50MzI7IH0iID4+ICR7T1VUfQotZmkKLWlmIGdyZXAgIl4vLyB0eXBlIF91cGFk MTI4X3QiIGdlbi1zeXNpbmZvLmdvID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgZWNobyAi dHlwZSBfdXBhZDEyOF90IHN0cnVjdCB7IF9sIFs0XXVpbnQzMjsgfSIgPj4gJHtPVVR9Ci1m aQotCi0jIFRoZSBTb2xhcmlzIDExIFVwZGF0ZSAxIF96b25lX25ldF9hZGRyX3Qgc3RydWN0 LgotZ3JlcCAnXnR5cGUgX3pvbmVfbmV0X2FkZHJfdCAnIGdlbi1zeXNpbmZvLmdvIHwgXAot ICAgIHNlZCAtZSAncy9faW42X2FkZHIvWzE2XWJ5dGUvJyBcCi0gICAgPj4gJHtPVVR9Ci0K LSMgVGhlIFNvbGFyaXMgMTEuNCBfZmxvd19hcnBfZGVzY190IHN0cnVjdC4KLWdyZXAgJ150 eXBlIF9mbG93X2FycF9kZXNjX3QgJyBnZW4tc3lzaW5mby5nbyB8IFwKLSAgICBzZWQgLWUg J3MvX2luNl9hZGRyX3QvWzE2XWJ5dGUvZycgXAotICAgID4+ICR7T1VUfQotCi0jIFRoZSBT b2xhcmlzIDExLjQgX2Zsb3dfbDNfZGVzY190IHN0cnVjdC4KLWdyZXAgJ150eXBlIF9mbG93 X2wzX2Rlc2NfdCAnIGdlbi1zeXNpbmZvLmdvIHwgXAotICAgIHNlZCAtZSAncy9faW42X2Fk ZHJfdC9bMTZdYnl0ZS9nJyBcCi0gICAgPj4gJHtPVVR9Ci0KLSMgVGhlIFNvbGFyaXMgMTEu MyBfbWFjX2lwYWRkcl90IHN0cnVjdC4KLWdyZXAgJ150eXBlIF9tYWNfaXBhZGRyX3QgJyBn ZW4tc3lzaW5mby5nbyB8IFwKLSAgICBzZWQgLWUgJ3MvX2luNl9hZGRyX3QvWzE2XWJ5dGUv ZycgXAotICAgID4+ICR7T1VUfQotCi0jIFRoZSBTb2xhcmlzIDExLjMgX21hY3R1bl9pbmZv X3Qgc3RydWN0LgotZ3JlcCAnXnR5cGUgX21hY3R1bl9pbmZvX3QgJyBnZW4tc3lzaW5mby5n byB8IFwKLSAgICBzZWQgLWUgJ3MvX2luNl9hZGRyX3QvWzE2XWJ5dGUvZycgXAotICAgID4+ ICR7T1VUfQotCiAjIFRoZSBTb2xhcmlzIHBvcnRfZXZlbnRfdCBzdHJ1Y3QuCiBncmVwICde dHlwZSBfcG9ydF9ldmVudF90ICcgZ2VuLXN5c2luZm8uZ28gfCBcCiAgICAgc2VkIC1lIHMn L19wb3J0X2V2ZW50X3QvcG9ydGV2ZW50LycgXApkaWZmIC0tZ2l0IGEvbGliZ28vbWtzeXNp bmZvLnNoIGIvbGliZ28vbWtzeXNpbmZvLnNoCmluZGV4IGIzMmEwMjYuLmUyMTRkNjMgMTAw NzU1Ci0tLSBhL2xpYmdvL21rc3lzaW5mby5zaAorKysgYi9saWJnby9ta3N5c2luZm8uc2gK QEAgLTM2LDI0ICszNiwyMiBAQCBncmVwIC12ICdeLy8gJyBnZW4tc3lzaW5mby5nbyB8IFwK ICAgZ3JlcCAtdiAnXnR5cGUgX3RpbWVzdHJ1Y190ICcgfCBcCiAgIGdyZXAgLXYgJ150eXBl IF9lcG9sbF8nIHwgXAogICBncmVwIC12ICdedHlwZSBfKmxvY2FsZVtfIF0nIHwgXAotICBn cmVwIC12ICdpbjZfYWRkcicgfCBcCisgIGdyZXAgLXYgJ150eXBlIF9pbjZfYWRkcicgfCBc CiAgIGdyZXAgLXYgJ3NvY2thZGRyX2luNicgfCBcCiAgIHNlZCAtZSAncy9cKFteYS16QS1a MC05X11cKV90aW1ldmFsXChbXmEtekEtWjAtOV9dXCkvXDFUaW1ldmFsXDIvZycgXAorICAg ICAgLWUgJ3MvXChbXmEtekEtWjAtOV9dXClfdGltZXZhbCQvXDFUaW1ldmFsL2cnIFwKICAg ICAgIC1lICdzL1woW15hLXpBLVowLTlfXVwpX3RpbWVzcGVjX3RcKFteYS16QS1aMC05X11c KS9cMVRpbWVzcGVjXDIvZycgXAorICAgICAgLWUgJ3MvXChbXmEtekEtWjAtOV9dXClfdGlt ZXNwZWNfdCQvXDFUaW1lc3BlYy9nJyBcCiAgICAgICAtZSAncy9cKFteYS16QS1aMC05X11c KV90aW1lc3BlY1woW15hLXpBLVowLTlfXVwpL1wxVGltZXNwZWNcMi9nJyBcCisgICAgICAt ZSAncy9cKFteYS16QS1aMC05X11cKV90aW1lc3BlYyQvXDFUaW1lc3BlYy9nJyBcCiAgICAg ICAtZSAncy9cKFteYS16QS1aMC05X11cKV90aW1lc3RydWNfdFwoW15hLXpBLVowLTlfXVwp L1wxVGltZXN0cnVjXDIvZycgXAorICAgICAgLWUgJ3MvXChbXmEtekEtWjAtOV9dXClfdGlt ZXN0cnVjX3QkL1wxVGltZXN0cnVjL2cnIFwKKyAgICAgIC1lICdzL1woW15hLXpBLVowLTlf XVwpX2luNl9hZGRyXChbXmEtekEtWjAtOV9dXCkvXDFbMTZdYnl0ZVwyL2cnIFwKKyAgICAg IC1lICdzL1woW15hLXpBLVowLTlfXVwpX2luNl9hZGRyJC9cMVsxNl1ieXRlL2cnIFwKKyAg ICAgIC1lICdzL1woW15hLXpBLVowLTlfXVwpX2luNl9hZGRyX3RcKFteYS16QS1aMC05X11c KS9cMVsxNl1ieXRlXDIvZycgXAorICAgICAgLWUgJ3MvXChbXmEtekEtWjAtOV9dXClfaW42 X2FkZHJfdCQvXDFbMTZdYnl0ZS9nJyBcCiAgICAgPj4gJHtPVVR9CiAKLSMgT24gQUlYLCB0 aGUgX2FycGNvbSBzdHJ1Y3QsIGlzIGZpbHRlcmVkIGJ5IHRoZSBhYm92ZSBncmVwIHNlcXVl bmNlLCBhcyBpdCBhcwotIyBhIGZpZWxkIG9mIHR5cGUgX2luNl9hZGRyLCBidXQgb3RoZXIg dHlwZXMgZGVwZW5kIG9uIF9hcnBjb20sIHNvIHdlIG5lZWQgdG8KLSMgcHV0IGl0IGJhY2su Ci1ncmVwICdedHlwZSBfYXJwY29tICcgZ2VuLXN5c2luZm8uZ28gfCBcCi0gIHNlZCAtZSAn cy9faW42X2FkZHIvWzE2XWJ5dGUvJyA+PiAke09VVH0KLQotIyBTYW1lIG9uIFNvbGFyaXMg Zm9yIF9tbGRfaGRyX3QuCi1ncmVwICdedHlwZSBfbWxkX2hkcl90ICcgZ2VuLXN5c2luZm8u Z28gfCBcCi0gIHNlZCAtZSAncy9faW42X2FkZHIvWzE2XWJ5dGUvJyA+PiAke09VVH0KLQog IyBUaGUgZXJybm8gY29uc3RhbnRzLiAgVGhlc2UgZ2V0IHR5cGUgRXJybm8uCiBlZ3JlcCAn I2RlZmluZSBFW0EtWjAtOV9dKyBbMC05RV0nIGVycm5vLmkgfCBcCiAgIHNlZCAtZSAncy9e I2RlZmluZSBcKEVbQS1aMC05X10qXCkgLiokL2NvbnN0IFwxID0gRXJybm8oX1wxKS8nID4+ ICR7T1VUfQpAQCAtNDQxLDE1ICs0MzksNiBAQCBlbHNlCiAgIGV4aXQgMQogZmkKIAotIyBT b2xhcmlzIDIgbmVlZHMgX3U/cGFkMTI4X3QsIGJ1dCBpdHMgZGVmYXVsdCBkZWZpbml0aW9u IGluIHRlcm1zIG9mIGxvbmcKLSMgZG91YmxlIGlzIGNvbW1lbnRlZCBieSAtZmR1bXAtZ28t c3BlYy4KLWlmIGdyZXAgIl4vLyB0eXBlIF9wYWQxMjhfdCIgZ2VuLXN5c2luZm8uZ28gPiAv ZGV2L251bGwgMj4mMTsgdGhlbgotICBlY2hvICJ0eXBlIF9wYWQxMjhfdCBzdHJ1Y3QgeyBf bCBbNF1pbnQzMjsgfSIgPj4gJHtPVVR9Ci1maQotaWYgZ3JlcCAiXi8vIHR5cGUgX3VwYWQx MjhfdCIgZ2VuLXN5c2luZm8uZ28gPiAvZGV2L251bGwgMj4mMTsgdGhlbgotICBlY2hvICJ0 eXBlIF91cGFkMTI4X3Qgc3RydWN0IHsgX2wgWzRddWludDMyOyB9IiA+PiAke09VVH0KLWZp Ci0KICMgVGhlIHRpbWVfdCB0eXBlLgogaWYgZ3JlcCAnXnR5cGUgX3RpbWVfdCAnIGdlbi1z eXNpbmZvLmdvID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KICAgZWNobyAndHlwZSBUaW1lX3Qg X3RpbWVfdCcgPj4gJHtPVVR9CkBAIC00ODMsNyArNDcyLDkgQEAgZWNobyAkdGltZXNwZWMg fCBcCiAgICAgICAtZSAncy90dl9uc2VjICpbYS16QS1aMC05X10qL05zZWMgVGltZXNwZWNf bnNlY190LycgPj4gJHtPVVR9CiAKIHRpbWVzdHJ1Yz1gZ3JlcCAnXnR5cGUgX3RpbWVzdHJ1 Y190ICcgZ2VuLXN5c2luZm8uZ28gfHwgdHJ1ZWAKLWlmIHRlc3QgIiR0aW1lc3RydWMiICE9 ICIiOyB0aGVuCitpZiB0ZXN0ICIkdGltZXN0cnVjIiA9ICJ0eXBlIF90aW1lc3RydWNfdCBf dGltZXNwZWMiOyB0aGVuCisgIGVjaG8gInR5cGUgVGltZXN0cnVjIFRpbWVzcGVjIiA+PiAk e09VVH0KK2VsaWYgdGVzdCAiJHRpbWVzdHJ1YyIgIT0gIiI7IHRoZW4KICAgdGltZXN0cnVj X3NlYz1gZWNobyAkdGltZXN0cnVjIHwgc2VkIC1uIC1lICdzL14uKnR2X3NlYyBcKFteIF0q XCk7LiokL1wxL3AnYAogICB0aW1lc3RydWNfbnNlYz1gZWNobyAkdGltZXN0cnVjIHwgc2Vk IC1uIC1lICdzL14uKnR2X25zZWMgXChbXiBdKlwpOy4qJC9cMS9wJ2AKICAgZWNobyAidHlw ZSBUaW1lc3RydWNfc2VjX3QgPSAkdGltZXN0cnVjX3NlYyIgPj4gJHtPVVR9CkBAIC0xNTIz LDMxICsxNTE0LDYgQEAgaWYgISBncmVwICdjb25zdCBTaXplb2ZJQ01QdjZGaWx0ZXIgJyAk e09VVH0gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgZWNobyAnY29uc3QgU2l6ZW9mSUNN UHY2RmlsdGVyID0gMzInID4+ICR7T1VUfQogZmkKIAotIyBUaGUgU29sYXJpcyAxMSBVcGRh dGUgMSBfem9uZV9uZXRfYWRkcl90IHN0cnVjdC4KLWdyZXAgJ150eXBlIF96b25lX25ldF9h ZGRyX3QgJyBnZW4tc3lzaW5mby5nbyB8IFwKLSAgICBzZWQgLWUgJ3MvX2luNl9hZGRyL1sx Nl1ieXRlLycgXAotICAgID4+ICR7T1VUfQotCi0jIFRoZSBTb2xhcmlzIDExLjQgX2Zsb3df YXJwX2Rlc2NfdCBzdHJ1Y3QuCi1ncmVwICdedHlwZSBfZmxvd19hcnBfZGVzY190ICcgZ2Vu LXN5c2luZm8uZ28gfCBcCi0gICAgc2VkIC1lICdzL19pbjZfYWRkcl90L1sxNl1ieXRlL2cn IFwKLSAgICA+PiAke09VVH0KLQotIyBUaGUgU29sYXJpcyAxMS40IF9mbG93X2wzX2Rlc2Nf dCBzdHJ1Y3QuCi1ncmVwICdedHlwZSBfZmxvd19sM19kZXNjX3QgJyBnZW4tc3lzaW5mby5n byB8IFwKLSAgICBzZWQgLWUgJ3MvX2luNl9hZGRyX3QvWzE2XWJ5dGUvZycgXAotICAgID4+ ICR7T1VUfQotCi0jIFRoZSBTb2xhcmlzIDExLjMgX21hY19pcGFkZHJfdCBzdHJ1Y3QuCi1n cmVwICdedHlwZSBfbWFjX2lwYWRkcl90ICcgZ2VuLXN5c2luZm8uZ28gfCBcCi0gICAgc2Vk IC1lICdzL19pbjZfYWRkcl90L1sxNl1ieXRlL2cnIFwKLSAgICA+PiAke09VVH0KLQotIyBU aGUgU29sYXJpcyAxMS4zIF9tYWN0dW5faW5mb190IHN0cnVjdC4KLWdyZXAgJ150eXBlIF9t YWN0dW5faW5mb190ICcgZ2VuLXN5c2luZm8uZ28gfCBcCi0gICAgc2VkIC1lICdzL19pbjZf YWRkcl90L1sxNl1ieXRlL2cnIFwKLSAgICA+PiAke09VVH0KLQogIyBUeXBlICd1aW50MTI4 JyBpcyBuZWVkZWQgaW4gYSBjb3VwbGUgb2YgdHlwZSBkZWZpbml0aW9ucyBvbiBhcm02NCxz dWNoCiAjIGFzIF91c2VyX2Zwc2ltZF9zdHJ1Y3QsIF9lbGZfZnByZWdzZXRfdCwgZXRjLgog aWYgISBncmVwICdedHlwZSB1aW50MTI4JyAke09VVH0gPiAvZGV2L251bGwgMj4mMTsgdGhl bgpkaWZmIC0tZ2l0IGEvbGliZ28vc3lzaW5mby5jIGIvbGliZ28vc3lzaW5mby5jCmluZGV4 IGEwNjBlYTguLjhjZTA2MWUgMTAwNjQ0Ci0tLSBhL2xpYmdvL3N5c2luZm8uYworKysgYi9s aWJnby9zeXNpbmZvLmMKQEAgLTExLDYgKzExLDcgQEAKIAogI2luY2x1ZGUgPHN0ZGRlZi5o PgogI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8 c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4K --------------F87FD7664FA964AE93D2F085--