Re: [PATCH] c++, v3: implement C++29 P2287R6 - Designated-initializers for Base Classes [PR125989]
Jason Merrill <[email protected]> Tue, 4 Aug 2026 21:46:21 -0400
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------EDh29PkNeJU00a2vQ3OP1itC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 7/27/26 4:39 PM, Jakub Jelinek wrote: > On Mon, Jul 27, 2026 at 09:26:55AM +0200, Jakub Jelinek wrote: >> On Mon, Jul 27, 2026 at 09:01:32AM +0200, Jakub Jelinek wrote: >>> Added to testsuite (also the other testcases from the thread). >>> I think if we really wanted this lookup caching, either we'd need to create >>> a vector, store the cached lookup results in there and pass it around >>> to recursive calls, or we could create a vector, store there the original >>> values, change the *->index to the lookup results and ensure (through RAII, >>> we have way too many returns) to revert this back afterwards. >> >> Actually, for the RAII cleanup, we could just remember the start (i.e. >> d->cur from some point) and count how many need to be restored, the >> old ones should be always IDENTIFIER_NODE and new ones FIELD_DECLs from >> their lookup, so the cleanup could be just store there DECL_NAME of >> the FIELD_DECLs. > > Here is an updated version which does it that way. Nice. But it seems to me that once we cache the lookups this way, we don't need to determine the set of designators that belong to the current base; we should be able to look them all up and let the normal handling work from there. I felt awkward about continuing to ask you for changes, so I poked at it some myself. The first patch changes reshape_init_class to avoid changing d->end, and I think makes sense to combine with your patch. It would also be good to check -Wmissing-braces in at least one of the new testcases. The second patch changes _class to go through reshape_init_r for this case instead of directly recursing into reshape_init_class, which avoids the duplication of -Wmissing-braces handling. This required more adjustment of reshape_init_r than I expected, so I'm inclined to make it a followup, but I think it's a useful clarification. Thoughts? Jason --------------EDh29PkNeJU00a2vQ3OP1itC Content-Type: text/x-patch; charset=UTF-8; name="simplify.patch" Content-Disposition: attachment; filename="simplify.patch" Content-Transfer-Encoding: base64 Y29tbWl0IGE4YWYwOWMyZDBmYjZhYmJhOGU5OWM0YzFjN2E3ZDg0MDJlNDk5ZmMKQXV0aG9yOiBK YXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpEYXRlOiAgIFR1ZSBBdWcgNCAwNToxNTow MSAyMDI2IC0wNDAwCgogICAgYXZvaWQgY2hhbmdpbmcgZC0+ZW5kCgpkaWZmIC0tZ2l0IGEvZ2Nj L2NwL2RlY2wuY2MgYi9nY2MvY3AvZGVjbC5jYwppbmRleCA2Mjk1MWRkYTNiMC4uYjVkOWVkMDU4 NzQgMTAwNjQ0Ci0tLSBhL2djYy9jcC9kZWNsLmNjCisrKyBiL2djYy9jcC9kZWNsLmNjCkBAIC03 ODU0LDkgKzc4NTQsOSBAQCByZXNoYXBlX2luaXRfY2xhc3MgKHRyZWUgdHlwZSwgcmVzaGFwZV9p dGVyICpkLCBib29sIGZpcnN0X2luaXRpYWxpemVyX3AsCiAgICAgewogICAgICAgdHJlZSBmaWVs ZF9pbml0OwogICAgICAgY29uc3RydWN0b3JfZWx0ICpvbGRfY3VyID0gZC0+Y3VyOwotICAgICAg Y29uc3RydWN0b3JfZWx0ICpvbGRfZW5kID0gZC0+ZW5kLCAqbmV3X2VuZCA9IE5VTEw7CiAgICAg ICB1bnNpZ25lZCBvbGRfcmF3X2lkeCA9IGQtPnJhd19pZHg7CiAgICAgICBib29sIGRpcmVjdF9k ZXNpZyA9IGZhbHNlOworICAgICAgYm9vbCBzdWJjbGFzcyA9IGZhbHNlOwogCiAgICAgICAvKiBI YW5kbGUgQysrMjAgZGVzaWduYXRlZCBpbml0aWFsaXplcnMuICAqLwogICAgICAgaWYgKGQtPmN1 ci0+aW5kZXgpCkBAIC03OTQ2LDExICs3OTQ2LDE4IEBAIHJlc2hhcGVfaW5pdF9jbGFzcyAodHJl ZSB0eXBlLCByZXNoYXBlX2l0ZXIgKmQsIGJvb2wgZmlyc3RfaW5pdGlhbGl6ZXJfcCwKIAkJICBp Y3R4ID0gY2N0eDsKIAkJfQogCisJICAgICAgLyogSW4gQysrMjkgYSBkZXNpZ25hdG9yIGNhbiBu YW1lIGEgbWVtYmVyIG9mIGEgYmFzZTsgaW4gdGhhdAorCQkgY2FzZSwgZ28gdGhyb3VnaCB0aGUg ZGVzaWduYXRvcnMgYW5kIHJlcGxhY2UgaWRzIHdpdGggX0RFQ0xzCisJCSB0byByZWNvcmQgdGhl IGxvb2t1cCBmb3IgdGhlIG1vc3QtZGVyaXZlZCBjbGFzcy4gICovCiAJICAgICAgaWYgKGN4eF9k aWFsZWN0ID49IGN4eDI5KQogCQl7CiAJCSAgdHJlZSBpYmluZm8gPSBsb29rdXBfYmFzZSAodHlw ZSwgaWN0eCwgYmFfdW5pcXVlLCBOVUxMLAogCQkJCQkgICAgIGNvbXBsYWluKTsKLQkJICBpZiAo aWJpbmZvICYmIGliaW5mbyAhPSBlcnJvcl9tYXJrX25vZGUpCisJCSAgaWYgKCFpYmluZm8pCisJ CSAgICAvKiBUaGUgZGVzaWduYXRvciBuYW1lcyBhIGZpZWxkIG91dHNpZGUgdGhpcyBiYXNlIGNs YXNzLAorCQkgICAgICAgc28gd2UncmUgZG9uZS4gICovCisJCSAgICBicmVhazsKKwkJICBlbHNl IGlmIChpYmluZm8gIT0gZXJyb3JfbWFya19ub2RlKQogCQkgICAgewogCQkgICAgICB3aGlsZSAo QklORk9fSU5IRVJJVEFOQ0VfQ0hBSU4gKGliaW5mbykgIT0gYmluZm8pCiAJCQlpYmluZm8gPSBC SU5GT19JTkhFUklUQU5DRV9DSEFJTiAoaWJpbmZvKTsKQEAgLTc5NTgsMjggKzc5NjUsMjIgQEAg cmVzaGFwZV9pbml0X2NsYXNzICh0cmVlIHR5cGUsIHJlc2hhcGVfaXRlciAqZCwgYm9vbCBmaXJz dF9pbml0aWFsaXplcl9wLAogCiAJCSAgICAgIGRlc2lnX3VuZG8udW5kbyAoKTsKIAotCQkgICAg ICAvKiBGaW5kIG91dCB3aGljaCBmb2xsb3dpbmcgZWxlbWVudHMgYWxzbyBjb3JyZXNwb25kCi0J CQkgdG8gdGhlIHNhbWUgaWJpbmZvLCBhbmQgdGVtcG9yYXJpbHkgY2hhbmdlIGQtPmVuZAotCQkJ IHRvIHRoZSBmaXJzdCBlbGVtZW50IGFmdGVyIHRoYXQuICAqLwotCQkgICAgICBuZXdfZW5kID0g ZC0+Y3VyICsgMTsKIAkJICAgICAgaWYgKGQtPmN1ci0+aW5kZXggIT0gZmllbGQpCiAJCQl7CiAJ CQkgIGQtPmN1ci0+aW5kZXggPSBmaWVsZDsKIAkJCSAgZGVzaWdfdW5kby5zdGFydCA9IGQtPmN1 cjsKIAkJCX0KLQkJICAgICAgd2hpbGUgKG5ld19lbmQgIT0gZC0+ZW5kKQorCQkgICAgICBjb25z dHJ1Y3Rvcl9lbHQgKmUgPSBkLT5jdXIgKyAxOworCQkgICAgICBmb3IgKDsgZSAhPSBkLT5lbmQ7 ICsrZSkKIAkJCXsKLQkJCSAgaWYgKG5ld19lbmQtPmluZGV4ID09IE5VTExfVFJFRSkKKwkJCSAg aWYgKGUtPmluZGV4ID09IE5VTExfVFJFRQorCQkJICAgICAgfHwgZS0+aW5kZXggPT0gZXJyb3Jf bWFya19ub2RlKQogCQkJICAgIGJyZWFrOwogCQkJICBpZiAoZGVzaWdfdW5kby5zdGFydCkKIAkJ CSAgICB7Ci0JCQkgICAgICBpZiAoVFJFRV9DT0RFIChuZXdfZW5kLT5pbmRleCkKLQkJCQkgICE9 IElERU5USUZJRVJfTk9ERSkKLQkJCQlicmVhazsKLQkJCSAgICAgIGZpZWxkID0gZ2V0X2NsYXNz X2JpbmRpbmcgKHR5cGUsIG5ld19lbmQtPmluZGV4KTsKLQkJCSAgICAgIGlmIChmaWVsZCAhPSBO VUxMX1RSRUUpCi0JCQkJYnJlYWs7Ci0JCQkgICAgICBmaWVsZCA9IGxvb2t1cF9tZW1iZXIgKHR5 cGUsIG5ld19lbmQtPmluZGV4LAorCQkJICAgICAgZ2NjX2Fzc2VydCAoVFJFRV9DT0RFIChlLT5p bmRleCkKKwkJCQkJICA9PSBJREVOVElGSUVSX05PREUpOworCQkJICAgICAgZmllbGQgPSBsb29r dXBfbWVtYmVyICh0eXBlLCBlLT5pbmRleCwKIAkJCQkJCSAgICAgLypwcm90ZWN0PSovMiwKIAkJ CQkJCSAgICAgLyp3YW50X3R5cGU9Ki9mYWxzZSwKIAkJCQkJCSAgICAgdGZfbm9uZSk7CkBAIC03 OTg4LDMyICs3OTg5LDE1IEBAIHJlc2hhcGVfaW5pdF9jbGFzcyAodHJlZSB0eXBlLCByZXNoYXBl X2l0ZXIgKmQsIGJvb2wgZmlyc3RfaW5pdGlhbGl6ZXJfcCwKIAkJCSAgICB9CiAJCQkgIGVsc2UK IAkJCSAgICB7Ci0JCQkgICAgICBpZiAoVFJFRV9DT0RFIChuZXdfZW5kLT5pbmRleCkgIT0gRklF TERfREVDTCkKLQkJCQlicmVhazsKLQkJCSAgICAgIGZpZWxkID0gbmV3X2VuZC0+aW5kZXg7CisJ CQkgICAgICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKGUtPmluZGV4KSA9PSBGSUVMRF9ERUNMKTsK KwkJCSAgICAgIGZpZWxkID0gZS0+aW5kZXg7CiAJCQkgICAgfQogCi0JCQkgIHRyZWUgbmljdHgg PSBERUNMX0NPTlRFWFQgKGZpZWxkKTsKLQkJCSAgaWYgKHNhbWVfdHlwZV9pZ25vcmluZ190b3Bf bGV2ZWxfcXVhbGlmaWVyc19wIChuaWN0eCwKLQkJCQkJCQkJCSB0eXBlKSkKLQkJCSAgICBicmVh azsKLQkJCSAgd2hpbGUgKEFOT05fQUdHUl9UWVBFX1AgKG5pY3R4KSkKLQkJCSAgICBuaWN0eCA9 IFRZUEVfQ09OVEVYVCAobmljdHgpOwotCi0JCQkgIGliaW5mbyA9IGxvb2t1cF9iYXNlICh0eXBl LCBuaWN0eCwgYmFfdW5pcXVlLCBOVUxMLAotCQkJCQkJdGZfbm9uZSk7Ci0JCQkgIGlmICghaWJp bmZvIHx8IGliaW5mbyA9PSBlcnJvcl9tYXJrX25vZGUpCi0JCQkgICAgYnJlYWs7Ci0JCQkgIHdo aWxlIChCSU5GT19JTkhFUklUQU5DRV9DSEFJTiAoaWJpbmZvKSAhPSBiaW5mbykKLQkJCSAgICBp YmluZm8gPSBCSU5GT19JTkhFUklUQU5DRV9DSEFJTiAoaWJpbmZvKTsKLQkJCSAgaWYgKFRSRUVf VFlQRSAoaWJpbmZvKSAhPSBpY3R4KQotCQkJICAgIGJyZWFrOwogCQkJICBpZiAoZGVzaWdfdW5k by5zdGFydCkKLQkJCSAgICBuZXdfZW5kLT5pbmRleCA9IGZpZWxkOwotCQkJICBuZXdfZW5kKys7 CisJCQkgICAgZS0+aW5kZXggPSBmaWVsZDsKIAkJCX0KIAkJICAgICAgaWYgKGRlc2lnX3VuZG8u c3RhcnQpCi0JCQlkZXNpZ191bmRvLmVuZCA9IG5ld19lbmQ7CisJCQlkZXNpZ191bmRvLmVuZCA9 IGU7CiAJCSAgICAgIGdvdG8gZm91bmQ7CiAJCSAgICB9CiAJCX0KQEAgLTgwMzIsNiArODAxNiw3 IEBAIHJlc2hhcGVfaW5pdF9jbGFzcyAodHJlZSB0eXBlLCByZXNoYXBlX2l0ZXIgKmQsIGJvb2wg Zmlyc3RfaW5pdGlhbGl6ZXJfcCwKIAkgICAgICBnY2NfYXNzZXJ0IChhYWZpZWxkKTsKIAkgICAg ICBmaWVsZCA9IGFhZmllbGQ7CiAJICAgICAgZGlyZWN0X2Rlc2lnID0gZmFsc2U7CisJICAgICAg c3ViY2xhc3MgPSB0cnVlOwogCSAgICB9CiAJfQogCkBAIC04MDYzLDEzICs4MDQ4LDE3IEBAIHJl c2hhcGVfaW5pdF9jbGFzcyAodHJlZSB0eXBlLCByZXNoYXBlX2l0ZXIgKmQsIGJvb2wgZmlyc3Rf aW5pdGlhbGl6ZXJfcCwKIAkJCQkJICAgIGQtPmN1ci0+dmFsdWUsIGNvbXBsYWluKTsKIAkgIGQt PmN1cisrOwogCX0KLSAgICAgIGVsc2UgaWYgKG5ld19lbmQpCisgICAgICBlbHNlIGlmIChzdWJj bGFzcykKIAl7Ci0JICBkLT5lbmQgPSBuZXdfZW5kOworCSAgaWYgKGNvbXBsYWluICYgdGZfd2Fy bmluZykKKwkgICAgd2FybmluZyAoT1BUX1dtaXNzaW5nX2JyYWNlcywKKwkJICAgICAibWlzc2lu ZyBicmFjZXMgYXJvdW5kIGluaXRpYWxpemVyIGZvciAlcVQiLAorCQkgICAgIFRSRUVfVFlQRSAo ZmllbGQpKTsKIAkgIGZpZWxkX2luaXQgPSByZXNoYXBlX2luaXRfY2xhc3MgKFRSRUVfVFlQRSAo ZmllbGQpLCBkLAogCQkJCQkgICAvKmZpcnN0X2luaXRpYWxpemVyX3A9Ki9OVUxMX1RSRUUsCiAJ CQkJCSAgIGNvbXBsYWluKTsKLQkgIGQtPmVuZCA9IG9sZF9lbmQ7CisJICBpZiAoVFJFRV9DT0RF IChmaWVsZF9pbml0KSA9PSBDT05TVFJVQ1RPUikKKwkgICAgQ09OU1RSVUNUT1JfQlJBQ0VTX0VM SURFRF9QIChmaWVsZF9pbml0KSA9IHRydWU7CiAJfQogICAgICAgZWxzZQogCWZpZWxkX2luaXQg PSByZXNoYXBlX2luaXRfciAoVFJFRV9UWVBFIChmaWVsZCksIGQsCg== --------------EDh29PkNeJU00a2vQ3OP1itC Content-Type: text/x-patch; charset=UTF-8; name="reshape_r.patch" Content-Disposition: attachment; filename="reshape_r.patch" Content-Transfer-Encoding: base64 Y29tbWl0IGVhNDhjM2QyOTEzMjM4NGEzMmI4YzBmZDFlMDM2ODE4YWJiYjg5OTYKQXV0aG9yOiBK YXNvbiBNZXJyaWxsIDxqYXNvbkByZWRoYXQuY29tPgpEYXRlOiAgIFR1ZSBBdWcgNCAxOTo0NTox NyAyMDI2IC0wNDAwCgogICAgYXZvaWQgcmVzaGFwZV9pbml0X2NsYXNzIHJlY3Vyc2lvbgoKZGlm ZiAtLWdpdCBhL2djYy9jcC9kZWNsLmNjIGIvZ2NjL2NwL2RlY2wuY2MKaW5kZXggYjVkOWVkMDU4 NzQuLmFjODIwZDUzZDc3IDEwMDY0NAotLS0gYS9nY2MvY3AvZGVjbC5jYworKysgYi9nY2MvY3Av ZGVjbC5jYwpAQCAtNzQ3Myw2ICs3NDczLDcgQEAgc3RydWN0IHJlc2hhcGVfaXRlcgogfTsKIAog c3RhdGljIHRyZWUgcmVzaGFwZV9pbml0X3IgKHRyZWUsIHJlc2hhcGVfaXRlciAqLCB0cmVlLCB0 c3Vic3RfZmxhZ3NfdCk7CitzdGF0aWMgdHJlZSByZXNoYXBlX3NpbmdsZV9pbml0ICh0cmVlLCB0 cmVlLCB0c3Vic3RfZmxhZ3NfdCk7CiAKIC8qIEZJRUxEIGlzIGFuIGVsZW1lbnQgb2YgVFlQRV9G SUVMRFMgb3IgTlVMTC4gIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlIHZhbHVlCiAgICByZXR1cm5l ZCBpcyB0aGUgbmV4dCBGSUVMRF9ERUNMIChwb3NzaWJseSBGSUVMRCBpdHNlbGYpIHRoYXQgY2Fu IGJlCkBAIC03NjU5LDYgKzc2NjAsMTEgQEAgcmVzaGFwZV9pbml0X2FycmF5XzEgKHRyZWUgZWx0 X3R5cGUsIHRyZWUgbWF4X2luZGV4LCByZXNoYXBlX2l0ZXIgKmQsCiAJICAgIH0KIAkgIFRSRUVf VFlQRSAoZWx0X2luaXQpID0gZWx0X3R5cGU7CiAJfQorICAgICAgZWxzZSBpZiAoZC0+Y3VyLT5p bmRleCkKKwl7CisJICBlbHRfaW5pdCA9IHJlc2hhcGVfc2luZ2xlX2luaXQgKGVsdF90eXBlLCBk LT5jdXItPnZhbHVlLCBjb21wbGFpbik7CisJICBkLT5jdXIrKzsKKwl9CiAgICAgICBlbHNlCiAJ ZWx0X2luaXQgPSByZXNoYXBlX2luaXRfciAoZWx0X3R5cGUsIGQsCiAJCQkJICAgLypmaXJzdF9p bml0aWFsaXplcl9wPSovTlVMTF9UUkVFLApAQCAtNzg1Niw3ICs3ODYyLDYgQEAgcmVzaGFwZV9p bml0X2NsYXNzICh0cmVlIHR5cGUsIHJlc2hhcGVfaXRlciAqZCwgYm9vbCBmaXJzdF9pbml0aWFs aXplcl9wLAogICAgICAgY29uc3RydWN0b3JfZWx0ICpvbGRfY3VyID0gZC0+Y3VyOwogICAgICAg dW5zaWduZWQgb2xkX3Jhd19pZHggPSBkLT5yYXdfaWR4OwogICAgICAgYm9vbCBkaXJlY3RfZGVz aWcgPSBmYWxzZTsKLSAgICAgIGJvb2wgc3ViY2xhc3MgPSBmYWxzZTsKIAogICAgICAgLyogSGFu ZGxlIEMrKzIwIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXJzLiAgKi8KICAgICAgIGlmIChkLT5jdXIt PmluZGV4KQpAQCAtODAxNiw3ICs4MDIxLDYgQEAgcmVzaGFwZV9pbml0X2NsYXNzICh0cmVlIHR5 cGUsIHJlc2hhcGVfaXRlciAqZCwgYm9vbCBmaXJzdF9pbml0aWFsaXplcl9wLAogCSAgICAgIGdj Y19hc3NlcnQgKGFhZmllbGQpOwogCSAgICAgIGZpZWxkID0gYWFmaWVsZDsKIAkgICAgICBkaXJl Y3RfZGVzaWcgPSBmYWxzZTsKLQkgICAgICBzdWJjbGFzcyA9IHRydWU7CiAJICAgIH0KIAl9CiAK QEAgLTgwNDgsMTggKzgwNTIsNiBAQCByZXNoYXBlX2luaXRfY2xhc3MgKHRyZWUgdHlwZSwgcmVz aGFwZV9pdGVyICpkLCBib29sIGZpcnN0X2luaXRpYWxpemVyX3AsCiAJCQkJCSAgICBkLT5jdXIt PnZhbHVlLCBjb21wbGFpbik7CiAJICBkLT5jdXIrKzsKIAl9Ci0gICAgICBlbHNlIGlmIChzdWJj bGFzcykKLQl7Ci0JICBpZiAoY29tcGxhaW4gJiB0Zl93YXJuaW5nKQotCSAgICB3YXJuaW5nIChP UFRfV21pc3NpbmdfYnJhY2VzLAotCQkgICAgICJtaXNzaW5nIGJyYWNlcyBhcm91bmQgaW5pdGlh bGl6ZXIgZm9yICVxVCIsCi0JCSAgICAgVFJFRV9UWVBFIChmaWVsZCkpOwotCSAgZmllbGRfaW5p dCA9IHJlc2hhcGVfaW5pdF9jbGFzcyAoVFJFRV9UWVBFIChmaWVsZCksIGQsCi0JCQkJCSAgIC8q Zmlyc3RfaW5pdGlhbGl6ZXJfcD0qL05VTExfVFJFRSwKLQkJCQkJICAgY29tcGxhaW4pOwotCSAg aWYgKFRSRUVfQ09ERSAoZmllbGRfaW5pdCkgPT0gQ09OU1RSVUNUT1IpCi0JICAgIENPTlNUUlVD VE9SX0JSQUNFU19FTElERURfUCAoZmllbGRfaW5pdCkgPSB0cnVlOwotCX0KICAgICAgIGVsc2UK IAlmaWVsZF9pbml0ID0gcmVzaGFwZV9pbml0X3IgKFRSRUVfVFlQRSAoZmllbGQpLCBkLAogCQkJ CSAgICAgLypmaXJzdF9pbml0aWFsaXplcl9wPSovTlVMTF9UUkVFLApAQCAtODEyNiw5ICs4MTE4 LDEzIEBAIGhhc19kZXNpZ25hdG9yX3Byb2JsZW0gKHJlc2hhcGVfaXRlciAqZCwgdHN1YnN0X2Zs YWdzX3QgY29tcGxhaW4pCiAgIGlmIChkLT5jdXItPmluZGV4KQogICAgIHsKICAgICAgIGlmIChj b21wbGFpbiAmIHRmX2Vycm9yKQotCWVycm9yX2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2Mg KGQtPmN1ci0+aW5kZXgpLAotCQkgICJDOTkgZGVzaWduYXRvciAlcUUgb3V0c2lkZSBhZ2dyZWdh dGUgaW5pdGlhbGl6ZXIiLAotCQkgIGQtPmN1ci0+aW5kZXgpOworCXsKKwkgIGVycm9yX2F0IChj cF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGQtPmN1ci0+aW5kZXgpLAorCQkgICAgIkM5OSBkZXNp Z25hdG9yICVxRSBvdXRzaWRlIGFnZ3JlZ2F0ZSBpbml0aWFsaXplciIsCisJCSAgICBkLT5jdXIt PmluZGV4KTsKKwkgIC8qIEF2b2lkIGNvbmZ1c2lvbiBpbiByZXNoYXBlX2luaXRfci4gICovCisJ ICBkLT5jdXItPmluZGV4ID0gTlVMTF9UUkVFOworCX0KICAgICAgIGVsc2UKIAlyZXR1cm4gdHJ1 ZTsKICAgICB9CkBAIC04MTg3LDEyICs4MTgzLDE0IEBAIHJlc2hhcGVfaW5pdF9yICh0cmVlIHR5 cGUsIHJlc2hhcGVfaXRlciAqZCwgdHJlZSBmaXJzdF9pbml0aWFsaXplcl9wLAogCiAgIC8qIEEg bm9uLWFnZ3JlZ2F0ZSB0eXBlIGlzIGFsd2F5cyBpbml0aWFsaXplZCB3aXRoIGEgc2luZ2xlCiAg ICAgIGluaXRpYWxpemVyLiAgKi8KLSAgaWYgKCFDUF9BR0dSRUdBVEVfVFlQRV9QICh0eXBlKQot ICAgICAgLyogQXMgaXMgYW4gYXJyYXkgd2l0aCBkZXBlbmRlbnQgYm91bmQsIHdoaWNoIHdlIGNh biBzZWUKLQkgZHVyaW5nIEMrKzIwIGFnZ3JlZ2F0ZSBDVEFELiAgKi8KLSAgICAgIHx8IChjeHhf ZGlhbGVjdCA+PSBjeHgyMAotCSAgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBBUlJBWV9UWVBFCi0J ICAmJiB1c2VzX3RlbXBsYXRlX3Bhcm1zIChUWVBFX0RPTUFJTiAodHlwZSkpKSkKKyAgaWYgKCgh Q1BfQUdHUkVHQVRFX1RZUEVfUCAodHlwZSkKKyAgICAgICAvKiBBcyBpcyBhbiBhcnJheSB3aXRo IGRlcGVuZGVudCBib3VuZCwgd2hpY2ggd2UgY2FuIHNlZQorCSAgZHVyaW5nIEMrKzIwIGFnZ3Jl Z2F0ZSBDVEFELiAgKi8KKyAgICAgICB8fCAoY3h4X2RpYWxlY3QgPj0gY3h4MjAKKwkgICAmJiBU UkVFX0NPREUgKHR5cGUpID09IEFSUkFZX1RZUEUKKwkgICAmJiB1c2VzX3RlbXBsYXRlX3Bhcm1z IChUWVBFX0RPTUFJTiAodHlwZSkpKSkKKyAgICAgIC8qIEJ1dCBpZiB0aGVyZSdzIGEgZGVzaWdu YXRvciwgZGVmZXIgc28gd2UgZGlhZ25vc2UgdGhhdC4gICovCisgICAgICAmJiAhZC0+Y3VyLT5p bmRleCkKICAgICB7CiAgICAgICAvKiBJdCBpcyBpbnZhbGlkIHRvIGluaXRpYWxpemUgYSBub24t YWdncmVnYXRlIHR5cGUgd2l0aCBhCiAJIGJyYWNlLWVuY2xvc2VkIGluaXRpYWxpemVyIGJlZm9y ZSBDKysweC4KQEAgLTgyNTksNiArODI1Nyw4IEBAIHJlc2hhcGVfaW5pdF9yICh0cmVlIHR5cGUs IHJlc2hhcGVfaXRlciAqZCwgdHJlZSBmaXJzdF9pbml0aWFsaXplcl9wLAogCSBsb29raW5nIHRo cm91Z2ggdGhlIG91dGVybW9zdCBicmFjZXM7IEEgYTIgPSB7IGExIH07IGlzIG5vdCBhCiAJIHZh bGlkIGFnZ3JlZ2F0ZSBpbml0aWFsaXphdGlvbi4gICovCiAgICAgICAmJiAhZmlyc3RfaW5pdGlh bGl6ZXJfcAorICAgICAgLyogQnV0IGEgZGVzaWduYXRvciBjYW4gaW5kaWNhdGUgYnJhY2UgZWxp c2lvbi4gICovCisgICAgICAmJiAhZC0+Y3VyLT5pbmRleAogICAgICAgJiYgKHNhbWVfdHlwZV9p Z25vcmluZ190b3BfbGV2ZWxfcXVhbGlmaWVyc19wICh0eXBlLCBUUkVFX1RZUEUgKGluaXQpKQog CSAgfHwgY2FuX2NvbnZlcnRfYXJnICh0eXBlLCBUUkVFX1RZUEUgKGluaXQpLAogCQkJICAgICAg VFJFRV9DT0RFIChpbml0KSA9PSBSQVdfREFUQV9DU1QKQEAgLTgzMTMsNyArODMxMyw5IEBAIHJl c2hhcGVfaW5pdF9yICh0cmVlIHR5cGUsIHJlc2hhcGVfaXRlciAqZCwgdHJlZSBmaXJzdF9pbml0 aWFsaXplcl9wLAogICBib29sIGJyYWNlc19lbGlkZWRfcCA9IGZhbHNlOwogICBpZiAoIWZpcnN0 X2luaXRpYWxpemVyX3ApCiAgICAgewotICAgICAgaWYgKFRSRUVfQ09ERSAoc3RyaXBwZWRfaW5p dCkgPT0gQ09OU1RSVUNUT1IpCisgICAgICBpZiAoVFJFRV9DT0RFIChzdHJpcHBlZF9pbml0KSA9 PSBDT05TVFJVQ1RPUgorCSAgLyogSWYgYSBkZXNpZ25hdG9yIGdldHMgaGVyZSwgd2UncmUgbWlz c2luZyBicmFjZXMuICAqLworCSAgJiYgIWQtPmN1ci0+aW5kZXgpCiAJewogCSAgdHJlZSBpbml0 X3R5cGUgPSBUUkVFX1RZUEUgKGluaXQpOwogCSAgaWYgKGluaXRfdHlwZSAmJiBUWVBFX1BUUk1F TUZVTkNfUCAoaW5pdF90eXBlKSkKQEAgLTgzMjYsMTUgKzgzMjgsNiBAQCByZXNoYXBlX2luaXRf ciAodHJlZSB0eXBlLCByZXNoYXBlX2l0ZXIgKmQsIHRyZWUgZmlyc3RfaW5pdGlhbGl6ZXJfcCwK IAkgICAgIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiBvZiBhcnJheXMgYW5kIHNpbWlsYXIuICAq LwogCSAgZWxzZSBpZiAoQ09NUE9VTkRfTElURVJBTF9QIChzdHJpcHBlZF9pbml0KSkKIAkgICAg Z2NjX2Fzc2VydCAoIUJSQUNFX0VOQ0xPU0VEX0lOSVRJQUxJWkVSX1AgKHN0cmlwcGVkX2luaXQp KTsKLQkgIC8qIElmIHdlIGhhdmUgYW4gdW5yZXNvbHZlZCBkZXNpZ25hdG9yLCB3ZSBuZWVkIHRv IGZpbmQgdGhlIG1lbWJlciBpdAotCSAgICAgZGVzaWduYXRlcyB3aXRoaW4gVFlQRSwgc28gcHJv Y2VlZCB0byB0aGUgcm91dGluZXMgYmVsb3cuICBGb3IKLQkgICAgIEZJRUxEX0RFQ0wgb3IgSU5U RUdFUl9DU1QgZGVzaWduYXRvcnMsIHdlJ3JlIGFscmVhZHkgaW5pdGlhbGl6aW5nCi0JICAgICB0 aGUgZGVzaWduYXRlZCBlbGVtZW50LiAgKi8KLQkgIGVsc2UgaWYgKGQtPmN1ci0+aW5kZXgKLQkJ ICAgJiYgVFJFRV9DT0RFIChkLT5jdXItPmluZGV4KSA9PSBJREVOVElGSUVSX05PREUpCi0JICAg IC8qIEJyYWNlIGVsaXNpb24gd2l0aCBkZXNpZ25hdG9ycyBpcyBvbmx5IHBlcm1pdHRlZCBmb3Ig YW5vbnltb3VzCi0JICAgICAgIGFnZ3JlZ2F0ZXMuICAqLwotCSAgICBnY2NfY2hlY2tpbmdfYXNz ZXJ0IChBTk9OX0FHR1JfVFlQRV9QICh0eXBlKSk7CiAJICAvKiBBIENPTlNUUlVDVE9SIG9mIHRo ZSB0YXJnZXQncyB0eXBlIGlzIGEgcHJldmlvdXNseQogCSAgICAgZGlnZXN0ZWQgaW5pdGlhbGl6 ZXIuICAqLwogCSAgZWxzZSBpZiAoc2FtZV90eXBlX2lnbm9yaW5nX3RvcF9sZXZlbF9xdWFsaWZp ZXJzX3AgKHR5cGUsIGluaXRfdHlwZSkpCg== --------------EDh29PkNeJU00a2vQ3OP1itC--