From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2a07:de40:b251:101:10:150:64:1]) by sourceware.org (Postfix) with ESMTPS id AF6433857340 for ; Tue, 11 Jun 2024 22:31:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AF6433857340 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AF6433857340 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718145067; cv=none; b=k8k+SJfUl2iPeoVSsZmEsADhWqmqfVWcJTPG9FEPrhiAr0ZRvIk6joSH3//EADG8gCmmxKEQA2eiP+ZNRUERNyt16pN8ggRGRuMQRnuZ8Pl+rgyCFz3c+gZhcst/D7NjYxT8lDpsIp7RI13im+GjzWrLX+nAAVj6W5Q/kRY3QIc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1718145067; c=relaxed/simple; bh=TrNNXcClS2T0zkrKvHSZZnRttyIzChW09mRL7VshjbQ=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature: Message-ID:Date:MIME-Version:Subject:To:From; b=WL7rmmKwt4Tc5/6iU+aZZLqh5i/DPSxyRJLGeoHoURKAbPK+FfBfvQm7BbQaMktqC+ExKiUBrw0TBkniaah5h2lg11qEplWgoNFiaSVtnE0mV8irsv7mmAQgU+26yD/ElinHepjIpifwqp+asrLB6y1CZ9FK6chuciESvtZ1utk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5CC3133B71; Tue, 11 Jun 2024 22:31:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1718145063; h=from:from:reply-to: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=vUuiPCqUzT4/NDNdscNi2JvlNDBMOeRi4o4r2wYHsgQ=; b=iFfHihsAGzpgy5YAWHdXNDUgFo164cN+RMfVfoqEHMmu94SYUyzM1zPqdp9pjtNlFUnSMT EpeDUZIK9e7ifkW1ayzfPC/owsRIlZWzbD9IuXEYNGqaY4MgIX3rqwC6snP0KmB2e7xOqa ZxKqWZLy//RdoLlFbRmnhFTfQEnQ26g= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1718145063; h=from:from:reply-to: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=vUuiPCqUzT4/NDNdscNi2JvlNDBMOeRi4o4r2wYHsgQ=; b=umW3eKaYfN4gyEej0zTzcylWEtAf84ojt8rQ6OPLmlawuIVvrF6vQ19YczmLosHCsl/C1y 7iH6yWOCO76pzQAQ== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1718145063; h=from:from:reply-to: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=vUuiPCqUzT4/NDNdscNi2JvlNDBMOeRi4o4r2wYHsgQ=; b=iFfHihsAGzpgy5YAWHdXNDUgFo164cN+RMfVfoqEHMmu94SYUyzM1zPqdp9pjtNlFUnSMT EpeDUZIK9e7ifkW1ayzfPC/owsRIlZWzbD9IuXEYNGqaY4MgIX3rqwC6snP0KmB2e7xOqa ZxKqWZLy//RdoLlFbRmnhFTfQEnQ26g= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1718145063; h=from:from:reply-to: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=vUuiPCqUzT4/NDNdscNi2JvlNDBMOeRi4o4r2wYHsgQ=; b=umW3eKaYfN4gyEej0zTzcylWEtAf84ojt8rQ6OPLmlawuIVvrF6vQ19YczmLosHCsl/C1y 7iH6yWOCO76pzQAQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 3E07413A55; Tue, 11 Jun 2024 22:31:03 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id efuPDSfQaGbrTAAAD6G6ig (envelope-from ); Tue, 11 Jun 2024 22:31:03 +0000 Content-Type: multipart/mixed; boundary="------------DvIjf0pCSgprmhU62QXlEnA6" Message-ID: Date: Wed, 12 Jun 2024 00:31:42 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] [gdb/python] Add non-variadic versions of PyObject_CallMethod To: Tom Tromey Cc: gdb-patches@sourceware.org References: <20240611085551.10055-1-tdevries@suse.de> <87wmmvfe45.fsf@tromey.com> Content-Language: en-US From: Tom de Vries In-Reply-To: <87wmmvfe45.fsf@tromey.com> X-Spam-Score: -3.17 X-Spam-Level: X-Spamd-Result: default: False [-3.17 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MIME_BASE64_TEXT_BOGUS(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-0.18)[-0.924]; MIME_BASE64_TEXT(0.10)[]; MIME_GOOD(-0.10)[multipart/mixed,text/plain,text/x-patch]; XM_UA_NO_VERSION(0.01)[]; MID_RHS_MATCH_FROM(0.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:+]; RCVD_TLS_ALL(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; TO_DN_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_TWO(0.00)[2]; RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.de:email]; HAS_ATTACHMENT(0.00)[] X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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. --------------DvIjf0pCSgprmhU62QXlEnA6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 6/11/24 21:55, Tom Tromey wrote: >>>>>> "Tom" == Tom de Vries writes: > > Tom> Add non-variadic versions of PyObject_CallMethod that hide these details, such > Tom> that we can use the more intuitive: > > I expanded on this with some template magic, to make gdb automatically > handle all possible overloads. Let me know what you think. > This is what I hoped to achieve when I started out rewriting this, but didn't manage. So, I'm very happy with this solution, thanks for helping out with this. > I think this should probably go one step further and make the > PyObject_CallMethod macro expand to some error, and then change gdb to > use some more obviously gdb-specific name, like gdbpy_call_method -- > that way people with Python experience won't be confused by the gdb API. I took a stab at this, attached below. Thanks, - Tom --------------DvIjf0pCSgprmhU62QXlEnA6 Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-python-Add-non-variadic-versions-of-PyObject_Cal.patch" Content-Disposition: attachment; filename*0="0001-gdb-python-Add-non-variadic-versions-of-PyObject_Cal.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyMjM3NDgwNmEyOWQxZGU0M2Y4ODMxZmQ5MWVlMGI5ODY0Yzk2MzBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4KRGF0 ZTogVHVlLCAxMSBKdW4gMjAyNCAxMzo1NTo1NCAtMDYwMApTdWJqZWN0OiBbUEFUQ0hdIFtn ZGIvcHl0aG9uXSBBZGQgbm9uLXZhcmlhZGljIHZlcnNpb25zIG9mIFB5T2JqZWN0X0NhbGxN ZXRob2QKCi0tLQogZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMgICAgICAgfCAgMiArLQog Z2RiL3B5dGhvbi9weS1kaXNhc20uYyAgICAgICAgICAgfCAgNSArLS0KIGdkYi9weXRob24v cHktZmluaXNoYnJlYWtwb2ludC5jIHwgIDMgKy0KIGdkYi9weXRob24vcHktZnJhbWVmaWx0 ZXIuYyAgICAgIHwgMTcgKysrKy0tLS0KIGdkYi9weXRob24vcHktdHVpLmMgICAgICAgICAg ICAgIHwgMTkgKysrKy0tLS0tCiBnZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oICAgICB8 IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQs IDc3IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vcHktYnJlYWtwb2ludC5jIGIvZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMKaW5k ZXggZGE3NGQ2OWQzNTcuLjFiOGM3MTc0ZDM0IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5 LWJyZWFrcG9pbnQuYworKysgYi9nZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYwpAQCAtMTE3 NCw3ICsxMTc0LDcgQEAgZ2RicHlfYnJlYWtwb2ludF9jb25kX3NheXNfc3RvcCAoY29uc3Qg c3RydWN0IGV4dGVuc2lvbl9sYW5ndWFnZV9kZWZuICpleHRsYW5nLAogCiAgIGlmIChQeU9i amVjdF9IYXNBdHRyU3RyaW5nIChweV9icCwgc3RvcF9mdW5jKSkKICAgICB7Ci0gICAgICBn ZGJweV9yZWY8PiByZXN1bHQgKFB5T2JqZWN0X0NhbGxNZXRob2QgKHB5X2JwLCBzdG9wX2Z1 bmMsIE5VTEwpKTsKKyAgICAgIGdkYnB5X3JlZjw+IHJlc3VsdCAoZ2RicHlfY2FsbF9tZXRo b2QgKHB5X2JwLCBzdG9wX2Z1bmMpKTsKIAogICAgICAgc3RvcCA9IDE7CiAgICAgICBpZiAo cmVzdWx0ICE9IE5VTEwpCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWRpc2FzbS5jIGIv Z2RiL3B5dGhvbi9weS1kaXNhc20uYwppbmRleCA5MzM3NTE0YWNiYS4uNTIwNmM3NjI4ZjUg MTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHktZGlzYXNtLmMKKysrIGIvZ2RiL3B5dGhvbi9w eS1kaXNhc20uYwpAQCAtODU1LDkgKzg1NSw4IEBAIGdkYnB5X2Rpc2Fzc2VtYmxlcjo6cmVh ZF9tZW1vcnlfZnVuYyAoYmZkX3ZtYSBtZW1hZGRyLCBnZGJfYnl0ZSAqYnVmZiwKIAogICAv KiBOb3cgY2FsbCB0aGUgRGlzYXNzZW1ibGVJbmZvLnJlYWRfbWVtb3J5IG1ldGhvZC4gIFRo aXMgbWlnaHQgaGF2ZSBiZWVuCiAgICAgIG92ZXJyaWRkZW4gYnkgdGhlIHVzZXIuICAqLwot ICBnZGJweV9yZWY8PiByZXN1bHRfb2JqIChQeU9iamVjdF9DYWxsTWV0aG9kICgoUHlPYmpl Y3QgKikgb2JqLAotCQkJCQkgICAgICAgInJlYWRfbWVtb3J5IiwKLQkJCQkJICAgICAgICJJ IiBHREJfUFlfTExfQVJHLCBsZW4sIG9mZnNldCkpOworICBnZGJweV9yZWY8PiByZXN1bHRf b2JqIChnZGJweV9jYWxsX21ldGhvZCAoKFB5T2JqZWN0ICopIG9iaiwgInJlYWRfbWVtb3J5 IiwKKwkJCQkJICAgICBsZW4sIG9mZnNldCkpOwogCiAgIC8qIEhhbmRsZSBhbnkgZXhjZXB0 aW9ucy4gICovCiAgIGlmIChyZXN1bHRfb2JqID09IG51bGxwdHIpCmRpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL3B5LWZpbmlzaGJyZWFrcG9pbnQuYyBiL2dkYi9weXRob24vcHktZmluaXNo YnJlYWtwb2ludC5jCmluZGV4IGM3NGEyNDczYTgxLi4xYjYyMGU2ZDMwZSAxMDA2NDQKLS0t IGEvZ2RiL3B5dGhvbi9weS1maW5pc2hicmVha3BvaW50LmMKKysrIGIvZ2RiL3B5dGhvbi9w eS1maW5pc2hicmVha3BvaW50LmMKQEAgLTM0NCw4ICszNDQsNyBAQCBicGZpbmlzaHB5X291 dF9vZl9zY29wZSAoc3RydWN0IGZpbmlzaF9icmVha3BvaW50X29iamVjdCAqYnBmaW5pc2hf b2JqKQogICBpZiAoYnBmaW5pc2hfb2JqLT5weV9icC5icC0+ZW5hYmxlX3N0YXRlID09IGJw X2VuYWJsZWQKICAgICAgICYmIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcgKHB5X29iaiwgb3V0 b2ZzY29wZV9mdW5jKSkKICAgICB7Ci0gICAgICBnZGJweV9yZWY8PiBtZXRoX3Jlc3VsdCAo UHlPYmplY3RfQ2FsbE1ldGhvZCAocHlfb2JqLCBvdXRvZnNjb3BlX2Z1bmMsCi0JCQkJCQkg ICAgTlVMTCkpOworICAgICAgZ2RicHlfcmVmPD4gbWV0aF9yZXN1bHQgKGdkYnB5X2NhbGxf bWV0aG9kIChweV9vYmosIG91dG9mc2NvcGVfZnVuYykpOwogICAgICAgaWYgKG1ldGhfcmVz dWx0ID09IE5VTEwpCiAJZ2RicHlfcHJpbnRfc3RhY2sgKCk7CiAgICAgfQpkaWZmIC0tZ2l0 IGEvZ2RiL3B5dGhvbi9weS1mcmFtZWZpbHRlci5jIGIvZ2RiL3B5dGhvbi9weS1mcmFtZWZp bHRlci5jCmluZGV4IDBjZDE1OTc3ZDJmLi40YWU1ODNiNDMzMSAxMDA2NDQKLS0tIGEvZ2Ri L3B5dGhvbi9weS1mcmFtZWZpbHRlci5jCisrKyBiL2dkYi9weXRob24vcHktZnJhbWVmaWx0 ZXIuYwpAQCAtNTksNyArNTksNyBAQCBleHRyYWN0X3N5bSAoUHlPYmplY3QgKm9iaiwgZ2Ri Ojp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gKm5hbWUsCiAJICAgICBzdHJ1Y3Qgc3ltYm9s ICoqc3ltLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKipzeW1fYmxvY2ssCiAJICAgICBjb25zdCBz dHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqKmxhbmd1YWdlKQogewotICBnZGJweV9yZWY8PiByZXN1 bHQgKFB5T2JqZWN0X0NhbGxNZXRob2QgKG9iaiwgInN5bWJvbCIsIE5VTEwpKTsKKyAgZ2Ri cHlfcmVmPD4gcmVzdWx0IChnZGJweV9jYWxsX21ldGhvZCAob2JqLCAic3ltYm9sIikpOwog CiAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICByZXR1cm4gRVhUX0xBTkdfQlRfRVJST1I7 CkBAIC0xMzAsNyArMTMwLDcgQEAgZXh0cmFjdF92YWx1ZSAoUHlPYmplY3QgKm9iaiwgc3Ry dWN0IHZhbHVlICoqdmFsdWUpCiB7CiAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nIChv YmosICJ2YWx1ZSIpKQogICAgIHsKLSAgICAgIGdkYnB5X3JlZjw+IHZyZXN1bHQgKFB5T2Jq ZWN0X0NhbGxNZXRob2QgKG9iaiwgInZhbHVlIiwgTlVMTCkpOworICAgICAgZ2RicHlfcmVm PD4gdnJlc3VsdCAoZ2RicHlfY2FsbF9tZXRob2QgKG9iaiwgInZhbHVlIikpOwogCiAgICAg ICBpZiAodnJlc3VsdCA9PSBOVUxMKQogCXJldHVybiBFWFRfTEFOR19CVF9FUlJPUjsKQEAg LTI2NCw3ICsyNjQsNyBAQCBnZXRfcHlfaXRlcl9mcm9tX2Z1bmMgKFB5T2JqZWN0ICpmaWx0 ZXIsIGNvbnN0IGNoYXIgKmZ1bmMpCiB7CiAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5n IChmaWx0ZXIsIGZ1bmMpKQogICAgIHsKLSAgICAgIGdkYnB5X3JlZjw+IHJlc3VsdCAoUHlP YmplY3RfQ2FsbE1ldGhvZCAoZmlsdGVyLCBmdW5jLCBOVUxMKSk7CisgICAgICBnZGJweV9y ZWY8PiByZXN1bHQgKGdkYnB5X2NhbGxfbWV0aG9kIChmaWx0ZXIsIGZ1bmMpKTsKIAogICAg ICAgaWYgKHJlc3VsdCAhPSBOVUxMKQogCXsKQEAgLTc5MCw4ICs3OTAsNyBAQCBweV9wcmlu dF9mcmFtZSAoUHlPYmplY3QgKmZpbHRlciwgZnJhbWVfZmlsdGVyX2ZsYWdzIGZsYWdzLAog ICAvKiBHZXQgdGhlIHVuZGVybHlpbmcgZnJhbWUuICBUaGlzIGlzIG5lZWRlZCB0byBkZXRl cm1pbmUgR0RCCiAgIGFyY2hpdGVjdHVyZSwgYW5kIGFsc28sIGluIHRoZSBjYXNlcyBvZiBm cmFtZSB2YXJpYWJsZXMvYXJndW1lbnRzIHRvCiAgIHJlYWQgdGhlbSBpZiB0aGV5IHJldHVy bmVkIGZpbHRlciBvYmplY3QgcmVxdWlyZXMgdXMgdG8gZG8gc28uICAqLwotICBnZGJweV9y ZWY8PiBweV9pbmZfZnJhbWUgKFB5T2JqZWN0X0NhbGxNZXRob2QgKGZpbHRlciwgImluZmVy aW9yX2ZyYW1lIiwKLQkJCQkJCSBOVUxMKSk7CisgIGdkYnB5X3JlZjw+IHB5X2luZl9mcmFt ZSAoZ2RicHlfY2FsbF9tZXRob2QgKGZpbHRlciwgImluZmVyaW9yX2ZyYW1lIikpOwogICBp ZiAocHlfaW5mX2ZyYW1lID09IE5VTEwpCiAgICAgcmV0dXJuIEVYVF9MQU5HX0JUX0VSUk9S OwogCkBAIC04MzEsNyArODMwLDcgQEAgcHlfcHJpbnRfZnJhbWUgKFB5T2JqZWN0ICpmaWx0 ZXIsIGZyYW1lX2ZpbHRlcl9mbGFncyBmbGFncywKIAkgYWRkcmVzcyBwcmludGluZy4gICov CiAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyAoZmlsdGVyLCAiYWRkcmVzcyIp KQogCXsKLQkgIGdkYnB5X3JlZjw+IHBhZGRyIChQeU9iamVjdF9DYWxsTWV0aG9kIChmaWx0 ZXIsICJhZGRyZXNzIiwgTlVMTCkpOworCSAgZ2RicHlfcmVmPD4gcGFkZHIgKGdkYnB5X2Nh bGxfbWV0aG9kIChmaWx0ZXIsICJhZGRyZXNzIikpOwogCiAJICBpZiAocGFkZHIgPT0gTlVM TCkKIAkgICAgcmV0dXJuIEVYVF9MQU5HX0JUX0VSUk9SOwpAQCAtOTA2LDcgKzkwNSw3IEBA IHB5X3ByaW50X2ZyYW1lIChQeU9iamVjdCAqZmlsdGVyLCBmcmFtZV9maWx0ZXJfZmxhZ3Mg ZmxhZ3MsCiAgICAgICAvKiBQcmludCBmcmFtZSBmdW5jdGlvbiBuYW1lLiAgKi8KICAgICAg IGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nIChmaWx0ZXIsICJmdW5jdGlvbiIpKQogCXsK LQkgIGdkYnB5X3JlZjw+IHB5X2Z1bmMgKFB5T2JqZWN0X0NhbGxNZXRob2QgKGZpbHRlciwg ImZ1bmN0aW9uIiwgTlVMTCkpOworCSAgZ2RicHlfcmVmPD4gcHlfZnVuYyAoZ2RicHlfY2Fs bF9tZXRob2QgKGZpbHRlciwgImZ1bmN0aW9uIikpOwogCSAgY29uc3QgY2hhciAqZnVuY3Rp b24gPSBOVUxMOwogCiAJICBpZiAocHlfZnVuYyA9PSBOVUxMKQpAQCAtOTcwLDcgKzk2OSw3 IEBAIHB5X3ByaW50X2ZyYW1lIChQeU9iamVjdCAqZmlsdGVyLCBmcmFtZV9maWx0ZXJfZmxh Z3MgZmxhZ3MsCiAKICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nIChmaWx0ZXIs ICJmaWxlbmFtZSIpKQogCXsKLQkgIGdkYnB5X3JlZjw+IHB5X2ZuIChQeU9iamVjdF9DYWxs TWV0aG9kIChmaWx0ZXIsICJmaWxlbmFtZSIsIE5VTEwpKTsKKwkgIGdkYnB5X3JlZjw+IHB5 X2ZuIChnZGJweV9jYWxsX21ldGhvZCAoZmlsdGVyLCAiZmlsZW5hbWUiKSk7CiAKIAkgIGlm IChweV9mbiA9PSBOVUxMKQogCSAgICByZXR1cm4gRVhUX0xBTkdfQlRfRVJST1I7CkBAIC05 OTQsNyArOTkzLDcgQEAgcHlfcHJpbnRfZnJhbWUgKFB5T2JqZWN0ICpmaWx0ZXIsIGZyYW1l X2ZpbHRlcl9mbGFncyBmbGFncywKIAogICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJp bmcgKGZpbHRlciwgImxpbmUiKSkKIAl7Ci0JICBnZGJweV9yZWY8PiBweV9saW5lIChQeU9i amVjdF9DYWxsTWV0aG9kIChmaWx0ZXIsICJsaW5lIiwgTlVMTCkpOworCSAgZ2RicHlfcmVm PD4gcHlfbGluZSAoZ2RicHlfY2FsbF9tZXRob2QgKGZpbHRlciwgImxpbmUiKSk7CiAJICBp bnQgbGluZTsKIAogCSAgaWYgKHB5X2xpbmUgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vcHktdHVpLmMgYi9nZGIvcHl0aG9uL3B5LXR1aS5jCmluZGV4IDVkY2VjNGJkMmIx Li45ZGY4NmRmOGM0MCAxMDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weS10dWkuYworKysgYi9n ZGIvcHl0aG9uL3B5LXR1aS5jCkBAIC0xNjQsOCArMTY0LDcgQEAgdHVpX3B5X3dpbmRvdzo6 fnR1aV9weV93aW5kb3cgKCkKICAgaWYgKG1fd2luZG93ICE9IG51bGxwdHIKICAgICAgICYm IFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcgKG1fd2luZG93LmdldCAoKSwgImNsb3NlIikpCiAg ICAgewotICAgICAgZ2RicHlfcmVmPD4gcmVzdWx0IChQeU9iamVjdF9DYWxsTWV0aG9kICht X3dpbmRvdy5nZXQgKCksICJjbG9zZSIsCi0JCQkJCSAgICAgICBudWxscHRyKSk7CisgICAg ICBnZGJweV9yZWY8PiByZXN1bHQgKGdkYnB5X2NhbGxfbWV0aG9kIChtX3dpbmRvdy5nZXQg KCksICJjbG9zZSIpKTsKICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbHB0cikKIAlnZGJweV9w cmludF9zdGFjayAoKTsKICAgICB9CkBAIC0xOTgsOCArMTk3LDcgQEAgdHVpX3B5X3dpbmRv dzo6cmVyZW5kZXIgKCkKIAogICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyAobV93aW5k b3cuZ2V0ICgpLCAicmVuZGVyIikpCiAgICAgewotICAgICAgZ2RicHlfcmVmPD4gcmVzdWx0 IChQeU9iamVjdF9DYWxsTWV0aG9kIChtX3dpbmRvdy5nZXQgKCksICJyZW5kZXIiLAotCQkJ CQkgICAgICAgbnVsbHB0cikpOworICAgICAgZ2RicHlfcmVmPD4gcmVzdWx0IChnZGJweV9j YWxsX21ldGhvZCAobV93aW5kb3cuZ2V0ICgpLCAicmVuZGVyIikpOwogICAgICAgaWYgKHJl c3VsdCA9PSBudWxscHRyKQogCWdkYnB5X3ByaW50X3N0YWNrICgpOwogICAgIH0KQEAgLTIx Miw4ICsyMTAsOCBAQCB0dWlfcHlfd2luZG93Ojpkb19zY3JvbGxfaG9yaXpvbnRhbCAoaW50 IG51bV90b19zY3JvbGwpCiAKICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcgKG1fd2lu ZG93LmdldCAoKSwgImhzY3JvbGwiKSkKICAgICB7Ci0gICAgICBnZGJweV9yZWY8PiByZXN1 bHQgKFB5T2JqZWN0X0NhbGxNZXRob2QgKG1fd2luZG93LmdldCgpLCAiaHNjcm9sbCIsCi0J CQkJCSAgICAgICAiaSIsIG51bV90b19zY3JvbGwsIG51bGxwdHIpKTsKKyAgICAgIGdkYnB5 X3JlZjw+IHJlc3VsdCAoZ2RicHlfY2FsbF9tZXRob2QgKG1fd2luZG93LmdldCAoKSwgImhz Y3JvbGwiLAorCQkJCQkgICAgIG51bV90b19zY3JvbGwpKTsKICAgICAgIGlmIChyZXN1bHQg PT0gbnVsbHB0cikKIAlnZGJweV9wcmludF9zdGFjayAoKTsKICAgICB9CkBAIC0yMjYsOCAr MjI0LDggQEAgdHVpX3B5X3dpbmRvdzo6ZG9fc2Nyb2xsX3ZlcnRpY2FsIChpbnQgbnVtX3Rv X3Njcm9sbCkKIAogICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyAobV93aW5kb3cuZ2V0 ICgpLCAidnNjcm9sbCIpKQogICAgIHsKLSAgICAgIGdkYnB5X3JlZjw+IHJlc3VsdCAoUHlP YmplY3RfQ2FsbE1ldGhvZCAobV93aW5kb3cuZ2V0ICgpLCAidnNjcm9sbCIsCi0JCQkJCSAg ICAgICAiaSIsIG51bV90b19zY3JvbGwsIG51bGxwdHIpKTsKKyAgICAgIGdkYnB5X3JlZjw+ IHJlc3VsdCAoZ2RicHlfY2FsbF9tZXRob2QgKG1fd2luZG93LmdldCAoKSwgInZzY3JvbGwi LAorCQkJCQkgICAgIG51bV90b19zY3JvbGwpKTsKICAgICAgIGlmIChyZXN1bHQgPT0gbnVs bHB0cikKIAlnZGJweV9wcmludF9zdGFjayAoKTsKICAgICB9CkBAIC0yNDgsOSArMjQ2LDgg QEAgdHVpX3B5X3dpbmRvdzo6Y2xpY2sgKGludCBtb3VzZV94LCBpbnQgbW91c2VfeSwgaW50 IG1vdXNlX2J1dHRvbikKIAogICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyAobV93aW5k b3cuZ2V0ICgpLCAiY2xpY2siKSkKICAgICB7Ci0gICAgICBnZGJweV9yZWY8PiByZXN1bHQg KFB5T2JqZWN0X0NhbGxNZXRob2QgKG1fd2luZG93LmdldCAoKSwgImNsaWNrIiwKLQkJCQkJ ICAgICAgICJpaWkiLCBtb3VzZV94LCBtb3VzZV95LAotCQkJCQkgICAgICAgbW91c2VfYnV0 dG9uKSk7CisgICAgICBnZGJweV9yZWY8PiByZXN1bHQgKGdkYnB5X2NhbGxfbWV0aG9kICht X3dpbmRvdy5nZXQgKCksICJjbGljayIsCisJCQkJCSAgICAgbW91c2VfeCwgbW91c2VfeSwg bW91c2VfYnV0dG9uKSk7CiAgICAgICBpZiAocmVzdWx0ID09IG51bGxwdHIpCiAJZ2RicHlf cHJpbnRfc3RhY2sgKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24t aW50ZXJuYWwuaCBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKaW5kZXggZDA3ZjIz OWNhNjUuLjU0MGI0MGIwYTAwIDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oCisrKyBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKQEAgLTE0NSwyNiAr MTQ1LDcyIEBAIHR5cGVkZWYgbG9uZyBQeV9oYXNoX3Q7CiAjZGVmaW5lIFB5TWVtX1Jhd01h bGxvYyBQeU1lbV9NYWxsb2MKICNlbmRpZgogCi0vKiBQeU9iamVjdF9DYWxsTWV0aG9kJ3Mg J21ldGhvZCcgYW5kICdmb3JtYXQnIHBhcmFtZXRlcnMgd2VyZSBtaXNzaW5nCi0gICB0aGUg J2NvbnN0JyBxdWFsaWZpZXIgYmVmb3JlIFB5dGhvbiAzLjQuICBIZW5jZSwgd2Ugd3JhcCB0 aGUKLSAgIGZ1bmN0aW9uIGluIG91ciBvd24gdmVyc2lvbiB0byBhdm9pZCBlcnJvcnMgd2l0 aCBzdHJpbmcgbGl0ZXJhbHMuCi0gICBOb3RlLCB0aGlzIGlzIGEgdmFyaWFkaWMgdGVtcGxh dGUgYmVjYXVzZSBQeU9iamVjdF9DYWxsTWV0aG9kIGlzIGEKLSAgIHZhcmFyZ3MgZnVuY3Rp b24gYW5kIFB5dGhvbiBkb2Vzbid0IGhhdmUgYSAiUHlPYmplY3RfVmFDYWxsTWV0aG9kIgot ICAgdmFyaWFudCB0YWtpbmcgYSB2YV9saXN0IHRoYXQgd2UgY291bGQgZGVmZXIgdG8gaW5z dGVhZC4gICovCisvKiBBIHRlbXBsYXRlIHZhcmlhYmxlIGhvbGRpbmcgdGhlIGZvcm1hdCBj aGFyYWN0ZXIgKGFzIGZvcgorICAgUHlfQnVpbGRWYWx1ZSkgZm9yIGEgZ2l2ZW4gdHlwZS4g ICovCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3RleHByIGNoYXIgZ2RicHlfbWV0aG9k X2Zvcm1hdCA9ICdcMCc7CisKK3RlbXBsYXRlPD4KK2NvbnN0ZXhwciBjaGFyIGdkYnB5X21l dGhvZF9mb3JtYXQ8Z2RiX3B5X2xvbmdlc3Q+ID0gR0RCX1BZX0xMX0FSR1swXTsKKwordGVt cGxhdGU8PgorY29uc3RleHByIGNoYXIgZ2RicHlfbWV0aG9kX2Zvcm1hdDxnZGJfcHlfdWxv bmdlc3Q+ID0gR0RCX1BZX0xMVV9BUkdbMF07CisKK3RlbXBsYXRlPD4KK2NvbnN0ZXhwciBj aGFyIGdkYnB5X21ldGhvZF9mb3JtYXQ8aW50PiA9ICdpJzsKKwordGVtcGxhdGU8PgorY29u c3RleHByIGNoYXIgZ2RicHlfbWV0aG9kX2Zvcm1hdDx1bnNpZ25lZD4gPSAnSSc7CisKKy8q IEEgaGVscGVyIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIFB5T2JqZWN0X0NhbGxNZXRob2Qg LworICAgUHlfQnVpbGRWYWx1ZSBmb3JtYXQgZ2l2ZW4gdGhlIGFyZ3VtZW50IHR5cGVzLiAg Ki8KIAogdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KK2NvbnN0ZXhwciBzdGQ6OmFycmF5 PGNoYXIsIHNpemVvZi4uLiAoQXJncykgKyAxPgorZ2RicHlfbWFrZV9mbXQgKCkKK3sKKyAg cmV0dXJuIHsgZ2RicHlfbWV0aG9kX2Zvcm1hdDxBcmdzPi4uLiwgJ1wwJyB9OworfQorCisv KiBUeXBlc2FmZSB3cmFwcGVyIGFyb3VuZCBQeU9iamVjdF9DYWxsTWV0aG9kLgorICAgVGhp cyB2YXJpYW50IGFjY2VwdHMgbm8gYXJndW1lbnRzLiAgKi8KKwogc3RhdGljIGlubGluZSBQ eU9iamVjdCAqCi1nZGJfUHlPYmplY3RfQ2FsbE1ldGhvZCAoUHlPYmplY3QgKm8sIGNvbnN0 IGNoYXIgKm1ldGhvZCwgY29uc3QgY2hhciAqZm9ybWF0LAotCQkJIEFyZ3MuLi4gYXJncykg LyogQVJJOiBlZGl0Q2FzZSBmdW5jdGlvbiAqLworZ2RicHlfY2FsbF9tZXRob2QgKFB5T2Jq ZWN0ICpvLCBjb25zdCBjaGFyICptZXRob2QpCiB7CisgIC8qIFB5T2JqZWN0X0NhbGxNZXRo b2QncyAnbWV0aG9kJyBhbmQgJ2Zvcm1hdCcgcGFyYW1ldGVycyB3ZXJlIG1pc3NpbmcgdGhl CisgICAgICdjb25zdCcgcXVhbGlmaWVyIGJlZm9yZSBQeXRob24gMy40LiAgKi8KICAgcmV0 dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QgKG8sCiAJCQkgICAgICBjb25zdF9jYXN0PGNoYXIg Kj4gKG1ldGhvZCksCi0JCQkgICAgICBjb25zdF9jYXN0PGNoYXIgKj4gKGZvcm1hdCksCi0J CQkgICAgICBhcmdzLi4uKTsKKwkJCSAgICAgIG51bGxwdHIpOwogfQogCisvKiBUeXBlc2Fm ZSB3cmFwcGVyIGFyb3VuZCBQeU9iamVjdF9DYWxsTWV0aG9kLgorICAgVGhpcyB2YXJpYW50 IGFjY2VwdHMgYW55IG51bWJlciBvZiBhcmd1bWVudHMgYW5kIGF1dG9tYXRpY2FsbHkKKyAg IGNvbXB1dGVzIHRoZSBmb3JtYXQgc3RyaW5nLCBlbnN1cmluZyB0aGF0IGZvcm1hdC9hcmd1 bWVudAorICAgbWlzbWF0Y2hlcyBhcmUgaW1wb3NzaWJsZS4gICovCisKK3RlbXBsYXRlPHR5 cGVuYW1lIEFyZywgdHlwZW5hbWUuLi4gQXJncz4KK3N0YXRpYyBpbmxpbmUgUHlPYmplY3Qg KgorZ2RicHlfY2FsbF9tZXRob2QgKFB5T2JqZWN0ICpvLCBjb25zdCBjaGFyICptZXRob2Qs CisJCSAgIEFyZyBhcmcsIEFyZ3MuLi4gYXJncykKK3sKKyAgY29uc3RleHByIGNvbnN0IGF1 dG8gZm10ID0gZ2RicHlfbWFrZV9mbXQ8QXJnLCBBcmdzLi4uPiAoKTsKKworICAvKiBQeU9i amVjdF9DYWxsTWV0aG9kJ3MgJ21ldGhvZCcgYW5kICdmb3JtYXQnIHBhcmFtZXRlcnMgd2Vy ZSBtaXNzaW5nIHRoZQorICAgICAnY29uc3QnIHF1YWxpZmllciBiZWZvcmUgUHl0aG9uIDMu NC4gICovCisgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kIChvLAorCQkJICAgICAgY29u c3RfY2FzdDxjaGFyICo+IChtZXRob2QpLAorCQkJICAgICAgY29uc3RfY2FzdDxjaGFyICo+ IChmbXQuZGF0YSAoKSksCisJCQkgICAgICBhcmcsIGFyZ3MuLi4pOworfQorCisvKiBQb2lz b24gUHlPYmplY3RfQ2FsbE1ldGhvZC4gIFRoZSB0eXBlc2FmZSB3cmFwcGVyIGdkYnB5X2Nh bGxfbWV0aG9kIHNob3VsZCBiZQorICAgdXNlZCBpbnN0ZWFkLiAgKi8KICN1bmRlZiBQeU9i amVjdF9DYWxsTWV0aG9kCi0jZGVmaW5lIFB5T2JqZWN0X0NhbGxNZXRob2QgZ2RiX1B5T2Jq ZWN0X0NhbGxNZXRob2QKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+CitQeU9iamVjdCAq CitQeU9iamVjdF9DYWxsTWV0aG9kIChBcmdzLi4uKTsKIAogLyogVGhlICduYW1lJyBwYXJh bWV0ZXIgb2YgUHlFcnJfTmV3RXhjZXB0aW9uIHdhcyBtaXNzaW5nIHRoZSAnY29uc3QnCiAg ICBxdWFsaWZpZXIgaW4gUHl0aG9uIDw9IDMuNC4gIEhlbmNlLCB3ZSB3cmFwIGl0IGluIGEg ZnVuY3Rpb24gdG8KCmJhc2UtY29tbWl0OiA2ZGZkMDcyMjJjMDJlZGM3OTI0NDcwNDliYTk0 NTE4YWU5ODJmMzYyCi0tIAoyLjM1LjMKCg== --------------DvIjf0pCSgprmhU62QXlEnA6--