From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14570 invoked by alias); 29 Jul 2011 13:16:08 -0000 Received: (qmail 14560 invoked by uid 22791); 29 Jul 2011 13:16:06 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-ey0-f174.google.com (HELO mail-ey0-f174.google.com) (209.85.215.174) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 29 Jul 2011 13:15:51 +0000 Received: by eyx24 with SMTP id 24so3509612eyx.5 for ; Fri, 29 Jul 2011 06:15:49 -0700 (PDT) MIME-Version: 1.0 Received: by 10.213.105.76 with SMTP id s12mr642769ebo.126.1311945349296; Fri, 29 Jul 2011 06:15:49 -0700 (PDT) Received: by 10.213.19.13 with HTTP; Fri, 29 Jul 2011 06:15:49 -0700 (PDT) Date: Fri, 29 Jul 2011 13:59:00 -0000 Message-ID: Subject: [PATCH] An implementation of pipe to make I/O communication between gdb and shell. From: Abhijit Halder To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0015174c3f648270b304a93514a3 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-07/txt/msg00799.txt.bz2 --0015174c3f648270b304a93514a3 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 857 This is the implementation of a new gdb command, named 'pipe', to make ease of I/O communication between gdb and shell. The syntax of this command is shown as follows: (gdb) pipe [option] gdb-cmd shell-cmd List of options go with pipe command: -r gdb reads output of shell-command from pipe -w gdb passes output of a command to shell to process. - end of gdb option list dlim (delimiter) is a single ASCII character from the set below: {|/\'"`#@!$%^} (We actually can remove this restriction). The default behaviour of pipe will be to pass the gdb command output to shell. Makefile.in | 4 - pipe.c | 194 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ pipe.h | 34 ++++++++++ ui-file.c | 14 ++++ ui-file.h | 3 5 files changed, 247 insertions(+), 2 deletions(-) Thanks, Abhijit Halder --0015174c3f648270b304a93514a3 Content-Type: application/octet-stream; name=ChangeLog Content-Disposition: attachment; filename=ChangeLog Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqp6agbs0 Content-length: 456 MjAxMS0wNy0yOSBBYmhpaml0IEhhbGRlciA8YWJoaWppdC5rLmhhbGRlckBz eW1hbnRlYy5jb20+CgoJSW1wbGVtZW50YXRpb24gb2YgcGlwZSB0byBtYWtl IEkvTyBjb21tdW5pY2F0aW9uIAoJYmV0d2VlbiBnZGIgYW5kIHNoZWxsLgoK CSogdWktZmlsZS5jIChnZGJfbW9kaWZ5X2lvKTogTmV3IGZ1bmN0aW9uLgoJ KiB1aS1maWxlLmggKGdkYl9tb2RpZnlfaW8pOiBGdW5jdGlvbiBwcm90b3R5 cGUuCgkqIHBpcGUuYzogTmV3IGZpbGUuCgkqIHBpcGUuaDogTmV3IGZpbGUu CgkqIE1ha2VmaWxlLmluIChTRklMRVMpOiBBZGQgcGlwZS5jLgoJKENPTU1P Tl9PQlMpOiBBZGQgcGlwZS5vLiAK --0015174c3f648270b304a93514a3 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_gqp6bk3x1 Content-length: 12070 ZGlmZiAtcnVwIHNyYy9nZGIvTWFrZWZpbGUuaW4gZHN0L2dkYi9NYWtlZmls ZS5pbgotLS0gc3JjL2dkYi9NYWtlZmlsZS5pbgkyMDExLTA3LTI3IDIzOjU1 OjI2LjAwMDAwMDAwMCArMDUzMAorKysgZHN0L2dkYi9NYWtlZmlsZS5pbgky MDExLTA3LTI5IDE2OjEyOjMyLjU3ODA0ODc5NyArMDUzMApAQCAtNzEzLDcg KzcxMyw3IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10 eXBlcHIKIAlvYmpjLWV4cC55IG9iamMtbGFuZy5jIFwKIAlvYmpmaWxlcy5j IG9zYWJpLmMgb2JzZXJ2ZXIuYyBvc2RhdGEuYyBcCiAJb3BlbmNsLWxhbmcu YyBcCi0JcC1leHAueSBwLWxhbmcuYyBwLXR5cGVwcmludC5jIHAtdmFscHJp bnQuYyBwYXJzZS5jIHByaW50Y21kLmMgXAorCXAtZXhwLnkgcC1sYW5nLmMg cC10eXBlcHJpbnQuYyBwLXZhbHByaW50LmMgcGFyc2UuYyBwaXBlLmMgcHJp bnRjbWQuYyBcCiAJcHJvYy1zZXJ2aWNlLmxpc3QgcHJvZ3NwYWNlLmMgXAog CXByb2xvZ3VlLXZhbHVlLmMgcHN5bXRhYi5jIFwKIAlyZWdjYWNoZS5jIHJl Z2dyb3Vwcy5jIHJlbW90ZS5jIHJlbW90ZS1maWxlaW8uYyByZXZlcnNlLmMg XApAQCAtODcwLDcgKzg3MCw3IEBAIENPTU1PTl9PQlMgPSAkKERFUEZJTEVT KSAkKENPTkZJR19PQlMpICQKIAltaS1jb21tb24ubyBcCiAJZXZlbnQtbG9v cC5vIGV2ZW50LXRvcC5vIGluZi1sb29wLm8gY29tcGxldGVyLm8gXAogCWdk YmFyY2gubyBhcmNoLXV0aWxzLm8gZ2RidHlwZXMubyBvc2FiaS5vIGNvcHlp bmcubyBcCi0JbWVtYXR0ci5vIG1lbS1icmVhay5vIHRhcmdldC5vIHBhcnNl Lm8gbGFuZ3VhZ2UubyBidWlsZHN5bS5vIFwKKwltZW1hdHRyLm8gbWVtLWJy ZWFrLm8gdGFyZ2V0Lm8gcGFyc2UubyBwaXBlLm8gbGFuZ3VhZ2UubyBidWls ZHN5bS5vIFwKIAlmaW5kY21kLm8gXAogCXN0ZC1yZWdzLm8gXAogCXNpZ25h bHMubyBcCmRpZmYgLXJ1cCBzcmMvZ2RiL3BpcGUuYyBkc3QvZ2RiL3BpcGUu YwotLS0gc3JjL2dkYi9waXBlLmMJMjAxMS0wNy0yOSAxNToxNToyNi4wNzgw NDg1MTcgKzA1MzAKKysrIGRzdC9nZGIvcGlwZS5jCTIwMTEtMDctMjkgMTg6 MTY6MDcuNTAyMDQ5MTI1ICswNTMwCkBAIC0wLDAgKzEsMTk0IEBACisvKiBF dmVyeXRoaW5nIGFib3V0IHBpcGUsIGZvciBHREIuCisKKyAgIENvcHlyaWdo dCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5 OSwgMjAwMCwgMjAwMSwgMjAwMiwKKyAgIDIwMDMsIDIwMDQsIDIwMDcsIDIw MDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKworICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgImRlZnMuaCIK KyNpbmNsdWRlICJnZGJjbWQuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu Y2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVk ZSAiY2xpL2NsaS11dGlscy5oIgorI2luY2x1ZGUgInVpLWZpbGUuaCIKKyNp bmNsdWRlICJwaXBlLmgiCisKKy8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1 bmN0aW9ucyAqLworCitzdGF0aWMgc3RydWN0IHBpcGVfdCAqY29uc3RydWN0 X3BpcGUgKGNoYXIgKik7CitzdGF0aWMgdm9pZCBkZXN0cnVjdF9waXBlIChz dHJ1Y3QgcGlwZV90ICopOworc3RhdGljIHN0cnVjdCBwaXBlX3QgKmV4ZWN1 dGVfY29tbWFuZF90b19waXBlIChzdHJ1Y3QgcGlwZV90ICosIGludCk7Citz dGF0aWMgdm9pZCBwaXBlX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKKworc3Rh dGljIHN0cnVjdCBwaXBlX3QgKgorY29uc3RydWN0X3BpcGUgKGNoYXIgKnAp Cit7CisgIHN0cnVjdCBwaXBlX3QgKnBpcGUgPSBOVUxMOworICBpbnQgZm91 bmRfbW9kZSA9IDAsIHBpcGVfb3B0X2RvbmUgPSAwOworCisgIGlmIChwICE9 IE5VTEwgJiYgKnAgIT0gJ1wwJykKKyAgICB7CisgICAgICBwaXBlID0geG1h bGxvYyAoc2l6ZW9mKHN0cnVjdCBwaXBlX3QpKTsKKyAgICAgIHBpcGUtPm1v ZGUgPSBXUl9URVhUOworCisgICAgICB3aGlsZSAoIXBpcGVfb3B0X2RvbmUp CisgICAgeworICAgICAgc2tpcF9zcGFjZXMgKHApOworCisgICAgICAvKiBJ ZiB3ZSBkb24ndCBnZXQgYW4gYXJndW1lbnQgc3RhcnRlZCB3aXRoICctJwor ICAgICAgICAgYW5kIHdoaWNoIGlzIG5vdCBldmVuIGEgdmFsdWUgYXNzb2Np YXRlZCB3aXRoCisgICAgICAgICBzb21lIG9wdGlvbiwgd2UgY29uc2lkZXIg aXQgYXMgYSBwb3RlbnRpYWwgCisgICAgICAgICBkZWxpbWl0ZXIgYW5kIHN0 b3AgcGFyc2luZyBmb3IgZnVydGhlciBvcHRpb24KKyAgICAgICAgIGFyZ3Vt ZW50cy4gICovCisgICAgICBpZiAoKnAgIT0gJy0nKQorICAgICAgICBicmVh azsKKyAKKyAgICAgIHN3aXRjaCAoKisrcCkKKyAgICAgICAgeworICAgICAg ICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgaWYgKGZvdW5kX21vZGUpCisg ICAgICAgICAgeworICAgICAgICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJJ bnZhbGlkIG9wdGlvblxuIikpOworICAgICAgICAgICAgeGZyZWUgKHBpcGUp OworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgfQorICAg ICAgICAgICAgcGlwZS0+bW9kZSA9IFJEX1RFWFQ7CisgICAgICAgICAgICBm b3VuZF9tb2RlID0gMTsKKyAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAg IGJyZWFrOworCisgICAgICAgICAgY2FzZSAndyc6CisgICAgICAgICAgICBp ZiAoZm91bmRfbW9kZSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBwcmlu dGZfZmlsdGVyZWQgKF8oIkludmFsaWQgb3B0aW9uXG4iKSk7CisgICAgICAg ICAgICB4ZnJlZSAocGlwZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsK KyAgICAgICAgICB9CisgICAgICAgICAgICBwaXBlLT5tb2RlID0gV1JfVEVY VDsKKyAgICAgICAgICAgIGZvdW5kX21vZGUgPSAxOworICAgICAgICAgICAg KytwOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlICcg JzoKKyAgICAgICAgICAgIHBpcGVfb3B0X2RvbmUgPSAxOworICAgICAgICAg ICAgKytwOworICAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICAgZGVm YXVsdDoKKyAgICAgICAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiSW52YWxp ZCBvcHRpb25cbiIpKTsKKyAgICAgICAgICAgIHhmcmVlIChwaXBlKTsKKyAg ICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisg ICAgICBza2lwX3NwYWNlcyAocCk7CisgICAgICBwaXBlLT5kbGltID0gKnAr KzsKKyAgICAgIHNraXBfc3BhY2VzIChwKTsKKyAgICAgIHBpcGUtPmdkYl9j bWQgPSBwOworCisgICAgICAvKiBWYWxpZGF0ZSB0aGUgZGVsaW1pdGVyIGZy b20gYSBwcmUtZGVmaW5lZAorICAgICAgICAgd2hpdGVsaXN0IGNoYXJhY3Rl cnMuIFRoaXMgd2lsbCBlbmZvcmNlIAorICAgICAgICAgbm90IHRvIHVzZSBz cGVjaWFsIChlLmcuLCBhbHBoYS1udW1lcmljKSBsaXN0IAorICAgICAgICAg b2YgY2hhcmFjdGVycy4gICovCisgICAgICAvKiBOT1RFOiBJZiBETElNIGJl Y29tZSBudWxsLCBQIHBvaW50cyB0byBhIGJhZAorICAgICAgICAgc3RyaW5n LCBoZW5jZSBiZWZvcmUgZG9pbmcgZnVydGhlciBwcm9jZXNzaW5nCisgICAg ICAgICBvZiBQIHdlIHNob3VsZCBjaGVjayBETElNLiAgKi8KKyAgICAgIGlm IChwaXBlLT5kbGltID09ICdcMCcgfHwgCisgICAgICBzdHJjaHIgKCJ8L1xc J1wiYCNAISQlXiIsIHBpcGUtPmRsaW0pID09IE5VTEwpCisgICAgeworICAg ICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJJbnZhbGlkIGRlbGltaXRlciAnJWMn XG4iKSwgcGlwZS0+ZGxpbSk7CisgICAgICB4ZnJlZSAocGlwZSk7CisgICAg ICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAgIGlmICgocCA9IHN0cmNo ciAocCwgcGlwZS0+ZGxpbSkpID09IE5VTEwpCisgICAgeworICAgICAgcHJp bnRmX2ZpbHRlcmVkIChfKCJGb3VuZCBubyBzaGVsbCBjb21tYW5kXG4iKSk7 CisgICAgICB4ZnJlZSAocGlwZSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAg ICB9CisKKyAgICAgICpwKysgPSAnXDAnOworICAgICAgcGlwZS0+c2hlbGxf Y21kID0gcDsKKworICAgICAgcGlwZS0+aGFuZGxlID0gcG9wZW4gKHBpcGUt PnNoZWxsX2NtZCwgcGlwZS0+bW9kZSk7CisKKyAgICAgIGlmICghcGlwZS0+ aGFuZGxlKQorICAgIHsKKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVf XywgX19MSU5FX18sCisJCSAgICAgIF8oImNvbnN0cnVjdF9waXBlOiBmYWls ZWQgdG8gY3JlYXRlIHBpcGUuXG4lcyIpLCAKKyAgICAgICAgICAgICAgc3Ry ZXJyb3IgKGVycm5vKSk7CisKKyAgICAgIHhmcmVlIChwaXBlKTsKKyAgICAg IHJldHVybiBOVUxMOworICAgIH0KKyAgICB9CisKKyAgcmV0dXJuIHBpcGU7 Cit9CisKK3N0YXRpYyB2b2lkCitkZXN0cnVjdF9waXBlIChzdHJ1Y3QgcGlw ZV90ICpwaXBlKQoreworICBwY2xvc2UgKHBpcGUtPmhhbmRsZSk7CisgIHhm cmVlIChwaXBlKTsKK30KKworc3RhdGljIHN0cnVjdCBwaXBlX3QgKgorZXhl Y3V0ZV9jb21tYW5kX3RvX3BpcGUgKHN0cnVjdCBwaXBlX3QgKnBpcGUsIGlu dCBmcm9tX3R0eSkKK3sKKyAgRklMRSAqZnN0cmVhbSwgKnBzdHJlYW07Cisg IHN0cnVjdCB1aV9maWxlICpnZGJfc3RkaW87CisKKyAgaWYgKCFwaXBlLT5t b2RlKQorICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18s CisJCSAgICBfKCJleGVjdXRlX2NvbW1hbmRfdG9fcGlwZTogdW4taW5pdGlh bGl6ZWQgcGlwZSIpKTsKKyAgZWxzZSBpZiAoIXN0cmNtcCAocGlwZS0+bW9k ZSwgUkRfVEVYVCkpCisgICAgZ2RiX3N0ZGlvID0gZ2RiX3N0ZGluOworICBl bHNlIGlmICghc3RyY21wIChwaXBlLT5tb2RlLCBXUl9URVhUKSkKKyAgICBn ZGJfc3RkaW8gPSBnZGJfc3Rkb3V0OworICBlbHNlCisgICAgaW50ZXJuYWxf ZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgIF8oImV4ZWN1dGVf Y29tbWFuZF90b19waXBlOiBiYWQgcGlwZSBtb2RlIikpOworICBwc3RyZWFt ID0gcGlwZS0+aGFuZGxlOworICBmc3RyZWFtID0gZ2RiX21vZGlmeV9pbyAo Z2RiX3N0ZGlvLCBwc3RyZWFtKTsKKyAgZXhlY3V0ZV9jb21tYW5kIChwaXBl LT5nZGJfY21kLCBmcm9tX3R0eSk7CisgIHBzdHJlYW0gPSBnZGJfbW9kaWZ5 X2lvIChnZGJfc3RkaW8sIGZzdHJlYW0pOworICBwaXBlLT5oYW5kbGUgPSBw c3RyZWFtOworICByZXR1cm4gcGlwZTsKK30KKworc3RhdGljIHZvaWQKK3Bp cGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCit7CisgIHN0 cnVjdCBwaXBlX3QgKnBpcGU7CisKKyAgcGlwZSA9IGNvbnN0cnVjdF9waXBl IChhcmcpOworICBpZiAocGlwZSAhPSBOVUxMKSAKKyAgICB7CisgICAgICBw aXBlID0gZXhlY3V0ZV9jb21tYW5kX3RvX3BpcGUgKHBpcGUsIGZyb21fdHR5 KTsKKyAgICAgIGRlc3RydWN0X3BpcGUgKHBpcGUpOworICAgIH0KK30KKwor dm9pZAorX2luaXRpYWxpemVfcGlwZSAodm9pZCkKK3sKKyAgYWRkX2NtZCAo InBpcGUiLCBub19jbGFzcywgcGlwZV9jb21tYW5kLCBfKCJcCitDcmVhdGUg cGlwZSBiZXR3ZWVuIGdkYiBhbmQgc2hlbGwgZm9yIEkvTyBiYXNlZCBjb21t dW5pY2F0aW9uLiIpLCAKKyAgICAmY21kbGlzdCk7Cit9CmRpZmYgLXJ1cCBz cmMvZ2RiL3BpcGUuaCBkc3QvZ2RiL3BpcGUuaAotLS0gc3JjL2dkYi9waXBl LmgJMjAxMS0wNy0yOSAxNToxNTozMi40NjYwNDkxMjYgKzA1MzAKKysrIGRz dC9nZGIvcGlwZS5oCTIwMTEtMDctMjkgMTQ6MzQ6MDIuMzMwMDQ5MTEwICsw NTMwCkBAIC0wLDAgKzEsMzQgQEAKKy8qIERhdGEgc3RydWN0dXJlcyBhc3Nv Y2lhdGVkIHdpdGggcGlwZSBpbiBHREIuCisgICBDb3B5cmlnaHQgKEMpIDE5 ODYsIDE5ODksIDE5OTAsIDE5OTEsIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTgs IDE5OTksIDIwMDAsCisgICAyMDAyLCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEw LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaWYgIWRlZmluZWQgKFBJUEVf SCkKKyNkZWZpbmUgUElQRV9IIDEKKwordHlwZWRlZiBjaGFyICppb3N0cmVh bV9tb2RlX3Q7CisKKyNkZWZpbmUgUkRfVEVYVCAiciIKKyNkZWZpbmUgV1Jf VEVYVCAidyIKKworc3RydWN0IHBpcGVfdCB7CisgIGNoYXIgKnNoZWxsX2Nt ZDsKKyAgY2hhciAqZ2RiX2NtZDsKKyAgY2hhciBkbGltOworICBpb3N0cmVh bV9tb2RlX3QgbW9kZTsKKyAgRklMRSAqaGFuZGxlOworfTsKKworI2VuZGlm IC8qICFkZWZpbmVkIChQSVBFX0gpICovCmRpZmYgLXJ1cCBzcmMvZ2RiL3Vp LWZpbGUuYyBkc3QvZ2RiL3VpLWZpbGUuYwotLS0gc3JjL2dkYi91aS1maWxl LmMJMjAxMS0wNS0xNCAxMToxNDozNi4wMDAwMDAwMDAgKzA1MzAKKysrIGRz dC9nZGIvdWktZmlsZS5jCTIwMTEtMDctMjkgMTQ6MzI6MDcuODM4MDQ5NDEz ICswNTMwCkBAIC02MTksNiArNjE5LDIwIEBAIHN0ZGlvX2ZpbGVvcGVuIChG SUxFICpmaWxlKQogICByZXR1cm4gc3RkaW9fZmlsZV9uZXcgKGZpbGUsIDAp OwogfQogCitGSUxFICoKK2dkYl9tb2RpZnlfaW8gKHN0cnVjdCB1aV9maWxl ICpmaWxlLCBGSUxFICppb3N0cmVhbV9uZXcpCit7CisgIEZJTEUgKmlvc3Ry ZWFtX29sZDsKKyAgc3RydWN0IHN0ZGlvX2ZpbGUgKnN0ZGlvID0gdWlfZmls ZV9kYXRhIChmaWxlKTsKKworICBpZiAoc3RkaW8tPm1hZ2ljICE9ICZzdGRp b19maWxlX21hZ2ljKQorICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywg X19MSU5FX18sCisJCSAgICBfKCJnZGJfbW9kaWZ5X2lvOiBiYWQgbWFnaWMg bnVtYmVyIikpOworICBpb3N0cmVhbV9vbGQgPSBzdGRpby0+ZmlsZTsKKyAg c3RkaW8tPmZpbGUgPSBpb3N0cmVhbV9uZXc7CisgIHJldHVybiBpb3N0cmVh bV9vbGQ7Cit9CisKIHN0cnVjdCB1aV9maWxlICoKIGdkYl9mb3BlbiAoY2hh ciAqbmFtZSwgY2hhciAqbW9kZSkKIHsKZGlmZiAtcnVwIHNyYy9nZGIvdWkt ZmlsZS5oIGRzdC9nZGIvdWktZmlsZS5oCi0tLSBzcmMvZ2RiL3VpLWZpbGUu aAkyMDExLTA1LTEzIDIyOjU4OjIwLjAwMDAwMDAwMCArMDUzMAorKysgZHN0 L2dkYi91aS1maWxlLmgJMjAxMS0wNy0yOSAxNDozMTozOC4wNzQwNDcxMjIg KzA1MzAKQEAgLTEyNiw2ICsxMjYsOSBAQCBleHRlcm4gc3RydWN0IHVpX2Zp bGUgKnN0ZGlvX2ZpbGVvcGVuIChGCiAvKiBPcGVuIE5BTUUgcmV0dXJuaW5n IGFuIFNURElPIGJhc2VkIFVJX0ZJTEUuICAqLwogZXh0ZXJuIHN0cnVjdCB1 aV9maWxlICpnZGJfZm9wZW4gKGNoYXIgKm5hbWUsIGNoYXIgKm1vZGUpOwog CisvKiBNb2RpZnkgdGhlIGZpbGUgSS9PIHN0cmVhbSBwb2ludGVyIG9mIGFu IFNURElPIGJhc2VkIFVJX0ZJTEUuICAqLworRklMRSAqZ2RiX21vZGlmeV9p byAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIEZJTEUgKmlvc3RyZWFtX25ldyk7 CisKIC8qIENyZWF0ZSBhIGZpbGUgd2hpY2ggd3JpdGVzIHRvIGJvdGggT05F IGFuZCBUV08uICBDTE9TRV9PTkUKICAgIGFuZCBDTE9TRV9UV08gaW5kaWNh dGUgd2hldGhlciB0aGUgb3JpZ2luYWwgZmlsZXMgc2hvdWxkIGJlCiAgICBj bG9zZWQgd2hlbiB0aGUgbmV3IGZpbGUgaXMgY2xvc2VkLiAgKi8K --0015174c3f648270b304a93514a3--