From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6101 invoked by alias); 26 Aug 2011 11:43:51 -0000 Received: (qmail 6088 invoked by uid 22791); 26 Aug 2011 11:43:47 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ,TW_TD,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-wy0-f169.google.com (HELO mail-wy0-f169.google.com) (74.125.82.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 26 Aug 2011 11:43:30 +0000 Received: by wyi11 with SMTP id 11so2725615wyi.0 for ; Fri, 26 Aug 2011 04:43:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.216.134.83 with SMTP id r61mr1744037wei.22.1314359008614; Fri, 26 Aug 2011 04:43:28 -0700 (PDT) Received: by 10.216.168.79 with HTTP; Fri, 26 Aug 2011 04:43:28 -0700 (PDT) Date: Fri, 26 Aug 2011 11:43:00 -0000 Message-ID: Subject: [PATCH][TEST-CASE][DOC] Implementation of pipe to pass GDB's command output to the shell. From: Abhijit Halder To: gdb-patches@sourceware.org Cc: Eli Zaretskii , Sergio Durigan Junior , Jan Kratochvil , Tom Tromey , Pedro Alves Content-Type: multipart/mixed; boundary=0016e6d99afed0d9d904ab670de0 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-08/txt/msg00483.txt.bz2 --0016e6d99afed0d9d904ab670de0 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 189 Hi, I am creating this new thread as the earlier threads went very long. This patch contains code change, test-cases and documentation as well. Please review this. Thanks, Abhijit Halder --0016e6d99afed0d9d904ab670de0 Content-Type: text/x-patch; charset=US-ASCII; name="gdb-pipe-command.patch" Content-Disposition: attachment; filename="gdb-pipe-command.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_grt3ejxz0 Content-length: 17589 ZGlmZiAtcnVwIHNyYy9nZGIvQ2hhbmdlTG9nIGRzdC9nZGIvQ2hhbmdlTG9n Ci0tLSBzcmMvZ2RiL0NoYW5nZUxvZwkyMDExLTA4LTE0IDA3OjI3OjUxLjUw MjIzMzAwNCArMDUzMAorKysgZHN0L2dkYi9DaGFuZ2VMb2cJMjAxMS0wOC0y NCAyMjoxNjo0NS4zMjYxNDYwMzggKzA1MzAKQEAgLTEsMyArMSwxMyBAQAor MjAxMS0wOC0yOSAgQWJoaWppdCBIYWxkZXIgIDxhYmhpaml0LmsuaGFsZGVy QGdtYWlsLmNvbT4KKworCUltcGxlbWVudGF0aW9uIG9mIHBpcGUgdG8gbWFr ZSBJL08gY29tbXVuaWNhdGlvbgorCWJldHdlZW4gZ2RiIGFuZCBzaGVsbC4K KworCSogTkVXUzogQWRkIG5ld3MgaXRlbSBmb3IgdGhlIG5ldyBjb21tYW5k ICJwaXBlIi4KKwkqIHBpcGUuYzogTmV3IGZpbGUuCisJKiBNYWtlZmlsZS5p biAoU0ZJTEVTKTogQWRkIHBpcGUuYy4KKwkoQ09NTU9OX09CUyk6IEFkZCBw aXBlLm8uCisKIDIwMTEtMDgtMTIgIERvdWcgRXZhbnMgIDxkamVAZ29vZ2xl LmNvbT4KIAogCSogTkVXUzogTWVudGlvbiBuZXcgInR5cGUiIGF0dHJpYnV0 ZSBvZiBweXRob24gZ2RiLlN5bWJvbCBvYmplY3RzLgpkaWZmIC1ydXAgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nIGRzdC9nZGIvZG9jL0NoYW5nZUxvZwotLS0g c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTEtMDgtMTQgMDc6Mjc6NTMuMTU4 MjMzMDAxICswNTMwCisrKyBkc3QvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMS0w OC0yNCAyMjozNzowMS43MjIxNDYwNjggKzA1MzAKQEAgLTEsMyArMSw3IEBA CisyMDExLTA4LTI5ICBBYmhpaml0IEhhbGRlciAgPGFiaGlqaXQuay5oYWxk ZXJAZ21haWwuY29tPgorCisJKiBnZGIudGV4aW5mbyAocGlwZSBjb21tYW5k KTogTmV3IG5vZGUuCisKIDIwMTEtMDgtMTIgIERvdWcgRXZhbnMgIDxkamVA Z29vZ2xlLmNvbT4KIAogCSogZ2RiLnRleGluZm8gKFN5bWJvbHMgSW4gUHl0 aG9uKTogRG9jdW1lbnQgc3ltYm9sLnR5cGUuCmRpZmYgLXJ1cCBzcmMvZ2Ri L2RvYy9nZGIudGV4aW5mbyBkc3QvZ2RiL2RvYy9nZGIudGV4aW5mbwotLS0g c3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wOC0xNCAwNzoyNzo1My4y NDIyMzMwMDEgKzA1MzAKKysrIGRzdC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTEtMDgtMjUgMDA6MDI6NDIuMTY2MTQ1OTkwICswNTMwCkBAIC0xNTYsNiAr MTU2LDcgQEAgc29mdHdhcmUgaW4gZ2VuZXJhbC4gIFdlIHdpbGwgbWlzcyBo aW0uCiAqIEdEQi9NSTo6ICAgICAgICAgICAgICAgICAgICAgIEB2YWx1ZXtH REJOfSdzIE1hY2hpbmUgSW50ZXJmYWNlLgogKiBBbm5vdGF0aW9uczo6ICAg ICAgICAgICAgICAgICBAdmFsdWV7R0RCTn0ncyBhbm5vdGF0aW9uIGludGVy ZmFjZS4KICogSklUIEludGVyZmFjZTo6ICAgICAgICAgICAgICAgVXNpbmcg dGhlIEpJVCBkZWJ1Z2dpbmcgaW50ZXJmYWNlLgorKiBPdXRwdXQgUmVkaXJl Y3Rpb246OiAgICAgICAgICBSZWRpcmVjdGluZyBAdmFsdWV7R0RCTn0ncyBj b21tYW5kIG91dHB1dCB0byBzaGVsbAogCiAqIEdEQiBCdWdzOjogICAgICAg ICAgICAgICAgICAgIFJlcG9ydGluZyBidWdzIGluIEB2YWx1ZXtHREJOfQog CkBAIC0zMDk1OCw2ICszMDk1OSwyNCBAQCBTZXQgQGNvZGV7YWN0aW9uX2Zs YWd9IHRvIEBjb2Rle0pJVF9VTlJFCiBJZiB0aGUgSklUIGZyZWVzIG9yIHJl Y29tcGlsZXMgY29kZSB3aXRob3V0IHVucmVnaXN0ZXJpbmcgaXQsIHRoZW4g QHZhbHVle0dEQk59CiBhbmQgdGhlIEpJVCB3aWxsIGxlYWsgdGhlIG1lbW9y eSB1c2VkIGZvciB0aGUgYXNzb2NpYXRlZCBzeW1ib2wgZmlsZXMuCiAKK0Bu b2RlIE91dHB1dCBSZWRpcmVjdGlvbgorQGNoYXB0ZXIgUmVkaXJlY3Rpbmcg QHZhbHVle0dEQk59J3MgQ29tbWFuZCBPdXRwdXQgdG8gdGhlIFNoZWxsCisK K0B2YWx1ZXtHREJOfSdzIGNvbW1hbmQgb3V0cHV0IGNhbiBiZSByZWRpcmVj dGVkIHRvIHRoZSBzaGVsbCB1c2luZyBAY29kZXtwaXBlfQorY29tbWFuZCBm b3IgZnVydGhlciBwcm9jZXNzaW5nLiAgVGhpcyBlbmFibGVzIGlubGluZSBw cm9jZXNzaW5nIG9mIHRoZSBvdXRwdXQgb2YKK2EgcGFydGljdWxhciBAdmFs dWV7R0RCTn0gY29tbWFuZCB3aXRob3V0IGV4cGxpY2l0bHkgaW52b2tpbmcg dGhlIEBjb2Rle3NoZWxsfQorY29tbWFuZC4gIEZ1cnRoZXIsIHRoZXJlIGlz IG5vIG5lZWQgdG8gc3RvcmUgdGhlIG91dHB1dCBvZiB0aGUgQHZhbHVle0dE Qk59Citjb21tYW5kIGluIGFueSBmaWxlIHRvIHBhc3MgaXQgdG8gdGhlIHNo ZWxsLiAgRXZlbiBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK0Bjb2Rl e1NIRUxMfSBpcyBzZXQsIHRoZSBkZWZhdWx0IHNoZWxsIChAZmlsZXsvYmlu L3NofSBvbiBVbml4IHN5c3RlbXMsCitAZmlsZXtDT01NQU5ELkNPTX0gb24g TVMtRE9TLCBldGMuKSBpcyB1c2VkLiAgVGhlIEBjb2Rle3BpcGV9IGNvbW1h bmQgZXhwZWN0cworaW4gaXRzIGFyZ3VtZW50IGEgZGVsaW1pdGVyIHN0cmlu ZyAod2l0aG91dCBoYXZpbmcgYW55IHdoaXRlc3BhY2UpLCBmb2xsb3dlZCBi eQorYSBAdmFsdWV7R0RCTn0gY29tbWFuZCwgZm9sbG93ZWQgYnkgdGhlIHNh bWUgZGVsaW1pdGVyIHN0cmluZyBhbmQgZmluYWxseSBhCitzaGVsbCBjb21t YW5kLiAgVGhlIGRlbGltaXRlciBzaG91bGQgbm90IGNvbnRhaW4gYW55IGxl YWRpbmcgYC0nLgorCitAc21hbGxleGFtcGxlCisoQHZhbHVle0dEQlB9KSBA YntwaXBlIHwgdGhyZWFkIGFwcGx5IGFsbCBidCB8IGNhdCA+Li9hbmFseXpl X3RocmVhZHMubG9nfSAKK0BlbmQgc21hbGxleGFtcGxlCisKIEBub2RlIEdE QiBCdWdzCiBAY2hhcHRlciBSZXBvcnRpbmcgQnVncyBpbiBAdmFsdWV7R0RC Tn0KIEBjaW5kZXggYnVncyBpbiBAdmFsdWV7R0RCTn0KZGlmZiAtcnVwIHNy Yy9nZGIvTWFrZWZpbGUuaW4gZHN0L2dkYi9NYWtlZmlsZS5pbgotLS0gc3Jj L2dkYi9NYWtlZmlsZS5pbgkyMDExLTA3LTI3IDIzOjU1OjI2LjAwMDAwMDAw MCArMDUzMAorKysgZHN0L2dkYi9NYWtlZmlsZS5pbgkyMDExLTA4LTE0IDA3 OjMxOjE1LjgwMjIzMzAwNCArMDUzMApAQCAtNzEzLDcgKzcxMyw3IEBAIFNG SUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHIKIAlvYmpj LWV4cC55IG9iamMtbGFuZy5jIFwKIAlvYmpmaWxlcy5jIG9zYWJpLmMgb2Jz ZXJ2ZXIuYyBvc2RhdGEuYyBcCiAJb3BlbmNsLWxhbmcuYyBcCi0JcC1leHAu eSBwLWxhbmcuYyBwLXR5cGVwcmludC5jIHAtdmFscHJpbnQuYyBwYXJzZS5j IHByaW50Y21kLmMgXAorCXAtZXhwLnkgcC1sYW5nLmMgcC10eXBlcHJpbnQu YyBwLXZhbHByaW50LmMgcGFyc2UuYyBwaXBlLmMgcHJpbnRjbWQuYyBcCiAJ cHJvYy1zZXJ2aWNlLmxpc3QgcHJvZ3NwYWNlLmMgXAogCXByb2xvZ3VlLXZh bHVlLmMgcHN5bXRhYi5jIFwKIAlyZWdjYWNoZS5jIHJlZ2dyb3Vwcy5jIHJl bW90ZS5jIHJlbW90ZS1maWxlaW8uYyByZXZlcnNlLmMgXApAQCAtODcwLDcg Kzg3MCw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVTKSAkKENPTkZJR19P QlMpICQKIAltaS1jb21tb24ubyBcCiAJZXZlbnQtbG9vcC5vIGV2ZW50LXRv cC5vIGluZi1sb29wLm8gY29tcGxldGVyLm8gXAogCWdkYmFyY2gubyBhcmNo LXV0aWxzLm8gZ2RidHlwZXMubyBvc2FiaS5vIGNvcHlpbmcubyBcCi0JbWVt YXR0ci5vIG1lbS1icmVhay5vIHRhcmdldC5vIHBhcnNlLm8gbGFuZ3VhZ2Uu byBidWlsZHN5bS5vIFwKKwltZW1hdHRyLm8gbWVtLWJyZWFrLm8gdGFyZ2V0 Lm8gcGFyc2UubyBwaXBlLm8gbGFuZ3VhZ2UubyBidWlsZHN5bS5vIFwKIAlm aW5kY21kLm8gXAogCXN0ZC1yZWdzLm8gXAogCXNpZ25hbHMubyBcCmRpZmYg LXJ1cCBzcmMvZ2RiL05FV1MgZHN0L2dkYi9ORVdTCi0tLSBzcmMvZ2RiL05F V1MJMjAxMS0wOC0xNCAwNzoyNzo1MS41ODIyMzMwMDAgKzA1MzAKKysrIGRz dC9nZGIvTkVXUwkyMDExLTA4LTE0IDA3OjUwOjM4LjU2MjIzNDQ5OCArMDUz MApAQCAtNjQsNiArNjQsOSBAQAogCiAqIE5ldyBjb21tYW5kcyAiaW5mbyBt YWNyb3MiLCBhbmQgImluZm8gZGVmaW5pdGlvbnMiIGhhdmUgYmVlbiBhZGRl ZC4KIAorKiBOZXcgY29tbWFuZCAicGlwZSIgaGFzIGJlZW4gYWRkZWQgdG8g bWFrZSBHREIgY29tbWFuZCBvdXRwdXQgYXZhaWxhYmxlIHRvIHRoZQorICBz aGVsbCBmb3IgcHJvY2Vzc2luZy4gCisKICogQ2hhbmdlZCBjb21tYW5kcwog CiB3YXRjaCBFWFBSRVNTSU9OIG1hc2sgTUFTS19WQUxVRQpkaWZmIC1ydXAg c3JjL2dkYi9waXBlLmMgZHN0L2dkYi9waXBlLmMKLS0tIHNyYy9nZGIvcGlw ZS5jCTIwMTEtMDctMjkgMTU6MTU6MjYuMDc4MDQ4NTE3ICswNTMwCisrKyBk c3QvZ2RiL3BpcGUuYwkyMDExLTA4LTIzIDIyOjM4OjUzLjMyMDM2NDk0NyAr MDUzMApAQCAtMCwwICsxLDIyNyBAQAorLyogRXZlcnl0aGluZyBhYm91dCBw aXBlLCBmb3IgR0RCLgorCisgICBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdEQi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKwor I2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1 ZGUgImdkYl9zdHJpbmcuaCIKKyNpbmNsdWRlICJ1aS1maWxlLmgiCisjaW5j bHVkZSAidWktb3V0LmgiCisjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgor I2luY2x1ZGUgImdkYmNtZC5oIgorI2luY2x1ZGUgImxpYmliZXJ0eS5oIgor I2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKworI2lmIGRlZmluZWQoX19NSU5H VzMyX18pCisjIGRlZmluZSBTSEVMTCAiY21kLmV4ZSIKKyMgZGVmaW5lIE9Q VElPTl9UT19TSEVMTCAiL2MiCisjZWxzZQorIyBkZWZpbmUgU0hFTEwgIi9i aW4vc2giCisjIGRlZmluZSBPUFRJT05fVE9fU0hFTEwgIi1jIgorI2VuZGlm CisKKy8qIFN0cnVjdHVyZSB0byBlbmNhcHN1bGF0ZSBhbGwgZW50aXRpZXMg YXNzb2NpYXRlZCB3aXRoIHBpcGUuICAqLworCitzdHJ1Y3QgcGlwZV9vYmoK K3sKKyAgLyogVGhlIGRlbGltaXRlciB0byBzZXBhcmF0ZSBvdXQgZ2RiLWNv bW1hbmQgYW5kIHNoZWxsLWNvbW1hbmQuICBUaGlzIGNhbiBiZQorICAgICBh bnkgYXJiaXRyYXJ5IHN0cmluZyB3aXRob3V0IGNvbnRhaW5pbmcgYW55IHdo aXRlc3BhY2UuICBUaGVyZSBzaG91bGQgbm90CisgICAgIGJlIGFueSBsZWFk aW5nICctJyBpbiB0aGUgZGVsaW1pdGVyLiAgKi8KKyAgY2hhciAqZGxpbTsK KworICAvKiBUaGUgZ2RiLWNvbW1hbmQuICAqLworICBjaGFyICpnZGJfY21k OworCisgIC8qIFRoZSBzaGVsbC1jb21tYW5kLiAgKi8KKyAgY2hhciAqc2hl bGxfY21kOworCisgIC8qIFRoZSBnZGItc2lkZSBzdHJlYW0gcG9pbnRlciB0 byB0aGUgcGlwZS4gICovCisgIEZJTEUgKmhhbmRsZTsKKworICAvKiBUaGUg cGV4IG9iamVjdCB1c2VkIHRvIGNyZWF0ZSBwaXBlbGluZSBiZXR3ZWVuIGdk YiBhbmQgc2hlbGwuICAqLworICBzdHJ1Y3QgcGV4X29iaiAqcGV4OworfTsK KworLyogRGVzdHJ1Y3QgcGlwZSBvYmplY3QgcmVmZXJlbmNlZCBieSBBUkcu ICAqLworCitzdGF0aWMgdm9pZAorZGVzdHJ1Y3RfcGlwZSAodm9pZCAqYXJn KQoreworICBzdHJ1Y3QgcGlwZV9vYmogKnBpcGUgPSAoc3RydWN0IHBpcGVf b2JqICopIGFyZzsKKworICBpZiAocGlwZS0+aGFuZGxlICE9IE5VTEwpCisg ICAgZmNsb3NlIChwaXBlLT5oYW5kbGUpOworCisgIGlmIChwaXBlLT5wZXgg IT0gTlVMTCkKKyAgICB7CisgICAgICBpbnQgc3RhdHVzOworCisgICAgICAv KiBXYWl0IHRpbGwgdGhlIHByb2Nlc3Mgb24gdGhlIG90aGVyIHNpZGUgb2Yg dGhlIHBpcGUgY29tcGxldGVzIGl0cworCSBqb2IgYmVmb3JlIGNsb3Npbmcg aXRzIGZpbGUgZGVzY3JpcHRvcnMuICAqLworICAgICAgcGV4X2dldF9zdGF0 dXMgKHBpcGUtPnBleCwgMSwgJnN0YXR1cyk7CisKKyAgICAgIGlmICghV0lG RVhJVEVEIChzdGF0dXMpKQorCXdhcm5pbmcgKF8oIkV4ZWN1dGlvbiBvZiBz aGVsbC1jb21tYW5kIGAlcycgbWF5IG5vdCBiZSBjb21wbGV0ZWQiKSwKKwkJ IHBpcGUtPnNoZWxsX2NtZCk7CisKKyAgICAgIHBleF9mcmVlIChwaXBlLT5w ZXgpOworICAgIH0KKworICB4ZnJlZSAocGlwZS0+ZGxpbSk7CisgIHhmcmVl IChwaXBlKTsKK30KKworLyogQ29uc3RydWN0IGEgcGlwZSBvYmplY3QgYnkg cGFyc2luZyBhcmd1bWVudCBBUkcgdG8gdGhlIHBpcGUgY29tbWFuZC4gICov CisKK3N0YXRpYyBzdHJ1Y3QgcGlwZV9vYmogKgorY29uc3RydWN0X3BpcGUg KGNvbnN0IGNoYXIgKmFyZykKK3sKKyAgY2hhciAqcCwgKnQ7CisgIHN0cnVj dCBwaXBlX29iaiAqcGlwZSA9IE5VTEw7CisgIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwOworCisgIGlmIChhcmcgPT0gTlVMTCkKKyAgICBlcnJvciAoXygi Tm8gYXJndW1lbnQgaXMgc3BlY2lmaWVkIikpOworCisgIHBpcGUgPSBYQ05F VyAoc3RydWN0IHBpcGVfb2JqKTsKKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51 cCAoZGVzdHJ1Y3RfcGlwZSwgcGlwZSk7CisKKyAgcCA9IHhzdHJkdXAgKGFy Zyk7CisgIHBpcGUtPmRsaW0gPSBwOworCisgIGlmICgqcGlwZS0+ZGxpbSA9 PSAnLScpCisgICAgZXJyb3IgKF8oIkRlbGltaXRlciBwYXR0ZXJuIHNob3Vs ZCBub3Qgc3RhcnQgd2l0aCAnLSciKSk7CisKKyAgdCA9IHNraXBfdG9fc3Bh Y2UgKHApOworICBwID0gc2tpcF9zcGFjZXMgKHQpOworCisgIGlmICgqcCA9 PSAnXDAnKQorICAgIGVycm9yIChfKCJObyBnZGItY29tbWFuZCBpcyBzcGVj aWZpZWQiKSk7CisKKyAgKnQgPSAnXDAnOworICBwaXBlLT5nZGJfY21kID0g cDsKKworICBmb3IgKDs7KQorICAgIHsKKyAgICAgIHQgPSBza2lwX3RvX3Nw YWNlIChwKTsKKworICAgICAgaWYgKCp0ID09ICdcMCcpCisJZXJyb3IgKF8o Ik5vIHNoZWxsLWNvbW1hbmQgaXMgc3BlY2lmaWVkIikpOworCisgICAgICAv KiBDaGVjayB3aGV0aGVyIHRoZSB0b2tlbiBzZXBhcmF0ZWQgYnkgd2hpdGVz cGFjZSBtYXRjaGVzIHdpdGgKKwkgZGVsaW1pdGVyLiAgKi8gCisgICAgICBp ZiAobWVtY21wIChwLCBwaXBlLT5kbGltLCAodCAtIHApKSA9PSAwCisJICAm JiBwaXBlLT5kbGltW3QgLSBwXSA9PSAnXDAnKQorCXsKKwkgICpwID0gJ1ww JzsKKwkgIHBpcGUtPnNoZWxsX2NtZCA9IHNraXBfc3BhY2VzICh0KTsKKwkg IGJyZWFrOworCX0KKworICAgICAgIHAgPSBza2lwX3NwYWNlcyAodCk7Cisg ICAgfQorCisgIGRpc2NhcmRfY2xlYW51cHMgKGNsZWFudXApOworICByZXR1 cm4gcGlwZTsKK30KKworLyogUnVuIGV4ZWN1dGVfY29tbWFuZCBmb3IgUElQ RSBhbmQgRlJPTV9UVFkuICBXcml0ZSBvdXRwdXQgdG8gdGhlIHBpcGUsIGRv IG5vdAorICAgZGlzcGxheSBpdCB0byB0aGUgc2NyZWVuLiAgKi8KKworc3Rh dGljIHZvaWQKK2V4ZWN1dGVfY29tbWFuZF90b19waXBlIChzdHJ1Y3QgcGlw ZV9vYmogKnBpcGUsIGludCBmcm9tX3R0eSkKK3sKKyAgY2hhciAqYXJndls0 XTsKKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisgIHN0cnVjdCB1aV9m aWxlICpmcDsKKyAgaW50IHN0YXR1czsKKyAgY29uc3QgY2hhciAqZXJybXNn OworICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHRpb247 CisKKyAgYXJndlswXSA9IFNIRUxMOworICBhcmd2WzFdID0gT1BUSU9OX1RP X1NIRUxMOworICBhcmd2WzJdID0gcGlwZS0+c2hlbGxfY21kOworICBhcmd2 WzNdID0gTlVMTDsKKworICBwaXBlLT5wZXggPSBwZXhfaW5pdCAoUEVYX1VT RV9QSVBFUywgYXJndlswXSwgTlVMTCk7CisgIHBpcGUtPmhhbmRsZSA9IHBl eF9pbnB1dF9waXBlIChwaXBlLT5wZXgsIDApOworCisgIGlmIChwaXBlLT5o YW5kbGUgPT0gTlVMTCkKKyAgICBlcnJvciAoXygiRmFpbGVkIHRvIGNyZWF0 ZSBwaXBlIikpOworCisgIGVycm1zZyA9IHBleF9ydW4gKHBpcGUtPnBleCwg UEVYX0xBU1QsIGFyZ3ZbMF0sIGFyZ3YsIE5VTEwsIE5VTEwsICZzdGF0dXMp OworCisgIGlmIChlcnJtc2cgIT0gTlVMTCkKKyAgICBlcnJvciAoXygiRmFp bGVkIHRvIGV4ZWN1dGUgc2hlbGwtY29tbWFuZCBgJXMnIG9uIHBpcGU6ICVz ICVzIiksCisJICAgcGlwZS0+c2hlbGxfY21kLCBlcnJtc2csIHNhZmVfc3Ry ZXJyb3IgKHN0YXR1cykpOworCisgIC8qIEdEQl9TVERPVVQgc2hvdWxkIGJl IGJldHRlciBhbHJlYWR5IHJlc3RvcmVkIGR1cmluZyB0aGVzZQorICAgICBy ZXN0b3JhdGlvbiBjYWxsYmFja3MuICAqLworICBjbGVhbnVwID0gc2V0X2Jh dGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAo KTsKKyAgZnAgPSBzdGRpb19maWxlb3BlbiAocGlwZS0+aGFuZGxlKTsKKyAg bWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRlIChmcCk7CisgIG1ha2VfY2xl YW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3Rkb3V0KTsKKyAgbWFrZV9j bGVhbnVwX3Jlc3RvcmVfdWlfZmlsZSAoJmdkYl9zdGRlcnIpOworICBtYWtl X2NsZWFudXBfcmVzdG9yZV91aV9maWxlICgmZ2RiX3N0ZGxvZyk7CisgIG1h a2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3RkdGFyZyk7Cisg IG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3RkdGFyZ2Vy cik7CisKKyAgaWYgKHVpX291dF9yZWRpcmVjdCAoY3VycmVudF91aW91dCwg ZnApIDwgMCkKKyAgICB3YXJuaW5nIChfKCJDdXJyZW50IG91dHB1dCBwcm90 b2NvbCBkb2VzIG5vdCBzdXBwb3J0IHJlZGlyZWN0aW9uIikpOworICBlbHNl IAorICAgIG1ha2VfY2xlYW51cF91aV9vdXRfcmVkaXJlY3RfcG9wIChjdXJy ZW50X3Vpb3V0KTsKKworICBnZGJfc3Rkb3V0ID0gZnA7CisgIGdkYl9zdGRl cnIgPSBmcDsKKyAgZ2RiX3N0ZGxvZyA9IGZwOworICBnZGJfc3RkdGFyZyA9 IGZwOworICBnZGJfc3RkdGFyZ2VyciA9IGZwOworCisgIFRSWV9DQVRDSCAo ZXhjZXB0aW9uLCBSRVRVUk5fTUFTS19FUlJPUikKKyAgICB7CisgICAgICBl eGVjdXRlX2NvbW1hbmQgKHBpcGUtPmdkYl9jbWQsIGZyb21fdHR5KTsKKyAg ICB9CisKKyAgaWYgKGV4Y2VwdGlvbi5yZWFzb24gPCAwKQorICAgIGV4Y2Vw dGlvbl9wcmludCAoZ2RiX3N0ZGVyciwgZXhjZXB0aW9uKTsKKworICBkb19j bGVhbnVwcyAoY2xlYW51cCk7Cit9CisKKy8qIEV4ZWN1dGUgdGhlIHBpcGUg Y29tbWFuZCB3aXRoIGFyZ3VtZW50IEFSRyBhbmQgRlJPTV9UVFkuICAqLwor CitzdGF0aWMgdm9pZAorcGlwZV9jb21tYW5kIChjaGFyICphcmcsIGludCBm cm9tX3R0eSkKK3sKKyAgc3RydWN0IHBpcGVfb2JqICpwaXBlID0gY29uc3Ry dWN0X3BpcGUgKGFyZyk7CisgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwID0g bWFrZV9jbGVhbnVwIChkZXN0cnVjdF9waXBlLCBwaXBlKTsKKworICBleGVj dXRlX2NvbW1hbmRfdG9fcGlwZSAocGlwZSwgZnJvbV90dHkpOworICBkb19j bGVhbnVwcyAoY2xlYW51cCk7Cit9CisKKy8qIE1vZHVsZSBpbml0aWFsaXph dGlvbi4gICovCisKK3ZvaWQKK19pbml0aWFsaXplX3BpcGUgKHZvaWQpCit7 CisgIGFkZF9jbWQgKCJwaXBlIiwgbm9fY2xhc3MsIHBpcGVfY29tbWFuZCwg XygiXAorQ3JlYXRlIHBpcGUgdG8gcGFzcyBnZGItY29tbWFuZCBvdXRwdXQg dG8gdGhlIHNoZWxsIGZvciBwcm9jZXNzaW5nLlxuXAorQXJndW1lbnRzIGFy ZSBhIGRlbGltaXRlciwgZm9sbG93ZWQgYnkgYSBnZGItY29tbWFuZCwgdGhl biB0aGUgc2FtZSBkZWxpbWl0ZXIgXAorYWdhaW4gYW5kIGZpbmFsbHkgYSBz aGVsbC1jb21tYW5kLiAgVGhlIGRlbGltaXRlciBjYW4gYmUgYW55IHN0cmlu ZyBcCitjb250YWluaW5nIG5vIHdoaXRlc3BhY2UgYW5kIHNob3VsZCBub3Qg aGF2ZSBhbnkgbGVhZGluZyAnLScuIiksCisJICAgJmNtZGxpc3QpOworfQpk aWZmIC1ydXAgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nIGRzdC9nZGIv dGVzdHN1aXRlL0NoYW5nZUxvZwotLS0gc3JjL2dkYi90ZXN0c3VpdGUvQ2hh bmdlTG9nCTIwMTEtMDgtMTQgMDc6Mjc6NTMuNzA2MjMyOTk5ICswNTMwCisr KyBkc3QvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMS0wOC0yNCAyMjoy NTo0Ny42NzAxNDU5OTYgKzA1MzAKQEAgLTEsMyArMSw3IEBACisyMDExLTA4 LTI5ICBBYmhpaml0IEhhbGRlciAgPGFiaGlqaXQuay5oYWxkZXJAZ21haWwu Y29tPgorCisJKiBnZGIuYmFzZS9waXBlLmV4cDogTmV3IGZpbGUuCisKIDIw MTEtMDgtMTIgIERvdWcgRXZhbnMgIDxkamVAZ29vZ2xlLmNvbT4KIAogCSog Z2RiLnB5dGhvbi9weS1zeW1ib2wuZXhwOiBBZGQgdGVzdCBmb3Igc3ltYm9s LnR5cGUuCmRpZmYgLXJ1cCBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9w aXBlLmV4cCBkc3QvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waXBlLmV4cAot LS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcGlwZS5leHAJMjAxMS0w OC0xNiAyMjozNzo0NS45NjkzNTExMTkgKzA1MzAKKysrIGRzdC9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3BpcGUuZXhwCTIwMTEtMDgtMjMgMjE6NTE6MjAu NDA4MzY3MzkxICswNTMwCkBAIC0wLDAgKzEsNTIgQEAKKyMgQ29weXJpZ2h0 IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisKKyMKKyMgdGVzdCBnZGIgcGlwZSBjb21tYW5kcworIwor CitzZXQgdGVzdCAicGlwZSIKK3NldCB0ZW1wZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdH0ueAorCitnZGJfZXhpdAorZ2RiX3N0YXJ0CisKK2dk Yl90ZXN0ICJwaXBlIiAiTm8gYXJndW1lbnQgaXMgc3BlY2lmaWVkIgorZ2Ri X3Rlc3QgInBpcGUgfCIgIk5vIGdkYi1jb21tYW5kIGlzIHNwZWNpZmllZCIK K2dkYl90ZXN0ICJwaXBlIC14IiAiRGVsaW1pdGVyIHBhdHRlcm4gc2hvdWxk IG5vdCBzdGFydCB3aXRoICctJyIKK2dkYl90ZXN0ICJwaXBlIHwgcHJpbnQg J3gnIiAiTm8gc2hlbGwtY29tbWFuZCBpcyBzcGVjaWZpZWQiCitnZGJfdGVz dCAicGlwZSB8IHByaW50ICd4JyB8PCBjYXQiICJObyBzaGVsbC1jb21tYW5k IGlzIHNwZWNpZmllZCIKK2dkYl90ZXN0ICJwaXBlIHw8IHByaW50ICd4JyB8 IGNhdCIgIk5vIHNoZWxsLWNvbW1hbmQgaXMgc3BlY2lmaWVkIgorZ2RiX3Rl c3QgInBpcGUgfCBwcmludCAneCcgPnwgY2F0IiAiTm8gc2hlbGwtY29tbWFu ZCBpcyBzcGVjaWZpZWQiCitnZGJfdGVzdCAicGlwZSA+fCBwcmludCAneCcg fCBjYXQiICJObyBzaGVsbC1jb21tYW5kIGlzIHNwZWNpZmllZCIKK2dkYl90 ZXN0ICJwaXBlIHwgcHJpbnQgJ3gnIHwgY2F0IiAiID0gMTIwICd4JyIKK2dk Yl90ZXN0ICJwaXBlIHwgcHJpbnQgJ3gnIHwgY2F0IHwgY2F0IiAiID0gMTIw ICd4JyIKKworZmlsZSBkZWxldGUgJHRlbXBmaWxlCitnZGJfdGVzdF9ub19v dXRwdXQgInBpcGUgfCBwICd4JyB8IGNhdCA+JHRlbXBmaWxlIgoraWYgIVtm aWxlIGV4aXN0cyAkdGVtcGZpbGVdIHRoZW4geworICAgIHBlcnJvciAiJHRl bXBmaWxlIGRvZXMgbm90IGV4aXN0LiIKKyAgICByZXR1cm4gMAorfSBlbHNl IHsKKyAgICBzZXQgZnAgW29wZW4gJHRlbXBmaWxlIHJdCisgICAgc2V0IGZk YXRhIFtyZWFkICRmcF0KKyAgICBjbG9zZSAkZnAKKyAgICByZWdzdWIgLWFs bCB7XCRbMC05XSt9ICRmZGF0YSB7fSBwYXR0ZXJuCisgICAgaWYgIVtzdHJp bmcgbWF0Y2ggJHBhdHRlcm4gIiA9IDEyMCAneCdcbiJdIHRoZW4geworICAg ICAgICBmYWlsICR0ZXN0CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFzcyAk dGVzdAorICAgIH0KK30K --0016e6d99afed0d9d904ab670de0--