From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23660 invoked by alias); 16 Dec 2011 19:09:06 -0000 Received: (qmail 23646 invoked by uid 22791); 16 Dec 2011 19:09:03 -0000 X-SWARE-Spam-Status: No, hits=-4.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RP_MATCHES_RCVD,TW_DB X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 16 Dec 2011 19:08:35 +0000 Received: by vcge1 with SMTP id e1so2089188vcg.0 for ; Fri, 16 Dec 2011 11:08:35 -0800 (PST) Received: by 10.220.116.81 with SMTP id l17mr4592695vcq.71.1324062514989; Fri, 16 Dec 2011 11:08:34 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.116.81 with SMTP id l17mr4592684vcq.71.1324062514883; Fri, 16 Dec 2011 11:08:34 -0800 (PST) Received: by 10.220.199.4 with HTTP; Fri, 16 Dec 2011 11:08:34 -0800 (PST) In-Reply-To: References: <20111201212632.E6F892461D0@ruffy.mtv.corp.google.com> Date: Fri, 16 Dec 2011 19:15:00 -0000 Message-ID: Subject: Re: [RFA] stdio gdbserver From: Doug Evans To: Tom Tromey Cc: gdb-patches@sourceware.org X-System-Of-Record: true Content-Type: multipart/mixed; boundary=f46d043891eddc2b2d04b43a5333 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-12/txt/msg00524.txt.bz2 --f46d043891eddc2b2d04b43a5333 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1656 On Fri, Dec 2, 2011 at 8:35 AM, Tom Tromey wrote: >>>>>> "Doug" == Doug Evans writes: > > Doug> This patch adds stdio support to gdbserver. > Doug> It's a revamp of a patch I submitted a fair while ago. > Doug> E.g. target remote | ssh hostname gdbserver - hello > Doug> Ok to check in? > > I read the patch, and it seemed reasonable to me; but I don't know > gdbserver very well. > > I like this idea though. Here is what I committed. 2011-12-16 Doug Evans * NEWS: Add entry for stdio gdbserver. gdbserver/ * linux-low.c (linux_create_inferior): If stdio connection, redirect stdin from /dev/null, stdout to stderr. * remote-utils.c (remote_is_stdio): New static global. (remote_connection_is_stdio): New function. (remote_prepare): Handle stdio connection. (remote_open): Ditto. (remote_close): Don't close stdin for stdio connections. (read_prim,write_prim): New functions. Replace all calls to read/write to these. * server.c (main): Watch for "-" argument. Move call to remote_prepare before start_inferior. * server.h (STDIO_CONNECTION_NAME): New macro. (remote_connection_is_stdio): Declare. doc/ * gdb.texinfo (Server): Document -/stdio argument to gdbserver. testsuite/ * lib/gdbserver-support.exp (gdb_target_cmd): Recognize stdio gdbserver output. (gdbserver_default_get_remote_address): New function. (gdbserver_start): Call gdb,get_remote_address to compute argument to "target remote" command. --f46d043891eddc2b2d04b43a5333 Content-Type: text/plain; charset=US-ASCII; name="gdb-111216-gdbserver-stdio-4.patch.txt" Content-Disposition: attachment; filename="gdb-111216-gdbserver-stdio-4.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gw9kmcwn0 Content-length: 18321 MjAxMS0xMi0xNiAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCSog TkVXUzogQWRkIGVudHJ5IGZvciBzdGRpbyBnZGJzZXJ2ZXIuCgoJZ2Ric2Vy dmVyLwoJKiBsaW51eC1sb3cuYyAobGludXhfY3JlYXRlX2luZmVyaW9yKTog SWYgc3RkaW8gY29ubmVjdGlvbiwKCXJlZGlyZWN0IHN0ZGluIGZyb20gL2Rl di9udWxsLCBzdGRvdXQgdG8gc3RkZXJyLgoJKiByZW1vdGUtdXRpbHMuYyAo cmVtb3RlX2lzX3N0ZGlvKTogTmV3IHN0YXRpYyBnbG9iYWwuCgkocmVtb3Rl X2Nvbm5lY3Rpb25faXNfc3RkaW8pOiBOZXcgZnVuY3Rpb24uCgkocmVtb3Rl X3ByZXBhcmUpOiBIYW5kbGUgc3RkaW8gY29ubmVjdGlvbi4KCShyZW1vdGVf b3Blbik6IERpdHRvLgoJKHJlbW90ZV9jbG9zZSk6IERvbid0IGNsb3NlIHN0 ZGluIGZvciBzdGRpbyBjb25uZWN0aW9ucy4KCShyZWFkX3ByaW0sd3JpdGVf cHJpbSk6IE5ldyBmdW5jdGlvbnMuICBSZXBsYWNlIGFsbCBjYWxscyB0bwoJ cmVhZC93cml0ZSB0byB0aGVzZS4KCSogc2VydmVyLmMgKG1haW4pOiBXYXRj aCBmb3IgIi0iIGFyZ3VtZW50LiAgTW92ZSBjYWxsIHRvCglyZW1vdGVfcHJl cGFyZSBiZWZvcmUgc3RhcnRfaW5mZXJpb3IuCgkqIHNlcnZlci5oIChTVERJ T19DT05ORUNUSU9OX05BTUUpOiBOZXcgbWFjcm8uCgkocmVtb3RlX2Nvbm5l Y3Rpb25faXNfc3RkaW8pOiBEZWNsYXJlLgoKCWRvYy8KCSogZ2RiLnRleGlu Zm8gKFNlcnZlcik6IERvY3VtZW50IC0vc3RkaW8gYXJndW1lbnQgdG8gZ2Ri c2VydmVyLgoKCXRlc3RzdWl0ZS8KCSogbGliL2dkYnNlcnZlci1zdXBwb3J0 LmV4cCAoZ2RiX3RhcmdldF9jbWQpOiBSZWNvZ25pemUgc3RkaW8KCWdkYnNl cnZlciBvdXRwdXQuCgkoZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X3JlbW90ZV9h ZGRyZXNzKTogTmV3IGZ1bmN0aW9uLgoJKGdkYnNlcnZlcl9zdGFydCk6IENh bGwgZ2RiLGdldF9yZW1vdGVfYWRkcmVzcyB0byBjb21wdXRlIGFyZ3VtZW50 Cgl0byAidGFyZ2V0IHJlbW90ZSIgY29tbWFuZC4KCkluZGV4OiBORVdTCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvTkVXUyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40NzUKZGlmZiAtdSAt cCAtcjEuNDc1IE5FV1MKLS0tIE5FV1MJMTYgRGVjIDIwMTEgMTU6NTU6Mzgg LTAwMDAJMS40NzUKKysrIE5FV1MJMTYgRGVjIDIwMTEgMTg6MzM6MzUgLTAw MDAKQEAgLTMsNiArMyw5IEBACiAKICoqKiBDaGFuZ2VzIHNpbmNlIEdEQiA3 LjQKIAorKiBHREJzZXJ2ZXIgbm93IHN1cHBvcnRzIHN0ZGlvIGNvbm5lY3Rp b25zLgorICBFLmcuIChnZGIpIHRhcmdldCByZW1vdGUgfCBzc2ggbXlob3N0 IGdkYnNlcnZlciAtIGhlbGxvCisKICoqKiBDaGFuZ2VzIGluIEdEQiA3LjQK IAogKiBHREIgbm93IGhhbmRsZXMgYW1iaWd1b3VzIGxpbmVzcGVjcyBtb3Jl IGNvbnNpc3RlbnRseTsgdGhlIGV4aXN0aW5nCkluZGV4OiBkb2MvZ2RiLnRl eGluZm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8sdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuOTA2CmRpZmYgLXUgLXAgLXIxLjkwNiBnZGIudGV4aW5mbwotLS0g ZG9jL2dkYi50ZXhpbmZvCTE2IERlYyAyMDExIDE1OjU1OjM4IC0wMDAwCTEu OTA2CisrKyBkb2MvZ2RiLnRleGluZm8JMTYgRGVjIDIwMTEgMTg6MzM6MzYg LTAwMDAKQEAgLTE2NzY2LDggKzE2NzY2LDEwIEBAIHN5bnRheCBpczoKIHRh cmdldD4gZ2Ric2VydmVyIEB2YXJ7Y29tbX0gQHZhcntwcm9ncmFtfSBbIEB2 YXJ7YXJnc30gQGRvdHN7fSBdCiBAZW5kIHNtYWxsZXhhbXBsZQogCi1AdmFy e2NvbW19IGlzIGVpdGhlciBhIGRldmljZSBuYW1lICh0byB1c2UgYSBzZXJp YWwgbGluZSkgb3IgYSBUQ1AKLWhvc3RuYW1lIGFuZCBwb3J0bnVtYmVyLiAg Rm9yIGV4YW1wbGUsIHRvIGRlYnVnIEVtYWNzIHdpdGggdGhlIGFyZ3VtZW50 CitAdmFye2NvbW19IGlzIGVpdGhlciBhIGRldmljZSBuYW1lICh0byB1c2Ug YSBzZXJpYWwgbGluZSksIG9yIGEgVENQCitob3N0bmFtZSBhbmQgcG9ydG51 bWJlciwgb3IgQGNvZGV7LX0gb3IgQGNvZGV7c3RkaW99IHRvIHVzZQorc3Rk aW4vc3Rkb3V0IG9mIEBjb2Rle2dkYnNlcnZlcn0uCitGb3IgZXhhbXBsZSwg dG8gZGVidWcgRW1hY3Mgd2l0aCB0aGUgYXJndW1lbnQKIEBzYW1we2Zvby50 eHR9IGFuZCBjb21tdW5pY2F0ZSB3aXRoIEB2YWx1ZXtHREJOfSBvdmVyIHRo ZSBzZXJpYWwgcG9ydAogQGZpbGV7L2Rldi9jb20xfToKIApAQCAtMTY3OTYs NiArMTY3OTgsMjMgQEAgY29uZmxpY3RzIHdpdGggYW5vdGhlciBzZXJ2aWNl LCBAY29kZXtnZAogYW5kIGV4aXRzLn0gIFlvdSBtdXN0IHVzZSB0aGUgc2Ft ZSBwb3J0IG51bWJlciB3aXRoIHRoZSBob3N0IEB2YWx1ZXtHREJOfQogQGNv ZGV7dGFyZ2V0IHJlbW90ZX0gY29tbWFuZC4KIAorVGhlIEBjb2Rle3N0ZGlv fSBjb25uZWN0aW9uIGlzIHVzZWZ1bCB3aGVuIHN0YXJ0aW5nIEBjb2Rle2dk YnNlcnZlcn0KK3dpdGggc3NoOgorCitAc21hbGxleGFtcGxlCisoZ2RiKSB0 YXJnZXQgcmVtb3RlIHwgc3NoIC1UIGhvc3RuYW1lIGdkYnNlcnZlciAtIGhl bGxvCitAZW5kIHNtYWxsZXhhbXBsZQorCitUaGUgQHNhbXB7LVR9IG9wdGlv biB0byBzc2ggaXMgcHJvdmlkZWQgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIGEg cmVtb3RlIHB0eSwKK2FuZCB3ZSBkb24ndCB3YW50IGVzY2FwZS1jaGFyYWN0 ZXIgaGFuZGxpbmcuICBTc2ggZG9lcyB0aGlzIGJ5IGRlZmF1bHQgd2hlbgor YSBjb21tYW5kIGlzIHByb3ZpZGVkLCB0aGUgZmxhZyBpcyBwcm92aWRlZCB0 byBtYWtlIGl0IGV4cGxpY2l0LgorWW91IGNvdWxkIGVsaWRlIGl0IGlmIHlv dSB3YW50IHRvLgorCitQcm9ncmFtcyBzdGFydGVkIHdpdGggc3RkaW8tY29u bmVjdGVkIGdkYnNlcnZlciBoYXZlIEBmaWxley9kZXYvbnVsbH0gZm9yCitA Y29kZXtzdGRpbn0sIGFuZCBAY29kZXtzdGRvdXR9LEBjb2Rle3N0ZGVycn0g YXJlIHNlbnQgYmFjayB0byBnZGIgZm9yCitkaXNwbGF5IHRocm91Z2ggYSBw aXBlIGNvbm5lY3RlZCB0byBnZGJzZXJ2ZXIuCitCb3RoIEBjb2Rle3N0ZG91 dH0gYW5kIEBjb2Rle3N0ZGVycn0gdXNlIHRoZSBzYW1lIHBpcGUuCisKIEBz dWJzdWJzZWN0aW9uIEF0dGFjaGluZyB0byBhIFJ1bm5pbmcgUHJvZ3JhbQog QGNpbmRleCBhdHRhY2ggdG8gYSBwcm9ncmFtLCBAY29kZXtnZGJzZXJ2ZXJ9 CiBAY2luZGV4IEBvcHRpb257LS1hdHRhY2h9LCBAY29kZXtnZGJzZXJ2ZXJ9 IG9wdGlvbgpJbmRleDogZ2Ric2VydmVyL2xpbnV4LWxvdy5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ri c2VydmVyL2xpbnV4LWxvdy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4 NApkaWZmIC11IC1wIC1yMS4xODQgbGludXgtbG93LmMKLS0tIGdkYnNlcnZl ci9saW51eC1sb3cuYwkxNCBEZWMgMjAxMSAxNzozMzoyNCAtMDAwMAkxLjE4 NAorKysgZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTE2IERlYyAyMDExIDE4OjMz OjM2IC0wMDAwCkBAIC01NjksNiArNTY5LDE4IEBAIGxpbnV4X2NyZWF0ZV9p bmZlcmlvciAoY2hhciAqcHJvZ3JhbSwgY2gKIAogICAgICAgc2V0cGdpZCAo MCwgMCk7CiAKKyAgICAgIC8qIElmIGdkYnNlcnZlciBpcyBjb25uZWN0ZWQg dG8gZ2RiIHZpYSBzdGRpbywgcmVkaXJlY3QgdGhlIGluZmVyaW9yJ3MKKwkg c3Rkb3V0IHRvIHN0ZGVyciBzbyB0aGF0IGluZmVyaW9yIGkvbyBkb2Vzbid0 IGNvcnJ1cHQgdGhlIGNvbm5lY3Rpb24uCisJIEFsc28sIHJlZGlyZWN0IHN0 ZGluIHRvIC9kZXYvbnVsbC4gICovCisgICAgICBpZiAocmVtb3RlX2Nvbm5l Y3Rpb25faXNfc3RkaW8gKCkpCisJeworCSAgY2xvc2UgKDApOworCSAgb3Bl biAoIi9kZXYvbnVsbCIsIE9fUkRPTkxZKTsKKwkgIGR1cDIgKDIsIDEpOwor CSAgd3JpdGUgKDIsICJzdGRpbi9zdGRvdXQgcmVkaXJlY3RlZFxuIiwKKwkJ IHNpemVvZiAoInN0ZGluL3N0ZG91dCByZWRpcmVjdGVkXG4iKSAtIDEpOwor CX0KKwogICAgICAgZXhlY3YgKHByb2dyYW0sIGFsbGFyZ3MpOwogICAgICAg aWYgKGVycm5vID09IEVOT0VOVCkKIAlleGVjdnAgKHByb2dyYW0sIGFsbGFy Z3MpOwpJbmRleDogZ2Ric2VydmVyL3JlbW90ZS11dGlscy5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ri c2VydmVyL3JlbW90ZS11dGlscy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAx Ljg4CmRpZmYgLXUgLXAgLXIxLjg4IHJlbW90ZS11dGlscy5jCi0tLSBnZGJz ZXJ2ZXIvcmVtb3RlLXV0aWxzLmMJOSBOb3YgMjAxMSAwMjozMjo0MiAtMDAw MAkxLjg4CisrKyBnZGJzZXJ2ZXIvcmVtb3RlLXV0aWxzLmMJMTYgRGVjIDIw MTEgMTg6MzM6MzYgLTAwMDAKQEAgLTEwNyw2ICsxMDcsOCBAQCBzdHJ1Y3Qg c3ltX2NhY2hlCiBpbnQgcmVtb3RlX2RlYnVnID0gMDsKIHN0cnVjdCB1aV9m aWxlICpnZGJfc3RkbG9nOwogCitzdGF0aWMgaW50IHJlbW90ZV9pc19zdGRp byA9IDA7CisKIHN0YXRpYyBnZGJfZmlsZGVzX3QgcmVtb3RlX2Rlc2MgPSBJ TlZBTElEX0RFU0NSSVBUT1I7CiBzdGF0aWMgZ2RiX2ZpbGRlc190IGxpc3Rl bl9kZXNjID0gSU5WQUxJRF9ERVNDUklQVE9SOwogCkBAIC0xMzAsNiArMTMy LDE0IEBAIGdkYl9jb25uZWN0ZWQgKHZvaWQpCiAgIHJldHVybiByZW1vdGVf ZGVzYyAhPSBJTlZBTElEX0RFU0NSSVBUT1I7CiB9CiAKKy8qIFJldHVybiB0 cnVlIGlmIHRoZSByZW1vdGUgY29ubmVjdGlvbiBpcyBvdmVyIHN0ZGlvLiAg Ki8KKworaW50CityZW1vdGVfY29ubmVjdGlvbl9pc19zdGRpbyAodm9pZCkK K3sKKyAgcmV0dXJuIHJlbW90ZV9pc19zdGRpbzsKK30KKwogc3RhdGljIHZv aWQKIGVuYWJsZV9hc3luY19ub3RpZmljYXRpb24gKGludCBmZCkKIHsKQEAg LTIyMiw2ICsyMzIsMTcgQEAgcmVtb3RlX3ByZXBhcmUgKGNoYXIgKm5hbWUp CiAgIHNvY2tsZW5fdCB0bXA7CiAgIGNoYXIgKnBvcnRfZW5kOwogCisgIHJl bW90ZV9pc19zdGRpbyA9IDA7CisgIGlmIChzdHJjbXAgKG5hbWUsIFNURElP X0NPTk5FQ1RJT05fTkFNRSkgPT0gMCkKKyAgICB7CisgICAgICAvKiBXZSBu ZWVkIHRvIHJlY29yZCBmYWN0IHRoYXQgd2UncmUgdXNpbmcgc3RkaW8gc29v bmVyIHRoYW4gdGhlCisJIGNhbGwgdG8gcmVtb3RlX29wZW4gc28gc3RhcnRf aW5mZXJpb3Iga25vd3MgdGhlIGNvbm5lY3Rpb24gaXMKKwkgdmlhIHN0ZGlv LiAgKi8KKyAgICAgIHJlbW90ZV9pc19zdGRpbyA9IDE7CisgICAgICB0cmFu c3BvcnRfaXNfcmVsaWFibGUgPSAxOworICAgICAgcmV0dXJuOworICAgIH0K KwogICBwb3J0X3N0ciA9IHN0cmNociAobmFtZSwgJzonKTsKICAgaWYgKHBv cnRfc3RyID09IE5VTEwpCiAgICAgewpAQCAtMjcyLDExICsyOTMsMjcgQEAg cmVtb3RlX29wZW4gKGNoYXIgKm5hbWUpCiAgIGNoYXIgKnBvcnRfc3RyOwog CiAgIHBvcnRfc3RyID0gc3RyY2hyIChuYW1lLCAnOicpOworI2lmZGVmIFVT RV9XSU4zMkFQSQogICBpZiAocG9ydF9zdHIgPT0gTlVMTCkKKyAgICBlcnJv ciAoIk9ubHkgPGhvc3Q+Ojxwb3J0PiBpcyBzdXBwb3J0ZWQgb24gdGhpcyBw bGF0Zm9ybS4iKTsKKyNlbmRpZgorCisgIGlmIChzdHJjbXAgKG5hbWUsIFNU RElPX0NPTk5FQ1RJT05fTkFNRSkgPT0gMCkKKyAgICB7CisgICAgICBmcHJp bnRmIChzdGRlcnIsICJSZW1vdGUgZGVidWdnaW5nIHVzaW5nIHN0ZGlvXG4i KTsKKworICAgICAgLyogVXNlIHN0ZGluIGFzIHRoZSBoYW5kbGUgb2YgdGhl IGNvbm5lY3Rpb24uCisJIFdlIG9ubHkgc2VsZWN0IG9uIHJlYWRzLCBmb3Ig ZXhhbXBsZS4gICovCisgICAgICByZW1vdGVfZGVzYyA9IGZpbGVubyAoc3Rk aW4pOworCisgICAgICBlbmFibGVfYXN5bmNfbm90aWZpY2F0aW9uIChyZW1v dGVfZGVzYyk7CisKKyAgICAgIC8qIFJlZ2lzdGVyIHRoZSBldmVudCBsb29w IGhhbmRsZXIuICAqLworICAgICAgYWRkX2ZpbGVfaGFuZGxlciAocmVtb3Rl X2Rlc2MsIGhhbmRsZV9zZXJpYWxfZXZlbnQsIE5VTEwpOworICAgIH0KKyNp Zm5kZWYgVVNFX1dJTjMyQVBJCisgIGVsc2UgaWYgKHBvcnRfc3RyID09IE5V TEwpCiAgICAgewotI2lmZGVmIFVTRV9XSU4zMkFQSQotICAgICAgZXJyb3Ig KCJPbmx5IDxob3N0Pjo8cG9ydD4gaXMgc3VwcG9ydGVkIG9uIHRoaXMgcGxh dGZvcm0uIik7Ci0jZWxzZQogICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsK IAogICAgICAgaWYgKHN0YXQgKG5hbWUsICZzdGF0YnVmKSA9PSAwCkBAIC0z NDEsOCArMzc4LDggQEAgcmVtb3RlX29wZW4gKGNoYXIgKm5hbWUpCiAKICAg ICAgIC8qIFJlZ2lzdGVyIHRoZSBldmVudCBsb29wIGhhbmRsZXIuICAqLwog ICAgICAgYWRkX2ZpbGVfaGFuZGxlciAocmVtb3RlX2Rlc2MsIGhhbmRsZV9z ZXJpYWxfZXZlbnQsIE5VTEwpOwotI2VuZGlmIC8qIFVTRV9XSU4zMkFQSSAq LwogICAgIH0KKyNlbmRpZiAvKiBVU0VfV0lOMzJBUEkgKi8KICAgZWxzZQog ICAgIHsKICAgICAgIGludCBwb3J0OwpAQCAtMzcyLDcgKzQwOSw4IEBAIHJl bW90ZV9jbG9zZSAodm9pZCkKICNpZmRlZiBVU0VfV0lOMzJBUEkKICAgY2xv c2Vzb2NrZXQgKHJlbW90ZV9kZXNjKTsKICNlbHNlCi0gIGNsb3NlIChyZW1v dGVfZGVzYyk7CisgIGlmICghIHJlbW90ZV9jb25uZWN0aW9uX2lzX3N0ZGlv ICgpKQorICAgIGNsb3NlIChyZW1vdGVfZGVzYyk7CiAjZW5kaWYKICAgcmVt b3RlX2Rlc2MgPSBJTlZBTElEX0RFU0NSSVBUT1I7CiAKQEAgLTczMSw2ICs3 NjksMzIgQEAgcmVhZF9wdGlkIChjaGFyICpidWYsIGNoYXIgKipvYnVmKQog ICByZXR1cm4gcHRpZF9idWlsZCAocGlkLCB0aWQsIDApOwogfQogCisvKiBX cml0ZSBDT1VOVCBieXRlcyBpbiBCVUYgdG8gdGhlIGNsaWVudC4KKyAgIFRo ZSByZXN1bHQgaXMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIG9yIC0x IGlmIGVycm9yLgorICAgVGhpcyBtYXkgcmV0dXJuIGxlc3MgdGhhbiBDT1VO VC4gICovCisKK3N0YXRpYyBpbnQKK3dyaXRlX3ByaW0gKGNvbnN0IHZvaWQg KmJ1ZiwgaW50IGNvdW50KQoreworICBpZiAocmVtb3RlX2Nvbm5lY3Rpb25f aXNfc3RkaW8gKCkpCisgICAgcmV0dXJuIHdyaXRlIChmaWxlbm8gKHN0ZG91 dCksIGJ1ZiwgY291bnQpOworICBlbHNlCisgICAgcmV0dXJuIHdyaXRlIChy ZW1vdGVfZGVzYywgYnVmLCBjb3VudCk7Cit9CisKKy8qIFJlYWQgQ09VTlQg Ynl0ZXMgZnJvbSB0aGUgY2xpZW50IGFuZCBzdG9yZSBpbiBCVUYuCisgICBU aGUgcmVzdWx0IGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCBvciAtMSBp ZiBlcnJvci4KKyAgIFRoaXMgbWF5IHJldHVybiBsZXNzIHRoYW4gQ09VTlQu ICAqLworCitzdGF0aWMgaW50CityZWFkX3ByaW0gKHZvaWQgKmJ1ZiwgaW50 IGNvdW50KQoreworICBpZiAocmVtb3RlX2Nvbm5lY3Rpb25faXNfc3RkaW8g KCkpCisgICAgcmV0dXJuIHJlYWQgKGZpbGVubyAoc3RkaW4pLCBidWYsIGNv dW50KTsKKyAgZWxzZQorICAgIHJldHVybiByZWFkIChyZW1vdGVfZGVzYywg YnVmLCBjb3VudCk7Cit9CisKIC8qIFNlbmQgYSBwYWNrZXQgdG8gdGhlIHJl bW90ZSBtYWNoaW5lLCB3aXRoIGVycm9yIGNoZWNraW5nLgogICAgVGhlIGRh dGEgb2YgdGhlIHBhY2tldCBpcyBpbiBCVUYsIGFuZCB0aGUgbGVuZ3RoIG9m IHRoZQogICAgcGFja2V0IGlzIGluIENOVC4gIFJldHVybnMgPj0gMCBvbiBz dWNjZXNzLCAtMSBvdGhlcndpc2UuICAqLwpAQCAtNzY4LDcgKzgzMiw3IEBA IHB1dHBrdF9iaW5hcnlfMSAoY2hhciAqYnVmLCBpbnQgY250LCBpbnQKIAog ICBkbwogICAgIHsKLSAgICAgIGlmICh3cml0ZSAocmVtb3RlX2Rlc2MsIGJ1 ZjIsIHAgLSBidWYyKSAhPSBwIC0gYnVmMikKKyAgICAgIGlmICh3cml0ZV9w cmltIChidWYyLCBwIC0gYnVmMikgIT0gcCAtIGJ1ZjIpCiAJewogCSAgcGVy cm9yICgicHV0cGt0KHdyaXRlKSIpOwogCSAgZnJlZSAoYnVmMik7CkBAIC04 NjMsNyArOTI3LDcgQEAgaW5wdXRfaW50ZXJydXB0IChpbnQgdW51c2VkKQog ICAgICAgaW50IGNjOwogICAgICAgY2hhciBjID0gMDsKIAotICAgICAgY2Mg PSByZWFkIChyZW1vdGVfZGVzYywgJmMsIDEpOworICAgICAgY2MgPSByZWFk X3ByaW0gKCZjLCAxKTsKIAogICAgICAgaWYgKGNjICE9IDEgfHwgYyAhPSAn XDAwMycgfHwgY3VycmVudF9pbmZlcmlvciA9PSBOVUxMKQogCXsKQEAgLTk5 MSw4ICsxMDU1LDcgQEAgcmVhZGNoYXIgKHZvaWQpCiAKICAgaWYgKHJlYWRj aGFyX2J1ZmNudCA9PSAwKQogICAgIHsKLSAgICAgIHJlYWRjaGFyX2J1ZmNu dCA9IHJlYWQgKHJlbW90ZV9kZXNjLCByZWFkY2hhcl9idWYsCi0JCQkgICAg ICBzaXplb2YgKHJlYWRjaGFyX2J1ZikpOworICAgICAgcmVhZGNoYXJfYnVm Y250ID0gcmVhZF9wcmltIChyZWFkY2hhcl9idWYsIHNpemVvZiAocmVhZGNo YXJfYnVmKSk7CiAKICAgICAgIGlmIChyZWFkY2hhcl9idWZjbnQgPD0gMCkK IAl7CkBAIC0xMTE0LDcgKzExNzcsNyBAQCBnZXRwa3QgKGNoYXIgKmJ1ZikK IAogICAgICAgZnByaW50ZiAoc3RkZXJyLCAiQmFkIGNoZWNrc3VtLCBzZW50 c3VtPTB4JXgsIGNzdW09MHgleCwgYnVmPSVzXG4iLAogCSAgICAgICAoYzEg PDwgNCkgKyBjMiwgY3N1bSwgYnVmKTsKLSAgICAgIGlmICh3cml0ZSAocmVt b3RlX2Rlc2MsICItIiwgMSkgIT0gMSkKKyAgICAgIGlmICh3cml0ZV9wcmlt ICgiLSIsIDEpICE9IDEpCiAJcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMTEy Niw3ICsxMTg5LDcgQEAgZ2V0cGt0IChjaGFyICpidWYpCiAJICBmZmx1c2gg KHN0ZGVycik7CiAJfQogCi0gICAgICBpZiAod3JpdGUgKHJlbW90ZV9kZXNj LCAiKyIsIDEpICE9IDEpCisgICAgICBpZiAod3JpdGVfcHJpbSAoIisiLCAx KSAhPSAxKQogCXJldHVybiAtMTsKIAogICAgICAgaWYgKHJlbW90ZV9kZWJ1 ZykKSW5kZXg6IGdkYnNlcnZlci9zZXJ2ZXIuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2dkYnNlcnZlci9z ZXJ2ZXIuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xNTIKZGlmZiAtdSAt cCAtcjEuMTUyIHNlcnZlci5jCi0tLSBnZGJzZXJ2ZXIvc2VydmVyLmMJMiBE ZWMgMjAxMSAyMjoyNjo1MyAtMDAwMAkxLjE1MgorKysgZ2Ric2VydmVyL3Nl cnZlci5jCTE2IERlYyAyMDExIDE4OjMzOjM2IC0wMDAwCkBAIC0yNjA2LDYg KzI2MDYsMTMgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJ fQogCSAgICB9CiAJfQorICAgICAgZWxzZSBpZiAoc3RyY21wICgqbmV4dF9h cmcsICItIikgPT0gMCkKKwl7CisJICAvKiAiLSIgc3BlY2lmaWVzIGEgc3Rk aW8gY29ubmVjdGlvbiBhbmQgaXMgYSBmb3JtIG9mIHBvcnQKKwkgICAgIHNw ZWNpZmljYXRpb24uICAqLworCSAgKm5leHRfYXJnID0gU1RESU9fQ09OTkVD VElPTl9OQU1FOworCSAgYnJlYWs7CisJfQogICAgICAgZWxzZSBpZiAoc3Ry Y21wICgqbmV4dF9hcmcsICItLWRpc2FibGUtcmFuZG9taXphdGlvbiIpID09 IDApCiAJZGlzYWJsZV9yYW5kb21pemF0aW9uID0gMTsKICAgICAgIGVsc2Ug aWYgKHN0cmNtcCAoKm5leHRfYXJnLCAiLS1uby1kaXNhYmxlLXJhbmRvbWl6 YXRpb24iKSA9PSAwKQpAQCAtMjYzNiw2ICsyNjQzLDEyIEBAIG1haW4gKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICBleGl0ICgxKTsKICAgICB9 CiAKKyAgLyogV2UgbmVlZCB0byBrbm93IHdoZXRoZXIgdGhlIHJlbW90ZSBj b25uZWN0aW9uIGlzIHN0ZGlvIGJlZm9yZQorICAgICBzdGFydGluZyB0aGUg aW5mZXJpb3IuICBJbmZlcmlvcnMgY3JlYXRlZCBpbiB0aGlzIHNjZW5hcmlv IGhhdmUKKyAgICAgc3RkaW4sc3Rkb3V0IHJlZGlyZWN0ZWQuICBTbyBkbyB0 aGlzIGhlcmUgYmVmb3JlIHdlIGNhbGwKKyAgICAgc3RhcnRfaW5mZXJpb3Iu ICAqLworICByZW1vdGVfcHJlcGFyZSAocG9ydCk7CisKICAgYmFkX2F0dGFj aCA9IDA7CiAgIHBpZCA9IDA7CiAKQEAgLTI3MjMsOCArMjczNiw2IEBAIG1h aW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgICBleGl0ICgxKTsK ICAgICB9CiAKLSAgcmVtb3RlX3ByZXBhcmUgKHBvcnQpOwotCiAgIHdoaWxl ICgxKQogICAgIHsKICAgICAgIG5vYWNrX21vZGUgPSAwOwpJbmRleDogZ2Ri c2VydmVyL3NlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9nZGIvZ2Ric2VydmVyL3NlcnZlci5oLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjg4CmRpZmYgLXUgLXAgLXIxLjg4IHNlcnZl ci5oCi0tLSBnZGJzZXJ2ZXIvc2VydmVyLmgJMTQgTm92IDIwMTEgMjA6MDc6 MjQgLTAwMDAJMS44OAorKysgZ2Ric2VydmVyL3NlcnZlci5oCTE2IERlYyAy MDExIDE4OjMzOjM2IC0wMDAwCkBAIC0zNDIsNiArMzQyLDkgQEAgZXh0ZXJu IGludCB0cmFuc3BvcnRfaXNfcmVsaWFibGU7CiAKIGludCBnZGJfY29ubmVj dGVkICh2b2lkKTsKIAorI2RlZmluZSBTVERJT19DT05ORUNUSU9OX05BTUUg InN0ZGlvIgoraW50IHJlbW90ZV9jb25uZWN0aW9uX2lzX3N0ZGlvICh2b2lk KTsKKwogcHRpZF90IHJlYWRfcHRpZCAoY2hhciAqYnVmLCBjaGFyICoqb2J1 Zik7CiBjaGFyICp3cml0ZV9wdGlkIChjaGFyICpidWYsIHB0aWRfdCBwdGlk KTsKIApJbmRleDogdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5l eHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1zdXBwb3J0LmV4cCx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMQpkaWZmIC11IC1wIC1yMS4yMSBn ZGJzZXJ2ZXItc3VwcG9ydC5leHAKLS0tIHRlc3RzdWl0ZS9saWIvZ2Ric2Vy dmVyLXN1cHBvcnQuZXhwCTMgRGVjIDIwMTEgMjA6MjA6MjkgLTAwMDAJMS4y MQorKysgdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAJMTYg RGVjIDIwMTEgMTg6MzM6MzYgLTAwMDAKQEAgLTcwLDYgKzcwLDEwIEBAIHBy b2MgZ2RiX3RhcmdldF9jbWQgeyB0YXJnZXRuYW1lIHNlcmlhbHAKIAkJdmVy Ym9zZSAiU2V0IHRhcmdldCB0byAkdGFyZ2V0bmFtZSIKIAkJcmV0dXJuIDAK IAkgICAgfQorCSAgICAtcmUgIlJlbW90ZSBkZWJ1Z2dpbmcgdXNpbmcgc3Rk aW8uKiRnZGJfcHJvbXB0ICQiIHsKKwkJdmVyYm9zZSAiU2V0IHRhcmdldCB0 byAkdGFyZ2V0bmFtZSIKKwkJcmV0dXJuIDAKKwkgICAgfQogCSAgICAtcmUg IlJlbW90ZSB0YXJnZXQgJHRhcmdldG5hbWUgY29ubmVjdGVkIHRvLiokZ2Ri X3Byb21wdCAkIiB7CiAJCXZlcmJvc2UgIlNldCB0YXJnZXQgdG8gJHRhcmdl dG5hbWUiCiAJCXJldHVybiAwCkBAIC0xODMsNiArMTg3LDEyIEBAIHByb2Mg Z2Ric2VydmVyX2Rvd25sb2FkX2N1cnJlbnRfcHJvZyB7IH0KICAgICByZXR1 cm4gJGdkYnNlcnZlcl9zZXJ2ZXJfZXhlYwogfQogCisjIERlZmF1bHQgcm91 dGluZSB0byBjb21wdXRlIHRoZSBhcmd1bWVudCB0byAidGFyZ2V0IHJlbW90 ZSIuCisKK3Byb2MgZ2Ric2VydmVyX2RlZmF1bHRfZ2V0X3JlbW90ZV9hZGRy ZXNzIHsgaG9zdCBwb3J0IH0geworICAgIHJldHVybiAiJGhvc3QkcG9ydCIK K30KKwogIyBTdGFydCBhIGdkYnNlcnZlciBwcm9jZXNzIHdpdGggaW5pdGlh bCBPUFRJT05TIGFuZCB0cmFpbGluZyBBUkdVTUVOVFMuCiAjIFRoZSBwb3J0 IHdpbGwgYmUgZmlsbGVkIGluIGJldHdlZW4gdGhlbSBhdXRvbWF0aWNhbGx5 LgogIwpAQCAtMjA2LDYgKzIxNiwxNSBAQCBwcm9jIGdkYnNlcnZlcl9zdGFy dCB7IG9wdGlvbnMgYXJndW1lbnRzCiAJc2V0IGRlYnVnaG9zdCAibG9jYWxo b3N0OiIKICAgICB9CiAKKyAgICAjIFNvbWUgYm9hcmRzIHVzZSBhIGRpZmZl cmVudCB2YWx1ZSBmb3IgdGhlIHBvcnQgdGhhdCBpcyBwYXNzZWQgdG8KKyAg ICAjIGdkYnNlcnZlciBhbmQgdGhlIHBvcnQgdGhhdCBpcyBwYXNzZWQgdG8g dGhlICJ0YXJnZXQgcmVtb3RlIiBjb21tYW5kLgorICAgICMgT25lIGV4YW1w bGUgaXMgdGhlIHN0ZGlvIGdkYnNlcnZlciBzdXBwb3J0LgorICAgIGlmIFt0 YXJnZXRfaW5mbyBleGlzdHMgZ2RiLGdldF9yZW1vdGVfYWRkcmVzc10gewor CXNldCBnZXRfcmVtb3RlX2FkZHJlc3MgW3RhcmdldF9pbmZvIGdkYixnZXRf cmVtb3RlX2FkZHJlc3NdCisgICAgfSBlbHNlIHsKKwlzZXQgZ2V0X3JlbW90 ZV9hZGRyZXNzIGdkYnNlcnZlcl9kZWZhdWx0X2dldF9yZW1vdGVfYWRkcmVz cworICAgIH0KKwogICAgICMgRXh0cmFjdCB0aGUgcHJvdG9jb2wKICAgICBp ZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYl9wcm90b2NvbF0gewogCXNldCBw cm90b2NvbCBbdGFyZ2V0X2luZm8gZ2RiX3Byb3RvY29sXQpAQCAtMjE3LDkg KzIzNiw2IEBAIHByb2MgZ2Ric2VydmVyX3N0YXJ0IHsgb3B0aW9ucyBhcmd1 bWVudHMKIAogICAgICMgTG9vcCB0aWxsIHdlIGZpbmQgYSBmcmVlIHBvcnQu CiAgICAgd2hpbGUgMSB7Ci0JIyBFeHBvcnQgdGhlIGhvc3Q6cG9ydCBwYWly LgotCXNldCBnZGJwb3J0ICRkZWJ1Z2hvc3QkcG9ydG51bQotCiAJIyBGaXJl IG9mZiB0aGUgZGVidWcgYWdlbnQuCiAJc2V0IGdkYnNlcnZlcl9jb21tYW5k ICIkZ2Ric2VydmVyIgogCkBAIC0yMzUsOSArMjUxLDkgQEAgcHJvYyBnZGJz ZXJ2ZXJfc3RhcnQgeyBvcHRpb25zIGFyZ3VtZW50cwogCWlmIHsgJG9wdGlv bnMgIT0gIiIgfSB7CiAJICAgIGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAi ICRvcHRpb25zIgogCX0KLQotCWFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAi IDokcG9ydG51bSIKLQorCWlmIHsgJHBvcnRudW0gIT0gIiIgfSB7CisJICAg IGFwcGVuZCBnZGJzZXJ2ZXJfY29tbWFuZCAiIDokcG9ydG51bSIKKwl9CiAJ aWYgeyAkYXJndW1lbnRzICE9ICIiIH0gewogCSAgICBhcHBlbmQgZ2Ric2Vy dmVyX2NvbW1hbmQgIiAkYXJndW1lbnRzIgogCX0KQEAgLTI3NSw3ICsyOTEs NyBAQCBwcm9jIGdkYnNlcnZlcl9zdGFydCB7IG9wdGlvbnMgYXJndW1lbnRz CiAJfQogICAgIH0KIAotICAgIHJldHVybiBbbGlzdCAkcHJvdG9jb2wgJGdk YnBvcnRdCisgICAgcmV0dXJuIFtsaXN0ICRwcm90b2NvbCBbJGdldF9yZW1v dGVfYWRkcmVzcyAkZGVidWdob3N0ICRwb3J0bnVtXV0KIH0KIAogIyBTdGFy dCBhIGdkYnNlcnZlciBwcm9jZXNzIHJ1bm5pbmcgU0VSVkVSX0VYRUMsIGFu ZCBjb25uZWN0IEdEQgo= --f46d043891eddc2b2d04b43a5333--