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.133.124]) by sourceware.org (Postfix) with ESMTPS id 1EFAD3858025 for ; Thu, 23 Jun 2022 17:47:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1EFAD3858025 Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-282-NRf7s_cBMkGvCLs0nL029w-1; Thu, 23 Jun 2022 13:47:46 -0400 X-MC-Unique: NRf7s_cBMkGvCLs0nL029w-1 Received: by mail-ed1-f72.google.com with SMTP id h16-20020a05640250d000b00435bab1a7b4so14323edb.10 for ; Thu, 23 Jun 2022 10:47:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=EpLJJJ5AjD1QHTHE/qp9hoM9EsHzOSMf5sHc39x1phs=; b=1QZA+sKP1ScqZQ20zbAPLWowmfZ8xJHE5lFEh9v8kuaRTonrPuKDu/OIb3uX8atKK+ Z2CTmnjosllDJ1Q2LFeER1BQxKDNL88RA1IwLgMmu4NFdT6Y72dU8o9WF9IELHUpCyEU DLZzns/7Xwp6U/xeaaN47vL96zjcFZp1QQcKK1HVNHwPOzIPLo3Evvw9BVBfhEKQbQ1m OrCJLfMX/hfX1fWTG3+nX3L+2kVZATFa09DXA+11IsrOxbep5+jepbj7ydrbFPBaHHJt yZhZhfdHAFq1skBd+mxnXM3pyfP9NXFUXJHbShq9+Pxx6uHzaWZ9wMRkm1IlhggKTt9I nFYA== X-Gm-Message-State: AJIora+yZFl4qcgl5bteWmWQLqgq53gUyJ4EKACPQ9sQcXQPXluseuOG nwMDLHVXtxIIedwXPaG409mfVe/YL75pww7UXOLmSaxoN1ucKpQ4ocEOrMvLjHVW2AkUahYRVkx AiHx8/BQx6gxm44sBFE+h1Fw6h5zYXXk= X-Received: by 2002:a17:906:8301:b0:6e4:896d:59b1 with SMTP id j1-20020a170906830100b006e4896d59b1mr9070951ejx.396.1656006464979; Thu, 23 Jun 2022 10:47:44 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v6v/TNEWCXIZ7LdRMX1Wpf43iwIXmYD48eJydvre544QcFAFgX16QjsbA1OfjouCadQgK4eqLCCfiVTafxlFU= X-Received: by 2002:a17:906:8301:b0:6e4:896d:59b1 with SMTP id j1-20020a170906830100b006e4896d59b1mr9070932ejx.396.1656006464627; Thu, 23 Jun 2022 10:47:44 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jonathan Wakely Date: Thu, 23 Jun 2022 18:47:33 +0100 Message-ID: Subject: Re: [PATCH] libstdc++-v3: check for openat To: Alexandre Oliva Cc: gcc Patches , "libstdc++" X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="000000000000121b1105e2210d01" X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jun 2022 17:47:51 -0000 --000000000000121b1105e2210d01 Content-Type: text/plain; charset="UTF-8" On Thu, 23 Jun 2022 at 15:05, Alexandre Oliva wrote: > > On Jun 23, 2022, Jonathan Wakely wrote: > > > On Thu, 23 Jun 2022 at 12:08, Alexandre Oliva wrote: > >> > >> On Jun 22, 2022, Jonathan Wakely wrote: > >> > >> > There are other interactions between AT_CDCWD and ::openat not covered > >> > by this patch. I this this also needs to check HAVE_OPENAT: > >> > >> Here's an updated version, tested with this additional change. > > > Did this improve your test results for directory iterators? > > 'fraid the bad results I posted earlier today had this patch in. I > can't tell whether it improved anything because I didn't save earlier > results to compare. > > > In the unlikely even that the target has ::unlinkat but not ::openat > > c++config.h on the target says: > > /* #undef _GLIBCXX_HAVE_UNLINKAT */ > > Thanks for the concern, Here's what I'm thinking of so that the derived _Dir class doesn't need to know whether the base _Dir_base::openat function will actually use ::openat or not. It defines a new _At_path type which contains a {fd, path} pair (to be used together by openat and unlinkat) and a separate path to be used on its own. This allows identifying a file within a directory unambiguously, without being concerned with whether HAVE_OPENAT and HAVE_UNLINKAT are defined. With this change I don't think your patch to make dir_and_pathname() check HAVE_OPENAT is needed. This passes tests on x86_64-linux. --000000000000121b1105e2210d01 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_l4rbh32e0 ZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvYysrMTcvZnNfZGlyLmNjIGIvbGlic3RkYysr LXYzL3NyYy9jKysxNy9mc19kaXIuY2MKaW5kZXggYzY3ZmU3NmJjMTQuLmZiNzUyMjM5ZTFmIDEw MDY0NAotLS0gYS9saWJzdGRjKystdjMvc3JjL2MrKzE3L2ZzX2Rpci5jYworKysgYi9saWJzdGRj KystdjMvc3JjL2MrKzE3L2ZzX2Rpci5jYwpAQCAtNDYsNyArNDYsNyBAQCBzdHJ1Y3QgZnM6Ol9E aXIgOiBfRGlyX2Jhc2UKIHsKICAgX0Rpcihjb25zdCBmczo6cGF0aCYgcCwgYm9vbCBza2lwX3Bl cm1pc3Npb25fZGVuaWVkLCBib29sIG5vZm9sbG93LAogICAgICAgIFtbbWF5YmVfdW51c2VkXV0g Ym9vbCBmaWxlbmFtZV9vbmx5LCBlcnJvcl9jb2RlJiBlYykKLSAgOiBfRGlyX2Jhc2UoZmRjd2Qo KSwgcC5jX3N0cigpLCBza2lwX3Blcm1pc3Npb25fZGVuaWVkLCBub2ZvbGxvdywgZWMpCisgIDog X0Rpcl9iYXNlKHAuY19zdHIoKSwgc2tpcF9wZXJtaXNzaW9uX2RlbmllZCwgbm9mb2xsb3csIGVj KQogICB7CiAjaWYgX0dMSUJDWFhfSEFWRV9ESVJGRAogICAgIGlmIChmaWxlbmFtZV9vbmx5KQpA QCAtMTIwLDE1ICsxMjAsMTUgQEAgc3RydWN0IGZzOjpfRGlyIDogX0Rpcl9iYXNlCiAgIC8vIFJl dHVybiBhIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGRpcmVjdG9yeSBhbmQgY3VycmVudCBlbnRy eSdzIHBhdGguCiAgIC8vIElmIGRpcmZkIGlzIGF2YWlsYWJsZSwgdXNlIGl0IGFuZCByZXR1cm4g b25seSB0aGUgZmlsZW5hbWUuCiAgIC8vIE90aGVyd2lzZSwgcmV0dXJuIEFUX0ZEQ1dEIGFuZCBy ZXR1cm4gdGhlIGZ1bGwgcGF0aC4KLSAgcGFpcjxpbnQsIGNvbnN0IHBvc2l4OjpjaGFyX3R5cGUq PgorICBfQXRfcGF0aAogICBkaXJfYW5kX3BhdGhuYW1lKCkgY29uc3Qgbm9leGNlcHQKICAgewog ICAgIGNvbnN0IGZzOjpwYXRoJiBwID0gZW50cnkucGF0aCgpOwogI2lmIF9HTElCQ1hYX0hBVkVf RElSRkQKICAgICBpZiAoIXAuZW1wdHkoKSkKLSAgICAgIHJldHVybiB7OjpkaXJmZCh0aGlzLT5k aXJwKSwgc3RkOjpwcmV2KHAuZW5kKCkpLT5jX3N0cigpfTsKKyAgICAgIHJldHVybiB7OjpkaXJm ZCh0aGlzLT5kaXJwKSwgc3RkOjpwcmV2KHAuZW5kKCkpLT5jX3N0cigpLCBwLmNfc3RyKCl9Owog I2VuZGlmCi0gICAgcmV0dXJuIHt0aGlzLT5mZGN3ZCgpLCBwLmNfc3RyKCl9OworICAgIHJldHVy biBwLmNfc3RyKCk7CiAgIH0KIAogICAvLyBDcmVhdGUgYSBuZXcgX0RpciBmb3IgdGhlIGRpcmVj dG9yeSB0aGlzLT5lbnRyeS5wYXRoKCkuCkBAIC0xMzYsOCArMTM2LDcgQEAgc3RydWN0IGZzOjpf RGlyIDogX0Rpcl9iYXNlCiAgIG9wZW5fc3ViZGlyKGJvb2wgc2tpcF9wZXJtaXNzaW9uX2Rlbmll ZCwgYm9vbCBub2ZvbGxvdywKIAkgICAgICBlcnJvcl9jb2RlJiBlYykgY29uc3Qgbm9leGNlcHQK ICAgewotICAgIGF1dG8gW2RpcmZkLCBwYXRobmFtZV0gPSBkaXJfYW5kX3BhdGhuYW1lKCk7Ci0g ICAgX0Rpcl9iYXNlIGQoZGlyZmQsIHBhdGhuYW1lLCBza2lwX3Blcm1pc3Npb25fZGVuaWVkLCBu b2ZvbGxvdywgZWMpOworICAgIF9EaXJfYmFzZSBkKGRpcl9hbmRfcGF0aG5hbWUoKSwgc2tpcF9w ZXJtaXNzaW9uX2RlbmllZCwgbm9mb2xsb3csIGVjKTsKICAgICAvLyBJZiB0aGlzLT5wYXRoIGlz IGVtcHR5LCB0aGUgbmV3IF9EaXIgc2hvdWxkIGhhdmUgYW4gZW1wdHkgcGF0aCB0b28uCiAgICAg Y29uc3QgZnM6OnBhdGgmIHAgPSB0aGlzLT5wYXRoLmVtcHR5KCkgPyB0aGlzLT5wYXRoIDogdGhp cy0+ZW50cnkucGF0aCgpOwogICAgIHJldHVybiBfRGlyKHN0ZDo6bW92ZShkKSwgcCk7CkBAIC0x NDcsNyArMTQ2LDcgQEAgc3RydWN0IGZzOjpfRGlyIDogX0Rpcl9iYXNlCiAgIGRvX3VubGluayhi b29sIGlzX2RpcmVjdG9yeSwgZXJyb3JfY29kZSYgZWMpIGNvbnN0IG5vZXhjZXB0CiAgIHsKICNp ZiBfR0xJQkNYWF9IQVZFX1VOTElOS0FUCi0gICAgYXV0byBbZGlyZmQsIHBhdGhuYW1lXSA9IGRp cl9hbmRfcGF0aG5hbWUoKTsKKyAgICBhdXRvIFtkaXJmZCwgcGF0aG5hbWUsIF9dID0gZGlyX2Fu ZF9wYXRobmFtZSgpOwogICAgIGlmICg6OnVubGlua2F0KGRpcmZkLCBwYXRobmFtZSwgaXNfZGly ZWN0b3J5ID8gQVRfUkVNT1ZFRElSIDogMCkgPT0gLTEpCiAgICAgICB7CiAJZWMuYXNzaWduKGVy cm5vLCBzdGQ6OmdlbmVyaWNfY2F0ZWdvcnkoKSk7CmRpZmYgLS1naXQgYS9saWJzdGRjKystdjMv c3JjL2ZpbGVzeXN0ZW0vZGlyLWNvbW1vbi5oIGIvbGlic3RkYysrLXYzL3NyYy9maWxlc3lzdGVt L2Rpci1jb21tb24uaAppbmRleCAzNjVmZDUyN2Y0ZC4uNWY3ZjQ5MDlhZDMgMTAwNjQ0Ci0tLSBh L2xpYnN0ZGMrKy12My9zcmMvZmlsZXN5c3RlbS9kaXItY29tbW9uLmgKKysrIGIvbGlic3RkYysr LXYzL3NyYy9maWxlc3lzdGVtL2Rpci1jb21tb24uaApAQCAtOTEsMTIgKzkxLDM3IEBAIGlzX3Bl cm1pc3Npb25fZGVuaWVkX2Vycm9yKGludCBlKQogCiBzdHJ1Y3QgX0Rpcl9iYXNlCiB7CisgIHN0 cnVjdCBfQXRfcGF0aAorICB7CisgICAgX0F0X3BhdGgoY29uc3QgY2hhciogcCkgbm9leGNlcHQK KyAgICA6IGRpcl9mZChmZGN3ZCgpKSwgcGF0aF9mcm9tX2RpcihwKSwgcGF0aG5hbWUocCkKKyAg ICB7IH0KKworICAgIF9BdF9wYXRoKGludCBmZCwgY29uc3QgY2hhciogcDEsIGNvbnN0IGNoYXIq IHAyKQorICAgIDogZGlyX2ZkKGZkKSwgcGF0aF9mcm9tX2RpcihwMSksIHBhdGhuYW1lKHAyKQor ICAgIHsgfQorCisgICAgaW50IGRpcl9mZDsgLy8gQSBkaXJlY3RvcnkgZGVzY3JpcHRvciAoZWl0 aGVyIHRoZSBwYXJlbnQgZGlyLCBvciBBVF9GRENXRCkuCisgICAgY29uc3QgcG9zaXg6OmNoYXJf dHlwZSogcGF0aF9mcm9tX2RpcjsgLy8gUGF0aCByZWxhdGl2ZSB0byBkaXJfZmQuCisgICAgY29u c3QgcG9zaXg6OmNoYXJfdHlwZSogcGF0aG5hbWU7IC8vIEZ1bGwgcGF0aCByZWxhdGl2ZSB0byBD V0QuCisKKyAgICBzdGF0aWMgY29uc3RleHByIGludAorICAgIGZkY3dkKCkgbm9leGNlcHQKKyAg ICB7CisjaWZkZWYgQVRfRkRDV0QKKyAgICAgIHJldHVybiBBVF9GRENXRDsKKyNlbHNlCisgICAg ICByZXR1cm4gLTE7IC8vIFVzZSBpbnZhbGlkIGZkIGlmIEFUX0ZEQ1dEIGlzbid0IHN1cHBvcnRl ZC4KKyNlbmRpZgorICAgIH0KKyAgfTsKKwogICAvLyBJZiBubyBlcnJvciBvY2N1cnMgdGhlbiBk aXJwIGlzIG5vbi1udWxsLAogICAvLyBvdGhlcndpc2UgbnVsbCAoZXZlbiBpZiBhIHBlcm1pc3Np b24gZGVuaWVkIGVycm9yIGlzIGlnbm9yZWQpLgotICBfRGlyX2Jhc2UoaW50IGZkLCBjb25zdCBw b3NpeDo6Y2hhcl90eXBlKiBwYXRobmFtZSwKKyAgX0Rpcl9iYXNlKGNvbnN0IF9BdF9wYXRoJiBh dHAsCiAJICAgIGJvb2wgc2tpcF9wZXJtaXNzaW9uX2RlbmllZCwgYm9vbCBub2ZvbGxvdywKIAkg ICAgZXJyb3JfY29kZSYgZWMpIG5vZXhjZXB0Ci0gIDogZGlycChfRGlyX2Jhc2U6Om9wZW5hdChm ZCwgcGF0aG5hbWUsIG5vZm9sbG93KSkKKyAgOiBkaXJwKF9EaXJfYmFzZTo6b3BlbmF0KGF0cCwg bm9mb2xsb3cpKQogICB7CiAgICAgaWYgKGRpcnApCiAgICAgICBlYy5jbGVhcigpOwpAQCAtMTQz LDE2ICsxNjgsNiBAQCBzdHJ1Y3QgX0Rpcl9iYXNlCiAgICAgICB9CiAgIH0KIAotICBzdGF0aWMg Y29uc3RleHByIGludAotICBmZGN3ZCgpIG5vZXhjZXB0Ci0gIHsKLSNpZmRlZiBBVF9GRENXRAot ICAgIHJldHVybiBBVF9GRENXRDsKLSNlbHNlCi0gICAgcmV0dXJuIC0xOyAvLyBVc2UgaW52YWxp ZCBmZCBpZiBBVF9GRENXRCBpc24ndCBzdXBwb3J0ZWQuCi0jZW5kaWYKLSAgfQotCiAgIHN0YXRp YyBib29sIGlzX2RvdF9vcl9kb3Rkb3QoY29uc3QgY2hhciogcykgbm9leGNlcHQKICAgeyByZXR1 cm4gIXN0cmNtcChzLCAiLiIpIHx8ICFzdHJjbXAocywgIi4uIik7IH0KIApAQCAtMTc0LDcgKzE4 OSw3IEBAIHN0cnVjdCBfRGlyX2Jhc2UKICAgfQogCiAgIHN0YXRpYyBwb3NpeDo6RElSKgotICBv cGVuYXQoaW50IGZkLCBjb25zdCBwb3NpeDo6Y2hhcl90eXBlKiBwYXRobmFtZSwgYm9vbCBub2Zv bGxvdykKKyAgb3BlbmF0KGNvbnN0IF9BdF9wYXRoJiBhdHAsIGJvb2wgbm9mb2xsb3cpCiAgIHsK ICNpZiBfR0xJQkNYWF9IQVZFX0ZET1BFTkRJUiAmJiBkZWZpbmVkIE9fUkRPTkxZICYmIGRlZmlu ZWQgT19ESVJFQ1RPUlkgXAogICAgICYmICEgX0dMSUJDWFhfRklMRVNZU1RFTV9JU19XSU5ET1dT CkBAIC0xOTgsMTYgKzIxMywxNyBAQCBzdHJ1Y3QgX0Rpcl9iYXNlCiAgICAgbm9mb2xsb3cgPSBm YWxzZTsKICNlbmRpZgogCisgICAgaW50IGZkOwogCiAjaWZkZWYgQVRfRkRDV0QKLSAgICBmZCA9 IDo6b3BlbmF0KGZkLCBwYXRobmFtZSwgZmxhZ3MpOworICAgIGZkID0gOjpvcGVuYXQoYXRwLmRp cl9mZCwgYXRwLnBhdGhfZnJvbV9kaXIsIGZsYWdzKTsKICNlbHNlCiAgICAgLy8gSWYgd2UgY2Fu bm90IHVzZSBvcGVuYXQsIHRoZXJlJ3Mgbm8gYmVuZWZpdCB0byB1c2luZyBwb3NpeDo6b3BlbiB1 bmxlc3MKICAgICAvLyB3ZSB3aWxsIHVzZSBPX05PRk9MTE9XLCBzbyBqdXN0IHVzZSB0aGUgc2lt cGxlciBwb3NpeDo6b3BlbmRpci4KICAgICBpZiAoIW5vZm9sbG93KQotICAgICAgcmV0dXJuIHBv c2l4OjpvcGVuZGlyKHBhdGhuYW1lKTsKKyAgICAgIHJldHVybiBwb3NpeDo6b3BlbmRpcihhdHAu cGF0aG5hbWUpOwogCi0gICAgZmQgPSA6Om9wZW4ocGF0aG5hbWUsIGZsYWdzKTsKKyAgICBmZCA9 IDo6b3BlbihhdHAucGF0aG5hbWUsIGZsYWdzKTsKICNlbmRpZgogCiAgICAgaWYgKGZkID09IC0x KQpAQCAtMjIwLDcgKzIzNiw3IEBAIHN0cnVjdCBfRGlyX2Jhc2UKICAgICBlcnJubyA9IGVycjsK ICAgICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4OjpvcGVuZGlyKHBh dGhuYW1lKTsKKyAgICByZXR1cm4gcG9zaXg6Om9wZW5kaXIoYXRwLnBhdGhuYW1lKTsKICNlbmRp ZgogICB9CiAKZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9zcmMvZmlsZXN5c3RlbS9kaXIuY2Mg Yi9saWJzdGRjKystdjMvc3JjL2ZpbGVzeXN0ZW0vZGlyLmNjCmluZGV4IGI0NTE5MDJjNGExLi5j MDIwMjg0OWJjNCAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL3NyYy9maWxlc3lzdGVtL2Rpci5j YworKysgYi9saWJzdGRjKystdjMvc3JjL2ZpbGVzeXN0ZW0vZGlyLmNjCkBAIC01Myw3ICs1Myw3 IEBAIHN0cnVjdCBmczo6X0RpciA6IHN0ZDo6ZmlsZXN5c3RlbTo6X0Rpcl9iYXNlCiB7CiAgIF9E aXIoY29uc3QgZnM6OnBhdGgmIHAsIGJvb2wgc2tpcF9wZXJtaXNzaW9uX2RlbmllZCwgYm9vbCBu b2ZvbGxvdywKICAgICAgICBlcnJvcl9jb2RlJiBlYykKLSAgOiBfRGlyX2Jhc2UodGhpcy0+ZmRj d2QoKSwgcC5jX3N0cigpLCBza2lwX3Blcm1pc3Npb25fZGVuaWVkLCBub2ZvbGxvdywgZWMpCisg IDogX0Rpcl9iYXNlKHAuY19zdHIoKSwgc2tpcF9wZXJtaXNzaW9uX2RlbmllZCwgbm9mb2xsb3cs IGVjKQogICB7CiAgICAgaWYgKCFlYykKICAgICAgIHBhdGggPSBwOwpAQCAtMTE2LDE0ICsxMTYs MTQgQEAgc3RydWN0IGZzOjpfRGlyIDogc3RkOjpmaWxlc3lzdGVtOjpfRGlyX2Jhc2UKICAgLy8g UmV0dXJuIGEgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZGlyZWN0b3J5IGFuZCBjdXJyZW50IGVu dHJ5J3MgcGF0aC4KICAgLy8gSWYgZGlyZmQgaXMgYXZhaWxhYmxlLCB1c2UgaXQgYW5kIHJldHVy biBvbmx5IHRoZSBmaWxlbmFtZS4KICAgLy8gT3RoZXJ3aXNlLCByZXR1cm4gQVRfRkRDV0QgYW5k IHJldHVybiB0aGUgZnVsbCBwYXRoLgotICBwYWlyPGludCwgY29uc3QgcG9zaXg6OmNoYXJfdHlw ZSo+CisgIF9BdF9wYXRoCiAgIGRpcl9hbmRfcGF0aG5hbWUoKSBjb25zdCBub2V4Y2VwdAogICB7 CiAgICAgY29uc3QgZnM6OnBhdGgmIHAgPSBlbnRyeS5wYXRoKCk7CiAjaWYgX0dMSUJDWFhfSEFW RV9ESVJGRAotICAgIHJldHVybiB7OjpkaXJmZCh0aGlzLT5kaXJwKSwgc3RkOjpwcmV2KHAuZW5k KCkpLT5jX3N0cigpfTsKKyAgICByZXR1cm4gezo6ZGlyZmQodGhpcy0+ZGlycCksIHN0ZDo6cHJl dihwLmVuZCgpKS0+Y19zdHIoKSwgcC5jX3N0cigpfTsKICNlbmRpZgotICAgIHJldHVybiB7dGhp cy0+ZmRjd2QoKSwgcC5jX3N0cigpfTsKKyAgICByZXR1cm4gcC5jX3N0cigpOwogICB9CiAKICAg Ly8gQ3JlYXRlIGEgbmV3IF9EaXIgZm9yIHRoZSBkaXJlY3RvcnkgdGhpcy0+ZW50cnkucGF0aCgp LgpAQCAtMTMxLDggKzEzMSw3IEBAIHN0cnVjdCBmczo6X0RpciA6IHN0ZDo6ZmlsZXN5c3RlbTo6 X0Rpcl9iYXNlCiAgIG9wZW5fc3ViZGlyKGJvb2wgc2tpcF9wZXJtaXNzaW9uX2RlbmllZCwgYm9v bCBub2ZvbGxvdywKIAkgICAgICBlcnJvcl9jb2RlJiBlYykgbm9leGNlcHQKICAgewotICAgIGF1 dG8gW2RpcmZkLCBwYXRobmFtZV0gPSBkaXJfYW5kX3BhdGhuYW1lKCk7Ci0gICAgX0Rpcl9iYXNl IGQoZGlyZmQsIHBhdGhuYW1lLCBza2lwX3Blcm1pc3Npb25fZGVuaWVkLCBub2ZvbGxvdywgZWMp OworICAgIF9EaXJfYmFzZSBkKGRpcl9hbmRfcGF0aG5hbWUoKSwgc2tpcF9wZXJtaXNzaW9uX2Rl bmllZCwgbm9mb2xsb3csIGVjKTsKICAgICByZXR1cm4gX0RpcihzdGQ6Om1vdmUoZCksIGVudHJ5 LnBhdGgoKSk7CiAgIH0KIAo= --000000000000121b1105e2210d01--