From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id 913FD3858D33 for ; Tue, 10 Jan 2023 17:23:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 913FD3858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 8D8EE1F381; Tue, 10 Jan 2023 17:23:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1673371412; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=s+Vgrg6Jt88nw/DF84srLMqP591Z+FQWDFB43JC4uuI=; b=XbYpuS+pLcalvdJ26SvT+sl4DUcKqWTjc9YOxIeJsapM1iROYFzlnksItp2U4xbI26x3Xw X6Nblm6+fVZdsi7d49zR9oN/h3e6aB+TwfO+oEbrQsxhcolccKUcX968L1m4rH+8JYDOsI 7f8wqm9uV6ZYUB56ukX0Q22fpgoCk3k= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1673371412; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=s+Vgrg6Jt88nw/DF84srLMqP591Z+FQWDFB43JC4uuI=; b=dxJltt3m64+Cjo0Ogra6nXqyEoe0pN7ykhW9u23O4bTk3fENQGz7rYrv5qCfSg1hS9hgMx 8SFZbR/IV5R2vLBQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 7512C1358A; Tue, 10 Jan 2023 17:23:32 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id NtxYGxSfvWNyPwAAMHmgww (envelope-from ); Tue, 10 Jan 2023 17:23:32 +0000 Content-Type: multipart/mixed; boundary="------------G0D0bmAMRNbLDEQSdcoimtp1" Message-ID: <174dba84-bac5-af4c-cd2b-85257f57b025@suse.de> Date: Tue, 10 Jan 2023 18:23:32 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [pushed] [gdb/testsuite] Fix gdb.threads/dlopen-libpthread.exp for upstream glibc To: Simon Marchi , gdb-patches@sourceware.org References: <20221230155407.5917-1-tdevries@suse.de> <7bb6a09d-b915-c855-804d-4c3b13e38b37@simark.ca> Content-Language: en-US From: Tom de Vries In-Reply-To: <7bb6a09d-b915-c855-804d-4c3b13e38b37@simark.ca> X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,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: This is a multi-part message in MIME format. --------------G0D0bmAMRNbLDEQSdcoimtp1 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 1/4/23 17:54, Simon Marchi wrote: > > > On 12/30/22 10:54, Tom de Vries via Gdb-patches wrote: >> On ubuntu 22.04.1 x86_64, I run into: >> ... >> (gdb) info probes all rtld rtld_map_complete^M >> No probes matched.^M >> (gdb) XFAIL: gdb.threads/dlopen-libpthread.exp: info probes all rtld rtld_map_complete >> UNTESTED: gdb.threads/dlopen-libpthread.exp: no matching probes >> ... >> This has been filed as PR testsuite/17016. >> >> The problem is that the name rtld_map_complete is used, which was only >> available in Fedora 17, and upstream the name map_complete was used. >> >> In the email thread discussing a proposed patch ( >> https://sourceware.org/legacy-ml/gdb-patches/2014-09/msg00712.html ) it was >> suggested to make the test-case handle both names. >> >> So, handle both names: map_complete and rtld_map_complete. >> >> This exposes the following FAIL: >> ... >> (gdb) info sharedlibrary^M >> From To Syms Read Shared Object Library^M >> $hex $hex Yes /lib64/ld-linux-x86-64.so.2^M >> $hex $hex Yes (*) /lib/x86_64-linux-gnu/libgtk3-nocsd.so.0^M >> $hex $hex Yes /lib/x86_64-linux-gnu/libc.so.6^M >> $hex $hex Yes /lib/x86_64-linux-gnu/libdl.so.2^M >> $hex $hex Yes /lib/x86_64-linux-gnu/libpthread.so.0^M >> (*): Shared library is missing debugging information.^M >> (gdb) FAIL: gdb.threads/dlopen-libpthread.exp: libpthread.so not found >> ... >> due to using a glibc (v2.35) that has libpthread integrated into libc. > > On my Ubuntu 22.04, I now get: > > > info sharedlibrary^M > From To Syms Read Shared Object Library^M > 0x00007ffff7fc5090 0x00007ffff7fee335 Yes (*) /lib64/ld-linux-x86-64.so.2^M > 0x00007ffff7da7700 0x00007ffff7f39abd Yes (*) /lib/x86_64-linux-gnu/libc.so.6^M > 0x00007ffff7fb70a0 0x00007ffff7fb721f Yes /home/smarchi/build/binutils-gdb/gdb/testsuite/outputs/gdb.threads/dlopen-libpthread/dlopen-libpthread.so^M > (*): Shared library is missing debugging information.^M > (gdb) FAIL: gdb.threads/dlopen-libpthread.exp: libpthread.so found > > And this is what I expect, given that libpthread.so doesn't exist > anymore. I don't understand the output you pasted above. My > testsuite/outputs/gdb.threads/dlopen-libpthread/dlopen-libpthread.so > doesn't depend on libpthread.so.0. I think that libpthread.so.0 is just > there fore backwards compatibility with old binaries that refer to it, > but any newly compiled binary will not depend on it. So the binary > compiled by the test should not. I also don't understand where the > libgtk3-noscd.so.0 library comes from, it's a bit strange to have that > in a test binary. > >> >> Fix this by changing the FAIL into UNSUPPORTED. >> >> Tested on x86_64-linux. >> >> Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=17016 >> --- >> .../gdb.threads/dlopen-libpthread.exp | 35 +++++++++++++------ >> 1 file changed, 25 insertions(+), 10 deletions(-) >> >> diff --git a/gdb/testsuite/gdb.threads/dlopen-libpthread.exp b/gdb/testsuite/gdb.threads/dlopen-libpthread.exp >> index 5c3d8a34c30..dcc48260e88 100644 >> --- a/gdb/testsuite/gdb.threads/dlopen-libpthread.exp >> +++ b/gdb/testsuite/gdb.threads/dlopen-libpthread.exp >> @@ -40,22 +40,37 @@ if { ![runto_main] } { >> return -1 >> } >> >> -set test "info probes all rtld rtld_map_complete" >> -gdb_test_multiple $test $test { >> - -re "\[ \t\]rtld_map_complete\[ \t\]+0x\[0-9a-f\]+.*\r\n$gdb_prompt $" { >> - pass $test >> - } >> - -re "No probes matched\\.\r\n$gdb_prompt $" { >> - xfail $test >> - untested "no matching probes" >> - return >> +set probe_names {} >> +# Fedora 17 name. There's specific code in >> +# svr4_find_and_create_probe_breakpoints to deal with this. >> +lappend probe_names rtld_map_complete >> +# Upstream name. >> +lappend probe_names map_complete >> + >> +set have_probe 0 >> +foreach probe_name $probe_names { >> + set cmd "info probes all rtld ^$probe_name$" >> + gdb_test_multiple $cmd "" { >> + -re -wrap "\[ \t\]$probe_name\[ \t\]+0x\[0-9a-f\]+.*" { >> + set have_probe 1 >> + } >> + -re -wrap "No probes matched\\." { >> + } >> } >> } >> >> +if { !$have_probe } { >> + untested "no matching probes" >> +} > > I think you are missing a "return" here, to match the previous behavior? > Hi Simon, Ack. >> + >> set test "libpthread.so not found" >> gdb_test_multiple "info sharedlibrary" $test { >> -re "/libpthread\\.so.*\r\n$gdb_prompt $" { >> - fail $test >> + # With newer glibc, libpthread has been integrated into glibc so we >> + # can expect it to be already loaded at main. This means we no longer >> + # excercise the scenario we're trying to trigger, but continue >> + # nevertheless. >> + unsupported $test > > Given this comment here, it looks like your something in your > environment makes it so libpthread.so.0 is loaded at startup, but I > don't think it's supposed to happen in a "clean" state. Indeed, > libpthread has been merged into libc, but that doesn't mean that any > program will show libpthread.so.0 as loaded. There must be something > strange happening here. Did you have some LD_PRELOAD set or something? you're right, it's a LD_PRELOAD thing, due to using unity desktop on ubuntu, which gets me: ... $ echo $LD_PRELOAD libgtk3-nocsd.so.0 ... I thought I checked LD_PRELOAD, but evidently didn't and mis-analyzed the problem. On the ubuntu machine I can reproduce the FAIL you're seeing when using "LD_PRELOAD= make check", as well as on openSUSE Tumbleweed where I don't have the LD_PRELOAD. Attached patch fixes things. WDYT? Thanks, - Tom --------------G0D0bmAMRNbLDEQSdcoimtp1 Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-testsuite-Fix-gdb.threads-dlopen-libpthread.exp-.patch" Content-Disposition: attachment; filename*0="0001-gdb-testsuite-Fix-gdb.threads-dlopen-libpthread.exp-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NGU3OTViOTI1MDYxMGFlZjYzNjRmYjUyM2YwYWE4MzliNDdlMTdhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IE1vbiwgOSBKYW4gMjAyMyAxMDo0MToxMiArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IFtnZGIvdGVzdHN1aXRlXSBGaXggZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuZXhw IGZvcgogdXBzdHJlYW0gZ2xpYmMsIGFnYWluCgpPbiBhbiB4ODZfNjQgbGFwdG9wIHJ1bm5p bmcgdWJ1bnR1IDIyLjA0LjEgd2l0aCB1bml0eSBkZXNrdG9wOgouLi4KJCBlY2hvICRYREdf Q1VSUkVOVF9ERVNLVE9QClVuaXR5OlVuaXR5Nzp1YnVudHUKLi4uCkkgaGF2ZToKLi4uCiQg ZWNobyAkTERfUFJFTE9BRApsaWJndGszLW5vY3NkLnNvLjAKLi4uCmR1ZSB0byBwYWNrYWdl IGd0azMtbm9jc2QsIGEgcGFja2FnZSByZWNvbW1lbmRlZCBieSB1bml0eS1zZXNzaW9uLgoK Q29uc2VxdWVudGx5LCBmb3IgZWFjaCBleGVjIHRoZXNlIGRlcGVuZGVuY2llcyBhcmUgcHVs bGVkIGluLCBpbmNsdWRpbmcKbGlicHRocmVhZC5zby4wOgouLi4KJCBsZGR0cmVlIC9saWIv eDg2XzY0LWxpbnV4LWdudS9saWJndGszLW5vY3NkLnNvLjAKbGliZ3RrMy1ub2NzZC5zby4w ID0+IC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJndGszLW5vY3NkLnNvLjAgKGludGVycHJl dGVyID0+IG5vbmUpCiAgICBsaWJkbC5zby4yID0+IC9saWIveDg2XzY0LWxpbnV4LWdudS9s aWJkbC5zby4yCiAgICBsaWJwdGhyZWFkLnNvLjAgPT4gL2xpYi94ODZfNjQtbGludXgtZ251 L2xpYnB0aHJlYWQuc28uMAogICAgbGliYy5zby42ID0+IC9saWIveDg2XzY0LWxpbnV4LWdu dS9saWJjLnNvLjYKICAgICAgICBsZC1saW51eC14ODYtNjQuc28uMiA9PiAvbGliL3g4Nl82 NC1saW51eC1nbnUvbGQtbGludXgteDg2LTY0LnNvLjIKLi4uCgpTbywgd2hpbGUgdGVzdC1j YXNlIGdkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4cCBhcHBlYXJzIHRvIHJ1biBv azoKLi4uCiAjIG9mIGV4cGVjdGVkIHBhc3NlcwkJMTIKICMgb2YgdW5zdXBwb3J0ZWQgdGVz dHMJCTEKLi4uCndpdGggTERfUFJFTE9BRD0iIiB3ZSBoYXZlIGluc3RlYWQ6Ci4uLgooZ2Ri KSBQQVNTOiBnZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHA6IGNvbnRpbnVlIHRv IGJyZWFrcG9pbnQ6IG5vdGlmeQppbmZvIHNoYXJlZGxpYnJhcnleTQpGcm9tICBUbyAgICAg ICAgICAgICAgICAgIFN5bXMgUmVhZCAgIFNoYXJlZCBPYmplY3QgTGlicmFyeV5NCiRoZXgg ICRoZXggIFllcyAgICAgICAgIC9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMl5NCiRoZXgg ICRoZXggIFllcyAgICAgICAgIC9saWIveDg2XzY0LWxpbnV4LWdudS9saWJjLnNvLjZeTQok aGV4ICAkaGV4ICBZZXMgICAgICAgICBkbG9wZW4tbGlicHRocmVhZC5zb15NCihnZGIpIEZB SUw6IGdkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4cDogbGlicHRocmVhZC5zbyBm b3VuZAouLi4KClRoZSBwcm9ibGVtIGlzIHRoYXQgbGlicHRocmVhZCBpcyBleHBlY3RlZCBh cyBkZXBlbmRlbmN5IG9mCmRsb3Blbi1saWJwdGhyZWFkLnNvLCBidXQgaXQncyBtaXNzaW5n OgouLi4KJCBsZGR0cmVlIGRsb3Blbi1saWJwdGhyZWFkLnNvCmRsb3Blbi1saWJwdGhyZWFk LnNvID0+IC4vZGxvcGVuLWxpYnB0aHJlYWQuc28gKGludGVycHJldGVyID0+IG5vbmUpCiAg ICBsaWJjLnNvLjYgPT4gJG91dHB1dHMvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQv ZGxvcGVuLWxpYnB0aHJlYWQuc28uZC9saWJjLnNvLjYKICAgICAgICBsZC1saW51eC14ODYt NjQuc28uMiA9PiAvbGliL3g4Nl82NC1saW51eC1nbnUvbGQtbGludXgteDg2LTY0LnNvLjIK Li4uCmR1ZSB0byBoYXZpbmcgZ2xpYmMgMi4zNSwgd2hpY2ggaGFzIGxpcHRocmVhZCBpbnRl Z3JhdGVkIGludG8gZ2xpYmMuCgpGaXggdGhpcyBieToKLSBhZGRpbmcgYSBwcm9jIGhhc19k ZXBlbmRlbmN5Ci0gdXNpbmcgW2hhc19kZXBlbmRlbmN5ICRleGVjIGxpYnB0aHJlYWQuc29d IGFzIGhpbnQgdGhhdCBsaWJwdGhyZWFkCiAgbWF5IGJlIHByZWxvYWRlZAotIHVzaW5nICFb aGFzX2RlcGVuZGVuY3kgJHNobGliIGxpYnB0aHJlYWQuc29dIHRvIGRldGVjdCB0aGF0CiAg dGhlIGxpYnB0aHJlYWQuc28gZGVwZW5kZW5jeSBpcyBtaXNzaW5nLgoKVGVzdGVkIG9uIHg4 Nl82NC1saW51eCwgd2l0aCBhbmQgd2l0aG91dCBMRF9QUkVMT0FEPSIiLgotLS0KIC4uLi9n ZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAgICAgICAgICB8IDMwICsrKysrKysr KysrKysrKy0tLS0KIGdkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgICAgICAgICAgICAgICAg ICAgICB8IDE3ICsrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMo KyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L2Rsb3Blbi1saWJwdGhyZWFkLmV4cAppbmRleCAwYjMyNWNlNjIyZi4uODI1OWRhM2Q2ODIg MTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJl YWQuZXhwCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJl YWQuZXhwCkBAIC02MSwxNiArNjEsMzIgQEAgZm9yZWFjaCBwcm9iZV9uYW1lICRwcm9iZV9u YW1lcyB7CiAKIGlmIHsgISRoYXZlX3Byb2JlIH0gewogICAgIHVudGVzdGVkICJubyBtYXRj aGluZyBwcm9iZXMiCisgICAgcmV0dXJuIC0xCit9CisKKyMgV2UgbGluayB0aGUgZXhlYyB3 aXRob3V0IC1scHRocmVhZCwgYnV0IGxpYnB0aHJlYWQuc28gbWF5IGFscmVhZHkgYmUgbG9h ZGVkIGF0IG1haW4KKyMgZHVlIHRvIExEX1BSRUxPQUQuCitzZXQgbGlicHRocmVhZF9tYXli ZV9wcmVsb2FkZWQgMAorc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICRleGVj dXRhYmxlXQoraWYgeyBbaGFzX2RlcGVuZGVuY3kgJGJpbmZpbGUgbGlicHRocmVhZFxcLnNv XSA9PSAxIH0geworICAgIHNldCBsaWJwdGhyZWFkX21heWJlX3ByZWxvYWRlZCAxCit9CisK KyMgV2UgbGluayB0aGUgc2hsaWIgd2l0aCAtbHB0aHJlYWQsIGJ1dCBzaW5jZSBnbGliYyAy LjM0IGxpYnB0aHJlYWQgaGFzIGJlZW4KKyMgbWVyZ2VkIHdpdGggbGliYywgc28gbGlicHRo cmVhZC5zbyBtYXkgbm90IGJlIGEgZGVwZW5kZW5jeS4KK3NldCBsaWJwdGhyZWFkX21pc3Np bmcgMAoraWYgeyBbaGFzX2RlcGVuZGVuY3kgJGJpbmZpbGUgbGlicHRocmVhZFxcLnNvXSA9 PSAwIH0geworICAgIHNldCBsaWJwdGhyZWFkX21pc3NpbmcgMQogfQogCiBzZXQgdGVzdCAi bGlicHRocmVhZC5zbyBub3QgZm91bmQiCiBnZGJfdGVzdF9tdWx0aXBsZSAiaW5mbyBzaGFy ZWRsaWJyYXJ5IiAkdGVzdCB7CiAgICAgLXJlICIvbGlicHRocmVhZFxcLnNvLipcclxuJGdk Yl9wcm9tcHQgJCIgewotCSMgV2l0aCBuZXdlciBnbGliYywgbGlicHRocmVhZCBoYXMgYmVl biBpbnRlZ3JhdGVkIGludG8gZ2xpYmMgc28gd2UKLQkjIGNhbiBleHBlY3QgaXQgdG8gYmUg YWxyZWFkeSBsb2FkZWQgYXQgbWFpbi4gIFRoaXMgbWVhbnMgd2Ugbm8gbG9uZ2VyCi0JIyBl eGNlcmNpc2UgdGhlIHNjZW5hcmlvIHdlJ3JlIHRyeWluZyB0byB0cmlnZ2VyLCBidXQgY29u dGludWUKLQkjIG5ldmVydGhlbGVzcy4KLQl1bnN1cHBvcnRlZCAkdGVzdAorCWlmIHsgJGxp YnB0aHJlYWRfbWF5YmVfcHJlbG9hZGVkIH0geworCSAgICB1bnN1cHBvcnRlZCAkdGVzdAor CX0gZWxzZSB7CisJICAgIGZhaWwgJHRlc3QKKwl9CiAgICAgfQogICAgIC1yZSAiL2xpYmNc XC5zby4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKIAlwYXNzICR0ZXN0CkBAIC04NSw0ICsxMDEs NiBAQCBnZGJfYnJlYWtwb2ludCAibm90aWZ5IgogIyBDYW5ub3QgZmluZCBuZXcgdGhyZWFk czogZ2VuZXJpYyBlcnJvcgogZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdGlmeSIg Ii4qIG5vdGlmeS1oZXJlIC4qIgogCi1nZGJfdGVzdCAiaW5mbyBzaGFyZWRsaWJyYXJ5IiB7 L2xpYnB0aHJlYWRcLnNvLip9ICJsaWJwdGhyZWFkLnNvIGZvdW5kIgoraWYgeyAhJGxpYnB0 aHJlYWRfbWlzc2luZyB9IHsKKyAgICBnZGJfdGVzdCAiaW5mbyBzaGFyZWRsaWJyYXJ5IiB7 L2xpYnB0aHJlYWRcLnNvLip9ICJsaWJwdGhyZWFkLnNvIGZvdW5kIgorfQpkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAKaW5kZXggYzQxZDQ2OThkNjYuLjM5ZGZhNjdjMzQ0IDEwMDY0NAotLS0gYS9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCisrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKQEAg LTkzNTUsNSArOTM1NSwyMiBAQCBwcm9jIGRlY29tcHJlc3NfYnoyIHsgYnoyIH0gewogICAg IHJldHVybiAkY29weQogfQogCisjIFJldHVybiAxIGlmIHRoZSBvdXRwdXQgb2YgImxkZCBG SUxFIiBjb250YWlucyByZWdleHAgREVQLCAwIGlmIGl0IGRvZXNuJ3QsCisjIGFuZCAtMSBp ZiB0aGVyZSB3YXMgYSBwcm9ibGVtIHJ1bm5pbmcgdGhlIGNvbW1hbmQuCisKK3Byb2MgaGFz X2RlcGVuZGVuY3kgeyBmaWxlIGRlcCB9IHsKKyAgICBzZXQgbGRkIFtnZGJfZmluZF9sZGRd CisgICAgc2V0IGNvbW1hbmQgIiRsZGQgJGZpbGUiCisgICAgc2V0IHJlc3VsdCBbcmVtb3Rl X2V4ZWMgaG9zdCAkY29tbWFuZF0KKyAgICBzZXQgc3RhdHVzIFtsaW5kZXggJHJlc3VsdCAw XQorICAgIHNldCBvdXRwdXQgW2xpbmRleCAkcmVzdWx0IDFdCisgICAgdmVyYm9zZSAtbG9n ICJzdGF0dXMgb2YgJGNvbW1hbmQgaXMgJHN0YXR1cyIKKyAgICB2ZXJib3NlIC1sb2cgIm91 dHB1dCBvZiAkY29tbWFuZCBpcyAkb3V0cHV0IgorICAgIGlmIHsgJHN0YXR1cyAhPSAwIHx8 ICRvdXRwdXQgPT0gIiIgfSB7CisJcmV0dXJuIC0xCisgICAgfQorICAgIHJldHVybiBbcmVn ZXhwICRkZXAgJG91dHB1dF0KK30KKwogIyBBbHdheXMgbG9hZCBjb21wYXRpYmlsaXR5IHN0 dWZmLgogbG9hZF9saWIgZnV0dXJlLmV4cAoKYmFzZS1jb21taXQ6IDhlYzBiMGI1ZGYwZWJl MjhjMzI5MDBhZmM3YWU4ZmYyMmIyMWYzODEKLS0gCjIuMzUuMwoK --------------G0D0bmAMRNbLDEQSdcoimtp1--