From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22552 invoked by alias); 11 Sep 2012 13:16:58 -0000 Received: (qmail 22534 invoked by uid 22791); 11 Sep 2012 13:16:55 -0000 X-SWARE-Spam-Status: No, hits=-5.3 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_NO,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from ch1ehsobe001.messaging.microsoft.com (HELO ch1outboundpool.messaging.microsoft.com) (216.32.181.181) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 11 Sep 2012 13:16:42 +0000 Received: from mail183-ch1-R.bigfish.com (10.43.68.235) by CH1EHSOBE009.bigfish.com (10.43.70.59) with Microsoft SMTP Server id 14.1.225.23; Tue, 11 Sep 2012 13:16:41 +0000 Received: from mail183-ch1 (localhost [127.0.0.1]) by mail183-ch1-R.bigfish.com (Postfix) with ESMTP id 14550320128; Tue, 11 Sep 2012 13:16:41 +0000 (UTC) X-Forefront-Antispam-Report: CIP:59.163.77.177;KIP:(null);UIP:(null);IPV:NLI;H:KCHJEXHC02.kpit.com;RD:59.163.77.177.static.vsnl.net.in;EFVD:NLI X-SpamScore: -4 X-BigFish: VPS-4(zz1b0aLc85fhzz1202h1d1ahzz17326ah8275dhz2dh2a8h668h839hd25hf0ah107ah1288h12a5h12bdh34h1155h) Received: from mail183-ch1 (localhost.localdomain [127.0.0.1]) by mail183-ch1 (MessageSwitch) id 1347369398502596_2301; Tue, 11 Sep 2012 13:16:38 +0000 (UTC) Received: from CH1EHSMHS038.bigfish.com (snatpool1.int.messaging.microsoft.com [10.43.68.252]) by mail183-ch1.bigfish.com (Postfix) with ESMTP id 77E414C00DF; Tue, 11 Sep 2012 13:16:38 +0000 (UTC) Received: from KCHJEXHC02.kpit.com (59.163.77.177) by CH1EHSMHS038.bigfish.com (10.43.69.247) with Microsoft SMTP Server (TLS) id 14.1.225.23; Tue, 11 Sep 2012 13:16:36 +0000 Received: from KCHJEXMB03.kpit.com ([169.254.4.166]) by KCHJEXHC02.kpit.com ([172.10.15.74]) with mapi id 14.01.0289.001; Tue, 11 Sep 2012 18:46:33 +0530 From: Kaushik Phatak To: "gdb-patches@sourceware.org" CC: Mike Frysinger , Yao Qi , Pedro Alves Subject: RE: [RFC] New GDB Port CR16 Date: Tue, 11 Sep 2012 13:16:00 -0000 Message-ID: References: <503B9E59.6050502@codesourcery.com> <504478D0.4040202@redhat.com> <504A331F.2090204@redhat.com> In-Reply-To: <504A331F.2090204@redhat.com> Content-Type: multipart/mixed; boundary="_006_C6CA53A2A46BA7469348BDBD663AB65845B2B47CKCHJEXMB03kpitc_" MIME-Version: 1.0 X-OriginatorOrg: kpitcummins.com 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: 2012-09/txt/msg00152.txt.bz2 --_006_C6CA53A2A46BA7469348BDBD663AB65845B2B47CKCHJEXMB03kpitc_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-length: 2599 Hi, Thanks for all your comments till date. I have attached the diffs separatel= y, though I do plan to do it in different threads soon. I am still trying to c= lear=20 up couple of issues before that. If anybody could give me suggestions on th= ese, it would be very much appreciated. 1. The elf and uclinux binaries seem to get built after adding their triple= ts in configure.tgt, however I am having a hard time getting the cr16-uclinux-= gdb to work with the hardware. On debugging, I found that this binary transmitt= ed=20 data during a call to update_address_spaces function called from=20 remote_start_remote in remote.c The additional packet transmitted is as below, { Sending packet: $qXfer:auxv:read::0,1000#6b...Packet received: l\000\000\00= 0\000\000\000\000\000 } After this, the gdbserver communication would either hang, or kernel would = crash and the host would get a timeout. On additional debugging, this packet seem= ed to get generated from the call to gdbarch_has_shared_address_space(). Previously, the whole setup has been tested with host side gdb being built independently with different breakpoint and register set. This method of us= ing linux-tdep.c seems to be inline with other ports, but maybe I am missing=20 something, any pointers? 2. The cr16 target has -fPIC support and the data section is at an offset to the end of text section. However, the symbol file created only shows me = one segment(0). So, the global data access takes place with offsets calculated = with respect to the start of .text section. This causes all reads to global data to be incorrect. The attached patch which is a hack to get around=20 this:"gdb_core_fpic_suspect.diff" Is there an elegant way to achieve this? Mike, you had given the below feedback, http://sourceware.org/ml/gdb-patches/2012-08/msg00819.html > +int > match_opcode (void) > this new local prototype makes no sense. just delete it. When I remove these prototypes, it gives me a warning as follows, warning: no previous prototype for match_opcode Our build fails as it treats warnings as error. We can get around that by using "--disable-werror" I guess. But would this hunk be acceptable as is? The attached patched are: cr16_config_toplevel_alpha.diff -> top level changes to be submitted to gcc= -patches cr16_config_tgt_alpha.diff -> configure.tgt changes cr16_bfd.diff -> bfd level changes to be submitted to binutils cr16_gdb_alpha.diff -> cr16-tdep and cr16-linux-tdep related patch gdb_core_fpic_suspect.diff -> The patch in question for -fPIC implementatio= n. Thanks & Best Regards, Kaushik Phatak --_006_C6CA53A2A46BA7469348BDBD663AB65845B2B47CKCHJEXMB03kpitc_ Content-Type: application/octet-stream; name="cr16_gdb_alpha.diff" Content-Description: cr16_gdb_alpha.diff Content-Disposition: attachment; filename="cr16_gdb_alpha.diff"; size=31611; creation-date="Tue, 11 Sep 2012 12:41:45 GMT"; modification-date="Tue, 11 Sep 2012 13:04:22 GMT" Content-Transfer-Encoding: base64 Content-length: 42851 LS0tIGdkYl9zcmMub3JpZy9nZGIvY3IxNi1saW51eC10ZGVwLmMJMTk3MC0w MS0wMSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrIC4vZ2RiX3NyYy9n ZGIvY3IxNi1saW51eC10ZGVwLmMJMjAxMi0wOS0wNCAxMzowNjowMy4wMDAw MDAwMDAgKzA1MzAKQEAgLTAsMCArMSw2NCBAQAorLyogVGFyZ2V0LWRlcGVu ZGVudCBjb2RlIGZvciBHTlUvTGludXggb24gWHRlbnNhIHByb2Nlc3NvcnMu CisKKyAgIENvcHlyaWdodCAyMDA3LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyAgIENvbnRyaWJ1dGVkIGJ5IEthdXNoaWsgUGhh dGFrIChrYXVzaGlrLnBhaGF0a0BrcGl0Y3VtbWlucy5jb20pCisgICBLUElU IEN1bW1pbnMgSW5mb3N5c3RlbXMgTGltaXRlZCwgUHVuZSBJbmRpYS4KKwor ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorCisgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor CisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSAiZGVmcy5oIgorI2luY2x1ZGUg Im9zYWJpLmgiCisjaW5jbHVkZSAibGludXgtdGRlcC5oIgorI2luY2x1ZGUg InNvbGliLXN2cjQuaCIKKyNpbmNsdWRlICJzeW10YWIuaCIKKyNpbmNsdWRl ICJjcjE2LXRkZXAuaCIKKworY29uc3QgZ2RiX2J5dGUgYnJlYWtwb2ludF91 Y2xpbnV4W10gPSB7IDB4QzcsIDB4MDAgfTsKKworCisvKiBPUyBzcGVjaWZp YyBpbml0aWFsaXphdGlvbiBvZiBnZGJhcmNoLiAgKi8KKworc3RhdGljIHZv aWQKK2NyMTZfdWNsaW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5m byBpbmZvLAorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCkKK3sKKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdk YmFyY2hfdGRlcCAoZ2RiYXJjaCk7CisKKyAgbGludXhfaW5pdF9hYmkgKGlu Zm8sIGdkYmFyY2gpOworCisgIC8qIFRoZSBvcGNvZGUgb2YgZXhjcCBicHQg aXMgMHgwMEM4LCBob3dldmVyIGZvciB1Y2xpbnV4IHdlIHdpbGwgdXNlIHRo ZSAKKyAgICAgZXhjcCBmbGcgKDB4MDBDNykgdG8gaW5zZXJ0IGEgYnJlYWtw b2ludC4gVGhlIGV4Y3AgYnB0IHJlcXVpcmVzIGV4dGVybmFsCisgICAgIGhh cmR3YXJlIHN1cHBvcnQgZm9yIGJyZWFrcG9pbnRzIHRvIHdvcmsgb24gQ1Ix NiB0YXJnZXQuIFNvZnR3YXJlIGJhc2VkCisgICAgIGJyZWFrcG9pbnRzIGFy ZSBpbXBsZW1lbnRlZCBpbiB0aGUga2VybmVsIHVzaW5nIGV4Y3AgZmxnIGFu ZCB0ZXN0ZWQgb24KKyAgICAgdGhlIFNDMTQ0NTIgdGFyZ2V0LiBVc2UgMHgw MEM3IHdpdGggZ2Ric2VydmVyL2tlcm5lbCBhbmQgMHgwMEM4IGZvciBzaW0v RUxGCisgICAgIFdlIHJlcHJlc2VudCB0aGUgYnJlYWtwb2ludCBpbiBsaXR0 bGUgZW5kaWFuIGZvcm1hdCBzaW5jZSBDUjE2IHN1cHBvcnRzCisgICAgIG9u bHkgbGl0dGxlIGVuZGlhbi4KKyAgICovCisgIHRkZXAtPmJyZWFrcG9pbnQg PSBicmVha3BvaW50X3VjbGludXg7CisKK30KKy8qIFByb3ZpZGUgYSBwcm90 b3R5cGUgdG8gc2lsZW5jZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCitl eHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NyMTZf bGludXhfdGRlcDsKKwordm9pZAorX2luaXRpYWxpemVfY3IxNl9saW51eF90 ZGVwICh2b2lkKQoreworICBnZGJhcmNoX3JlZ2lzdGVyX29zYWJpIChiZmRf YXJjaF9jcjE2LCAwLCBHREJfT1NBQklfTElOVVgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgIGNyMTZfdWNsaW51eF9pbml0X2FiaSk7Cit9CisKKwot LS0gZ2RiX3NyYy5vcmlnL2dkYi9jcjE2LXRkZXAuYwkxOTcwLTAxLTAxIDA1 OjMwOjAwLjAwMDAwMDAwMCArMDUzMAorKysgLi9nZGJfc3JjL2dkYi9jcjE2 LXRkZXAuYwkyMDEyLTA5LTA3IDE3OjU0OjEwLjAwMDAwMDAwMCArMDUzMApA QCAtMCwwICsxLDkyOSBAQAorLyogVGFyZ2V0LWRlcGVuZGVudCBjb2RlIGZv ciB0aGUgU2l0ZWwgQ1IxNiBmb3IgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgor IAorICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorIAorICAgQ29udHJpYnV0ZWQgYnkgS2F1c2hpayBQaGF0 YWsgKGthdXNoaWsucGFoYXRrQGtwaXRjdW1taW5zLmNvbSkKKyAgIEtQSVQg Q3VtbWlucyBJbmZvc3lzdGVtcyBMaW1pdGVkLCBQdW5lIEluZGlhLgorICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorCisgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgCisgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgorICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNsdWRlICJhcmNoLXV0aWxz LmgiCisjaW5jbHVkZSAicHJvbG9ndWUtdmFsdWUuaCIKKyNpbmNsdWRlICJ0 YXJnZXQuaCIKKyNpbmNsdWRlICJyZWdjYWNoZS5oIgorI2luY2x1ZGUgIm9w Y29kZS9jcjE2LmgiCisjaW5jbHVkZSAiZGlzLWFzbS5oIgorI2luY2x1ZGUg ImdkYnR5cGVzLmgiCisjaW5jbHVkZSAiZnJhbWUuaCIKKyNpbmNsdWRlICJm cmFtZS11bndpbmQuaCIKKyNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCisjaW5j bHVkZSAidmFsdWUuaCIKKyNpbmNsdWRlICJnZGJjb3JlLmgiCisjaW5jbHVk ZSAiZHdhcmYyLWZyYW1lLmgiCisjaW5jbHVkZSAiZ2RiL3NpbS1jcjE2Lmgi CisjaW5jbHVkZSAiZWxmL2NyMTYuaCIKKyNpbmNsdWRlICJlbGYtYmZkLmgi CisjaW5jbHVkZSAibGludXgtdGRlcC5oIgorI2luY2x1ZGUgIm9zYWJpLmgi CisjaW5jbHVkZSAiY3IxNi10ZGVwLmgiCisKK2NvbnN0IGdkYl9ieXRlIGJy ZWFrcG9pbnRfZWxmW10gPSB7IDB4QzgsIDB4MDAgfTsKKwordHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCB3b3JkVTsKK2V4dGVybiB3b3JkVSB3b3Jkc1szXTsK K2V4dGVybiBVTE9OR0xPTkcgYWxsV29yZHM7CitleHRlcm4gaW5zIGN1cnJJ bnNuOworCisvKiBDZXJ0YWluIGltcG9ydGFudCByZWdpc3RlciBudW1iZXJz LiAgKi8KK2VudW0KK3sKKyAgQ1IxNl9SMF9SRUdOVU0gPSAwLAorICBDUjE2 X1I3X1JFR05VTSA9IDcsCisgIENSMTZfUjEyX1JFR05VTSA9IDEyLAorICBD UjE2X0ZQX1JFR05VTSA9IDEzLAorICBDUjE2X1JBX1JFR05VTSA9IDE0LAor ICBDUjE2X1NQX1JFR05VTSA9IDE1LAorICBDUjE2X1BDX1JFR05VTSA9IDE2 LAorfTsKKworLyogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIHJlc3VsdHMg b2YgYSBwcm9sb2d1ZSBhbmFseXNpcy4gICovCitzdHJ1Y3QgY3IxNl9wcm9s b2d1ZQoreworICAvKiBUaGUgb2Zmc2V0IGZyb20gdGhlIGZyYW1lIGJhc2Ug dG8gdGhlIHN0YWNrIHBvaW50ZXIgLS0tIGFsd2F5cworICAgICB6ZXJvIG9y IG5lZ2F0aXZlLgorCisgICAgIENhbGxpbmcgdGhpcyBhICJzaXplIiBpcyBh IGJpdCBtaXNsZWFkaW5nLCBidXQgZ2l2ZW4gdGhhdCB0aGUKKyAgICAgc3Rh Y2sgZ3Jvd3MgZG93bndhcmRzLCB1c2luZyBvZmZzZXRzIGZvciBldmVyeXRo aW5nIGtlZXBzIG9uZQorICAgICBmcm9tIGdvaW5nIGNvbXBsZXRlbHkgc2ln bi1jcmF6eTogeW91IG5ldmVyIGNoYW5nZSBhbnl0aGluZydzCisgICAgIHNp Z24gZm9yIGFuIEFERCBpbnN0cnVjdGlvbjsgYWx3YXlzIGNoYW5nZSB0aGUg c2Vjb25kIG9wZXJhbmQncworICAgICBzaWduIGZvciBhIFNVQiBpbnN0cnVj dGlvbjsgYW5kIGV2ZXJ5dGhpbmcgdGFrZXMgY2FyZSBvZgorICAgICBpdHNl bGYuICAqLworICBpbnQgZnJhbWVfc2l6ZTsKKworICAvKiBOb24temVybyBp ZiB0aGlzIGZ1bmN0aW9uIGhhcyBpbml0aWFsaXplZCB0aGUgZnJhbWUgcG9p bnRlciBmcm9tCisgICAgIHRoZSBzdGFjayBwb2ludGVyLCB6ZXJvIG90aGVy d2lzZS4gICovCisgIGludCBoYXNfZnJhbWVfcHRyOworCisgIC8qIElmIGhh c19mcmFtZV9wdHIgaXMgbm9uLXplcm8sIHRoaXMgaXMgdGhlIG9mZnNldCBm cm9tIHRoZSBmcmFtZQorICAgICBiYXNlIHRvIHdoZXJlIHRoZSBmcmFtZSBw b2ludGVyIHBvaW50cy4gIFRoaXMgaXMgYWx3YXlzIHplcm8gb3IKKyAgICAg bmVnYXRpdmUuICAqLworICBpbnQgZnJhbWVfcHRyX29mZnNldDsKKworICAv KiBUaGUgYWRkcmVzcyBvZiB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24gYXQgd2hp Y2ggdGhlIGZyYW1lIGhhcyBiZWVuCisgICAgIHNldCB1cCBhbmQgdGhlIGFy Z3VtZW50cyBhcmUgd2hlcmUgdGhlIGRlYnVnIGluZm8gc2F5cyB0aGV5IGFy ZQorICAgICAtLS0gYXMgYmVzdCBhcyB3ZSBjYW4gdGVsbC4gICovCisgIENP UkVfQUREUiBwcm9sb2d1ZV9lbmQ7CisKKyAgLyogcmVnX29mZnNldFtSXSBp cyB0aGUgb2Zmc2V0IGZyb20gdGhlIENGQSBhdCB3aGljaCByZWdpc3RlciBS IGlzCisgICAgIHNhdmVkLCBvciAxIGlmIHJlZ2lzdGVyIFIgaGFzIG5vdCBi ZWVuIHNhdmVkLiAgKFJlYWwgdmFsdWVzIGFyZQorICAgICBhbHdheXMgemVy byBvciBuZWdhdGl2ZS4pICAqLworICBpbnQgcmVnX29mZnNldFtDUjE2X05V TV9SRUdTXTsKK307CisKKy8qIEltcGxlbWVudCB0aGUgInJlZ2lzdGVyX25h bWUiIGdkYmFyY2ggbWV0aG9kLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoK K2NyMTZfcmVnaXN0ZXJfbmFtZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs IGludCByZWducikKK3sKKyAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHJl Z19uYW1lc1tdID0geworICAgICJyMCIsCisgICAgInIxIiwKKyAgICAicjIi LAorICAgICJyMyIsCisgICAgInI0IiwKKyAgICAicjUiLAorICAgICJyNiIs CisgICAgInI3IiwKKyAgICAicjgiLAorICAgICJyOSIsCisgICAgInIxMCIs CisgICAgInIxMSIsCisgICAgInIxMiIsCisgICAgInIxMyIsCisgICAgInJh IiwKKyAgICAic3AiLAorICAgICJwYyIsCisgICAgImlzcCIsCisgICAgInVz cCIsCisgICAgImludGJhc2UiLAorICAgICJwc3IiLAorICAgICJjZmciCisg IH07CisKKyAgcmV0dXJuIHJlZ19uYW1lc1tyZWducl07Cit9CisKK3N0YXRp YyBjb25zdCBjaGFyICoKK2NyMTZfbGludXhfcmVnaXN0ZXJfbmFtZSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWducikKK3sKKyAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IHJlZ19uYW1lc1tdID0geworICAgICJyMCIs CisgICAgInIxIiwKKyAgICAicjIiLAorICAgICJyMyIsCisgICAgInI0IiwK KyAgICAicjUiLAorICAgICJyNiIsCisgICAgInI3IiwKKyAgICAicjgiLAor ICAgICJyOSIsCisgICAgInIxMCIsCisgICAgInIxMSIsCisgICAgInIxMiIs CisgICAgInIxMyIsCisgICAgInJhIiwKKyAgICAicHNyIiwKKyAgICAicGMi LAorICAgICJyMHIxX29yaWciLAorICAgICJpbnRiYXNlIiwKKyAgICAidXNw IiwKKyAgICAiY2ZnIgorICB9OworCisgIHJldHVybiByZWdfbmFtZXNbcmVn bnJdOworfQorCisvKiBJbXBsZW1lbnQgdGhlICJyZWdpc3Rlcl90eXBlIiBn ZGJhcmNoIG1ldGhvZC4gICovCitzdGF0aWMgc3RydWN0IHR5cGUgKgorY3Ix Nl9yZWdpc3Rlcl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50 IHJlZ19ucikKK3sKKyAgc3dpdGNoIChyZWdfbnIpCisgICAgeworICAgIGNh c2UgQ1IxNl9QQ19SRUdOVU06CS8qIE5vdGU6UEMgaW4gQ1IxNiBpcyBvZiAy NCBiaXRzICovCisgICAgICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJhcmNo KS0+YnVpbHRpbl9mdW5jX3B0cjsKKworICAgIGNhc2UgQ1IxNl9SQV9SRUdO VU06CS8qIFJldHVybiBhZGRyZXNzIHJlZyAqLworICAgICAgcmV0dXJuIGJ1 aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7CisgICAg ICBicmVhazsKKworICAgIGNhc2UgQ1IxNl9GUF9SRUdOVU06CS8qRnJhbWUg UG9pbnRlciByZWcgKi8KKyAgICBjYXNlIENSMTZfU1BfUkVHTlVNOgkvKlN0 YWNrIFBvaW50ZXIgcmVnICovCisgICAgICByZXR1cm4gYnVpbHRpbl90eXBl IChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKKyAgICAgIGJyZWFrOwor CisgICAgY2FzZSBTSU1fQ1IxNl9JU1BfUkVHTlVNOgorICAgIGNhc2UgU0lN X0NSMTZfVVNQX1JFR05VTToKKyAgICBjYXNlIFNJTV9DUjE2X0lOVEJBU0Vf UkVHTlVNOgorICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCkt PmJ1aWx0aW5faW50MzI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU0lN X0NSMTZfUFNSX1JFR05VTToKKyAgICBjYXNlIFNJTV9DUjE2X0NGR19SRUdO VU06CisgICAgICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl91aW50MzI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgU0lNX0NS MTZfUjBfUkVHTlVNOgorICAgIGNhc2UgU0lNX0NSMTZfUjFfUkVHTlVNOgor ICAgIGNhc2UgU0lNX0NSMTZfUjJfUkVHTlVNOgorICAgIGNhc2UgU0lNX0NS MTZfUjNfUkVHTlVNOgorICAgIGNhc2UgU0lNX0NSMTZfUjRfUkVHTlVNOgor ICAgIGNhc2UgU0lNX0NSMTZfUjVfUkVHTlVNOgorICAgIGNhc2UgU0lNX0NS MTZfUjZfUkVHTlVNOgorICAgIGNhc2UgU0lNX0NSMTZfUjdfUkVHTlVNOgor ICAgIGNhc2UgU0lNX0NSMTZfUjhfUkVHTlVNOgorICAgIGNhc2UgU0lNX0NS MTZfUjlfUkVHTlVNOgorICAgIGNhc2UgU0lNX0NSMTZfUjEwX1JFR05VTToK KyAgICBjYXNlIFNJTV9DUjE2X1IxMV9SRUdOVU06CisgICAgICByZXR1cm4g YnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9pbnQxNjsKKyAgICAg IGJyZWFrOworCisgICAgY2FzZSBTSU1fQ1IxNl9SMTJfUkVHTlVNOgorICAg ICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50 MzI7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBwcmlu dGYKKwkoIlxuUmVnaXN0ZXIgVHlwZSBub3Qgc3VwcG9ydGVkXG5GdW5jdGlv biA6IGNyMTZfcmVnaXN0ZXJfdHlwZVxuIik7CisgICAgICByZXR1cm4gMDsK KyAgICAgIGJyZWFrOworICAgIH0KK30KKworLyogRnVuY3Rpb24gZm9yIGZp bmRpbmcgc2F2ZWQgcmVnaXN0ZXJzIGluIGEgJ3N0cnVjdCBwdl9hcmVhJzsg dGhpcworICAgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIHB2X2FyZWFfc2Nhbi4K KyAKKyAgIElmIFZBTFVFIGlzIGEgc2F2ZWQgcmVnaXN0ZXIsIEFERFIgc2F5 cyBpdCB3YXMgc2F2ZWQgYXQgYSBjb25zdGFudAorICAgb2Zmc2V0IGZyb20g dGhlIGZyYW1lIGJhc2UsIGFuZCBTSVpFIGluZGljYXRlcyB0aGF0IHRoZSB3 aG9sZQorICAgcmVnaXN0ZXIgd2FzIHNhdmVkLCByZWNvcmQgaXRzIG9mZnNl dC4gICovCitzdGF0aWMgdm9pZAorY2hlY2tfZm9yX3NhdmVkICh2b2lkICpy ZXN1bHRfdW50eXBlZCwgcHZfdCBhZGRyLCBDT1JFX0FERFIgc2l6ZSwgcHZf dCB2YWx1ZSkKK3sKKyAgc3RydWN0IGNyMTZfcHJvbG9ndWUgKnJlc3VsdCA9 IChzdHJ1Y3QgY3IxNl9wcm9sb2d1ZSAqKSByZXN1bHRfdW50eXBlZDsKKwor ICBpZiAodmFsdWUua2luZCA9PSBwdmtfcmVnaXN0ZXIKKyAgICAgICYmIHZh bHVlLmsgPT0gMAorICAgICAgJiYgcHZfaXNfcmVnaXN0ZXIgKGFkZHIsIENS MTZfU1BfUkVHTlVNKQorICAgICAgJiYgc2l6ZSA9PSByZWdpc3Rlcl9zaXpl ICh0YXJnZXRfZ2RiYXJjaCwgdmFsdWUucmVnKSkKKyAgICByZXN1bHQtPnJl Z19vZmZzZXRbdmFsdWUucmVnXSA9IGFkZHIuazsKK30KKworLyogRGVmaW5l IGEgImhhbmRsZSIgc3RydWN0IGZvciBmZXRjaGluZyB0aGUgbmV4dCBvcGNv ZGUuICAqLworc3RydWN0IGNyMTZfZ2V0X29wY29kZV9ieXRlX2hhbmRsZQor eworICBDT1JFX0FERFIgcGM7Cit9OworCisvKiBVc2UgZnVuY3Rpb25zIGZy b20gb3Bjb2Rlcy9jcjE2LWRpcy5jIGJ5IG1ha2luZyB0aGVtIG5vbi1zdGF0 aWMqLworZXh0ZXJuIHZvaWQgbWFrZV9pbnN0cnVjdGlvbiAodm9pZCk7Citl eHRlcm4gaW50IG1hdGNoX29wY29kZSAodm9pZCk7CitleHRlcm4gdm9pZCBn ZXRfd29yZHNfYXRfUEMgKGJmZF92bWEgbWVtYWRkciwgc3RydWN0IGRpc2Fz c2VtYmxlX2luZm8gKmluZm8pOworCisvKiBBbmFseXplIGEgcHJvbG9ndWUg c3RhcnRpbmcgYXQgU1RBUlRfUEMsIGdvaW5nIG5vIGZ1cnRoZXIgdGhhbgor ICAgTElNSVRfUEMuICBGaWxsIGluIFJFU1VMVCBhcyBhcHByb3ByaWF0ZS4g ICovCitzdGF0aWMgdm9pZAorY3IxNl9hbmFseXplX3Byb2xvZ3VlIChDT1JF X0FERFIgc3RhcnRfcGMsCisJCSAgICAgICBDT1JFX0FERFIgbGltaXRfcGMs IHN0cnVjdCBjcjE2X3Byb2xvZ3VlICpyZXN1bHQpCit7CisgIENPUkVfQURE UiBwYywgbmV4dF9wYzsKKyAgZ2RiX2J5dGUgYnVmWzZdOworICBjaGFyIGlu c25fYnl0ZTEsIGluc25fYnl0ZTI7CisgIGludCBybjsKKyAgaW50IGxlbmd0 aDsKKyAgcHZfdCByZWdbQ1IxNl9OVU1fUkVHU107CisgIHN0cnVjdCBwdl9h cmVhICpzdGFjazsKKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisgIENP UkVfQUREUiBhZnRlcl9sYXN0X2ZyYW1lX3NldHVwX2luc24gPSBzdGFydF9w YzsKKyAgaW50IGlzX2RlY29kZWQ7ICAgICAgICAgICAgICAgLyogTm9uemVy byBtZWFucyBpbnN0cnVjdGlvbiBoYXMgYSBtYXRjaC4gICovCisKKyAgbWVt c2V0IChyZXN1bHQsIDAsIHNpemVvZiAoKnJlc3VsdCkpOworCisgIGZvciAo cm4gPSAwOyBybiA8IENSMTZfTlVNX1JFR1M7IHJuKyspCisgICAgeworICAg ICAgcmVnW3JuXSA9IHB2X3JlZ2lzdGVyIChybiwgMCk7CisgICAgICByZXN1 bHQtPnJlZ19vZmZzZXRbcm5dID0gMTsKKyAgICB9CisKKyAgc3RhY2sgPSBt YWtlX3B2X2FyZWEgKENSMTZfU1BfUkVHTlVNLCBnZGJhcmNoX2FkZHJfYml0 ICh0YXJnZXRfZ2RiYXJjaCkpOworICBiYWNrX3RvID0gbWFrZV9jbGVhbnVw X2ZyZWVfcHZfYXJlYSAoc3RhY2spOworCisgIHBjID0gc3RhcnRfcGM7Cisg IHdoaWxlIChwYyA8IGxpbWl0X3BjKQorICAgIHsKKyAgICAgIHRhcmdldF9y ZWFkX21lbW9yeSAocGMsIGJ1ZiwgNik7CS8vIHJlYWQgNiBieXRlcywgbWF4 IDQ4IGJpdCBvcGNvZGUKKyAgICAgIHdvcmRzWzBdID0gYnVmWzFdIDw8IDgg fCBidWZbMF07CisgICAgICB3b3Jkc1sxXSA9IGJ1ZlszXSA8PCA4IHwgYnVm WzJdOworICAgICAgd29yZHNbMl0gPSBidWZbNV0gPDwgOCB8IGJ1Zls0XTsK KyAgICAgIGFsbFdvcmRzID0KKwkoKFVMT05HTE9ORykgd29yZHNbMF0gPDwg MzIpICsgKCh1bnNpZ25lZCBsb25nKSB3b3Jkc1sxXSA8PCAxNikgKworCXdv cmRzWzJdOworCisgICAgICAvKiBGaW5kIGEgbWF0Y2hpbmcgb3Bjb2RlIGlu IHRhYmxlLiAgKi8KKyAgICAgIGlzX2RlY29kZWQgPSBtYXRjaF9vcGNvZGUg KCk7CisgICAgICBtYWtlX2luc3RydWN0aW9uICgpOworICAgICAgbGVuZ3Ro ID0gY3Vyckluc24uc2l6ZTsKKyAgICAgIG5leHRfcGMgPSBwYyArIGxlbmd0 aDsKKyAgICAgIGluc25fYnl0ZTEgPSAod29yZHNbMF0gPj4gOCkgJiAweEZG OworCisgICAgICBpZiAoaW5zbl9ieXRlMSA9PSAweDAxKQkvLyBQVVNICisJ eworCSAgaW50IHIxLCByMjsKKwkgIGludCByOworCSAgaW5zbl9ieXRlMiA9 IHdvcmRzWzBdOworCisJICBpZiAoaW5zbl9ieXRlMiAmIDB4ODApCS8vIFNh dmUgUkEgcmVnCisJICAgIHsKKwkgICAgICByZWdbQ1IxNl9TUF9SRUdOVU1d ID0gcHZfYWRkX2NvbnN0YW50IChyZWdbQ1IxNl9TUF9SRUdOVU1dLCAtNCk7 CisJICAgICAgcHZfYXJlYV9zdG9yZSAoc3RhY2ssIHJlZ1tDUjE2X1NQX1JF R05VTV0sIDQsCisJCQkgICAgIHJlZ1tDUjE2X1JBX1JFR05VTV0pOworCSAg ICB9CisKKwkgIHIxID0gaW5zbl9ieXRlMiAmIDB4MEY7CS8vIFN0YXJ0IFJl Z2lzdGVyCisJICByMiA9ICgoaW5zbl9ieXRlMiAmIDB4NzApID4+IDQpOwkv LzMgYml0IGltbSBjb3VudAorCSAgcjIgPSByMiArIHIxICsgMTsJLy8gMyBi aXQgY291bnQgaXMgMSB0byA4CisKKwkgIGZvciAociA9IHIxOyByIDwgcjI7 IHIrKykKKwkgICAgeworCSAgICAgIGlmIChyID49IENSMTZfUjEyX1JFR05V TSkKKwkJeworCQkgIHJlZ1tDUjE2X1NQX1JFR05VTV0gPQorCQkgICAgcHZf YWRkX2NvbnN0YW50IChyZWdbQ1IxNl9TUF9SRUdOVU1dLCAtNCk7CisJCSAg cHZfYXJlYV9zdG9yZSAoc3RhY2ssIHJlZ1tDUjE2X1NQX1JFR05VTV0sIDQs IHJlZ1tyXSk7CisJCSAgcisrOworCQl9CisJICAgICAgZWxzZQorCQl7CisJ CSAgcmVnW0NSMTZfU1BfUkVHTlVNXSA9CisJCSAgICBwdl9hZGRfY29uc3Rh bnQgKHJlZ1tDUjE2X1NQX1JFR05VTV0sIC0yKTsKKwkJICBwdl9hcmVhX3N0 b3JlIChzdGFjaywgcmVnW0NSMTZfU1BfUkVHTlVNXSwgMiwgcmVnW3JdKTsK KwkJfQorCSAgICB9CisJICBhZnRlcl9sYXN0X2ZyYW1lX3NldHVwX2luc24g PSBuZXh0X3BjOworCX0KKworICAgICAgZWxzZSBpZiAoaW5zbl9ieXRlMSA9 PSAweDYwKQkvLyBBZGQgY29uc3RhbnQgdG8gU1AKKwl7CisJICBpbnQgcmRz dDsKKwkgIHNpZ25lZCBzaG9ydCBhZGRlbmQ7CisJICBpbnNuX2J5dGUyID0g d29yZHNbMF07CisJICByZHN0ID0gaW5zbl9ieXRlMiAmIDB4MEY7CS8vIG1h c2sgdXBwZXIgbmliYmxlIAorCSAgaWYgKHJkc3QgPT0gQ1IxNl9TUF9SRUdO VU0pCS8vIGFkZGluZyB0byBTUD8KKwkgICAgeworCSAgICAgIGlmIChsZW5n dGggPT0gMikKKwkJeworCQkgIGFkZGVuZCA9IChpbnNuX2J5dGUyICYgMHhG MCkgPj4gNDsJLy8gdXNlIHVwcGVyIG5pYmJsZQorCQkgIHJlZ1tyZHN0XSA9 IHB2X2FkZF9jb25zdGFudCAocmVnW3Jkc3RdLCBhZGRlbmQpOworCQl9CisJ ICAgICAgaWYgKGxlbmd0aCA9PSA0KQorCQl7CisJCSAgYWRkZW5kID0gd29y ZHNbMV07CisJCSAgcmVnW3Jkc3RdID0gcHZfYWRkX2NvbnN0YW50IChyZWdb cmRzdF0sIGFkZGVuZCk7CisJCX0KKwkgICAgICBhZnRlcl9sYXN0X2ZyYW1l X3NldHVwX2luc24gPSBuZXh0X3BjOworCSAgICB9CisJfQorICAgICAgZWxz ZSBpZiAoaW5zbl9ieXRlMSA9PSAweDU1KQkvLyBNT1ZECisJeworCSAgaW50 IHJkc3QsIHJzcmM7CisJICBpbnNuX2J5dGUyID0gd29yZHNbMF07CisJICBy c3JjID0gKGluc25fYnl0ZTIgJiAweEYwKSA+PiA0OworCSAgcmRzdCA9IChp bnNuX2J5dGUyICYgMHgwRik7CisJICByZWdbcmRzdF0gPSByZWdbcnNyY107 CisJICBpZiAocnNyYyA9PSBDUjE2X1NQX1JFR05VTSAmJiByZHN0ID09IENS MTZfRlBfUkVHTlVNKQorCSAgICBhZnRlcl9sYXN0X2ZyYW1lX3NldHVwX2lu c24gPSBuZXh0X3BjOworCX0KKyAgICAgIGVsc2UgaWYgKCgoaW5zbl9ieXRl MSA+PiA0KSAmIDB4MEYpID09IDB4ZCkJLy8gbWFzayBvZiBsb3dlciBuaWJi bGUKKwl7CisJICAvKiBUaGlzIG1vdmVzIGFuIGFyZ3VtZW50IHJlZ2lzdGVy IHRvIHRoZSBzdGFjay4gIERvbid0CisJICAgICByZWNvcmQgaXQsIGJ1dCBh bGxvdyBpdCB0byBiZSBhIHBhcnQgb2YgdGhlIHByb2xvZ3VlLiAgKi8KKwkg IGFmdGVyX2xhc3RfZnJhbWVfc2V0dXBfaW5zbiA9IG5leHRfcGM7CisJfQor ICAgICAgZWxzZQorCXsKKwkgIGJyZWFrOwkJLyogVGVybWluYXRlIHRoZSBw cm9sb2d1ZSBzY2FuLiAgKi8KKwl9CisKKyAgICAgIHBjID0gbmV4dF9wYzsK KyAgICB9CisKKyAgLyogSXMgdGhlIGZyYW1lIHNpemUgKG9mZnNldCwgcmVh bGx5KSBhIGtub3duIGNvbnN0YW50PyAgKi8KKyAgaWYgKHB2X2lzX3JlZ2lz dGVyIChyZWdbQ1IxNl9TUF9SRUdOVU1dLCBDUjE2X1NQX1JFR05VTSkpCisg ICAgcmVzdWx0LT5mcmFtZV9zaXplID0gcmVnW0NSMTZfU1BfUkVHTlVNXS5r OworCisgIC8qIFdhcyB0aGUgZnJhbWUgcG9pbnRlciBpbml0aWFsaXplZD8g ICovCisgIGlmIChwdl9pc19yZWdpc3RlciAocmVnW0NSMTZfRlBfUkVHTlVN XSwgQ1IxNl9TUF9SRUdOVU0pKQorICAgIHsKKyAgICAgIHJlc3VsdC0+aGFz X2ZyYW1lX3B0ciA9IDE7CisgICAgICByZXN1bHQtPmZyYW1lX3B0cl9vZmZz ZXQgPSByZWdbQ1IxNl9GUF9SRUdOVU1dLms7CisgICAgfQorCisgIC8qIFJl Y29yZCB3aGVyZSBhbGwgdGhlIHJlZ2lzdGVycyB3ZXJlIHNhdmVkLiAgKi8K KyAgcHZfYXJlYV9zY2FuIChzdGFjaywgY2hlY2tfZm9yX3NhdmVkLCAodm9p ZCAqKSByZXN1bHQpOworCisgIHJlc3VsdC0+cHJvbG9ndWVfZW5kID0gYWZ0 ZXJfbGFzdF9mcmFtZV9zZXR1cF9pbnNuOworICBkb19jbGVhbnVwcyAoYmFj a190byk7Cit9CisKKworLyogSW1wbGVtZW50IHRoZSAic2tpcF9wcm9sb2d1 ZSIgZ2RiYXJjaCBtZXRob2QuICAqLworc3RhdGljIENPUkVfQUREUgorY3Ix Nl9za2lwX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09S RV9BRERSIHBjKQoreworICBjb25zdCBjaGFyICpuYW1lOworICBDT1JFX0FE RFIgZnVuY19hZGRyLCBmdW5jX2VuZDsKKyAgc3RydWN0IGNyMTZfcHJvbG9n dWUgcDsKKworICAvKiBUcnkgdG8gZmluZCB0aGUgZXh0ZW50IG9mIHRoZSBm dW5jdGlvbiB0aGF0IGNvbnRhaW5zIFBDLiAgKi8KKyAgaWYgKCFmaW5kX3Bj X3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgJmZ1bmNfYWRkciwgJmZ1 bmNfZW5kKSkKKyAgICByZXR1cm4gcGM7CisKKyAgY3IxNl9hbmFseXplX3By b2xvZ3VlIChwYywgZnVuY19lbmQsICZwKTsKKyAgcmV0dXJuIHAucHJvbG9n dWVfZW5kOworfQorCisvKiBHaXZlbiBhIGZyYW1lIGRlc2NyaWJlZCBieSBU SElTX0ZSQU1FLCBkZWNvZGUgdGhlIHByb2xvZ3VlIG9mIGl0cworICAgYXNz b2NpYXRlZCBmdW5jdGlvbiBpZiB0aGVyZSBpcyBub3QgY2FjaGUgZW50cnkg YXMgc3BlY2lmaWVkIGJ5CisgICBUSElTX1BST0xPR1VFX0NBQ0hFLiAgU2F2 ZSB0aGUgZGVjb2RlZCBwcm9sb2d1ZSBpbiB0aGUgY2FjaGUgYW5kCisgICBy ZXR1cm4gdGhhdCBzdHJ1Y3QgYXMgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rp b24uICAqLworc3RhdGljIHN0cnVjdCBjcjE2X3Byb2xvZ3VlICoKK2NyMTZf YW5hbHl6ZV9mcmFtZV9wcm9sb2d1ZSAoc3RydWN0IGZyYW1lX2luZm8gKnRo aXNfZnJhbWUsCisJCQkgICAgIHZvaWQgKip0aGlzX3Byb2xvZ3VlX2NhY2hl KQoreworICBpZiAoISp0aGlzX3Byb2xvZ3VlX2NhY2hlKQorICAgIHsKKyAg ICAgIENPUkVfQUREUiBmdW5jX3N0YXJ0LCBzdG9wX2FkZHI7CisKKyAgICAg ICp0aGlzX3Byb2xvZ3VlX2NhY2hlID0gRlJBTUVfT0JTVEFDS19aQUxMT0Mg KHN0cnVjdCBjcjE2X3Byb2xvZ3VlKTsKKworICAgICAgZnVuY19zdGFydCA9 IGdldF9mcmFtZV9mdW5jICh0aGlzX2ZyYW1lKTsKKyAgICAgIHN0b3BfYWRk ciA9IGdldF9mcmFtZV9wYyAodGhpc19mcmFtZSk7CisKKyAgICAgIC8qIElm IHdlIGNvdWxkbid0IGZpbmQgYW55IGZ1bmN0aW9uIGNvbnRhaW5pbmcgdGhl IFBDLCB0aGVuCisgICAgICAgICBqdXN0IGluaXRpYWxpemUgdGhlIHByb2xv Z3VlIGNhY2hlLCBidXQgZG9uJ3QgZG8gYW55dGhpbmcuICAqLworICAgICAg aWYgKCFmdW5jX3N0YXJ0KQorCXN0b3BfYWRkciA9IGZ1bmNfc3RhcnQ7CisK KyAgICAgIGNyMTZfYW5hbHl6ZV9wcm9sb2d1ZSAoZnVuY19zdGFydCwgc3Rv cF9hZGRyLCAqdGhpc19wcm9sb2d1ZV9jYWNoZSk7CisgICAgfQorCisgIHJl dHVybiAqdGhpc19wcm9sb2d1ZV9jYWNoZTsKK30KKworLyogR2l2ZW4gdGhl IG5leHQgZnJhbWUgYW5kIGEgcHJvbG9ndWUgY2FjaGUsIHJldHVybiB0aGlz IGZyYW1lJ3MKKyAgIGJhc2UuICAqLworc3RhdGljIENPUkVfQUREUgorY3Ix Nl9mcmFtZV9iYXNlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwg dm9pZCAqKnRoaXNfcHJvbG9ndWVfY2FjaGUpCit7CisgIHN0cnVjdCBjcjE2 X3Byb2xvZ3VlICpwCisgICAgPSBjcjE2X2FuYWx5emVfZnJhbWVfcHJvbG9n dWUgKHRoaXNfZnJhbWUsIHRoaXNfcHJvbG9ndWVfY2FjaGUpOworCisgIC8q IEluIGZ1bmN0aW9ucyB0aGF0IHVzZSBhbGxvY2EsIHRoZSBkaXN0YW5jZSBi ZXR3ZWVuIHRoZSBzdGFjaworICAgICBwb2ludGVyIGFuZCB0aGUgZnJhbWUg YmFzZSB2YXJpZXMgZHluYW1pY2FsbHksIHNvIHdlIGNhbid0IHVzZQorICAg ICB0aGUgU1AgcGx1cyBzdGF0aWMgaW5mb3JtYXRpb24gbGlrZSBwcm9sb2d1 ZSBhbmFseXNpcyB0byBmaW5kIHRoZQorICAgICBmcmFtZSBiYXNlLiAgSG93 ZXZlciwgc3VjaCBmdW5jdGlvbnMgbXVzdCBoYXZlIGEgZnJhbWUgcG9pbnRl ciwKKyAgICAgdG8gYmUgYWJsZSB0byByZXN0b3JlIHRoZSBTUCBvbiBleGl0 LiAgU28gd2hlbmV2ZXIgd2UgZG8gaGF2ZSBhCisgICAgIGZyYW1lIHBvaW50 ZXIsIHVzZSB0aGF0IHRvIGZpbmQgdGhlIGJhc2UuICAqLworICBpZiAocC0+ aGFzX2ZyYW1lX3B0cikKKyAgICB7CisgICAgICBDT1JFX0FERFIgZnAgPSBn ZXRfZnJhbWVfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUsIENSMTZf RlBfUkVHTlVNKTsKKyAgICAgIHJldHVybiBmcCAtIHAtPmZyYW1lX3B0cl9v ZmZzZXQ7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgQ09SRV9BRERS IHNwID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1l LCBDUjE2X1NQX1JFR05VTSk7CisgICAgICByZXR1cm4gc3AgLSBwLT5mcmFt ZV9zaXplOworICAgIH0KK30KKworLyogSW1wbGVtZW50IHRoZSAiZnJhbWVf dGhpc19pZCIgbWV0aG9kIGZvciB1bndpbmRpbmcgZnJhbWVzLiAgKi8KK3N0 YXRpYyB2b2lkCitjcjE2X2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9p bmZvICp0aGlzX2ZyYW1lLAorCQkgICAgdm9pZCAqKnRoaXNfcHJvbG9ndWVf Y2FjaGUsIHN0cnVjdCBmcmFtZV9pZCAqdGhpc19pZCkKK3sKKyAgKnRoaXNf aWQgPQorICAgIGZyYW1lX2lkX2J1aWxkIChjcjE2X2ZyYW1lX2Jhc2UgKHRo aXNfZnJhbWUsIHRoaXNfcHJvbG9ndWVfY2FjaGUpLAorCQkgICAgZ2V0X2Zy YW1lX2Z1bmMgKHRoaXNfZnJhbWUpKTsKK30KKworc3RhdGljIHN0cnVjdCB2 YWx1ZSAqCitjcjE2X2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFt ZV9pbmZvICp0aGlzX2ZyYW1lLAorCQkJICB2b2lkICoqdGhpc19wcm9sb2d1 ZV9jYWNoZSwgaW50IHJlZ251bSkKK3sKKyAgc3RydWN0IGNyMTZfcHJvbG9n dWUgKnAgPQorICAgIGNyMTZfYW5hbHl6ZV9mcmFtZV9wcm9sb2d1ZSAodGhp c19mcmFtZSwgdGhpc19wcm9sb2d1ZV9jYWNoZSk7CisgIENPUkVfQUREUiBm cmFtZV9iYXNlID0gY3IxNl9mcmFtZV9iYXNlICh0aGlzX2ZyYW1lLCB0aGlz X3Byb2xvZ3VlX2NhY2hlKTsKKyAgaW50IHJlZ19zaXplID0gcmVnaXN0ZXJf c2l6ZSAoZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpLCByZWdudW0pOwor ICBVTE9OR0VTVCByYV9wcmV2OworCisgIGlmIChyZWdudW0gPT0gQ1IxNl9T UF9SRUdOVU0pCisgICAgcmV0dXJuIGZyYW1lX3Vud2luZF9nb3RfY29uc3Rh bnQgKHRoaXNfZnJhbWUsIHJlZ251bSwgZnJhbWVfYmFzZSk7CisKKyAgLyog VGhlIGNhbGwgaW5zdHJ1Y3Rpb24gaGFzIHNhdmVkIHRoZSByZXR1cm4gYWRk cmVzcyBvbiB0aGUgUkEgcmVnaXN0ZXIsCisgICAgIENSMTZfUjEzX1JFR05V TS4gU28sIHdlIG5lZWQgbm90IGFkanVzdCBhbnl0aGluZyBkaXJlY3RseS4g V2Ugd2lsbCAKKyAgICAgYW5hbHl6ZSBwcm9sb2d1ZSBhcyB0aGlzIFJBIHJl Z2lzdGVyIGlzIHB1c2hlZCBvbnRvIHN0YWNrIGZvciBmdXJ0aGVyCisgICAg IGxlYWYgZnVuY3Rpb24gY2FsbHMgdG8gd29yayAqLworICBlbHNlIGlmIChy ZWdudW0gPT0gQ1IxNl9QQ19SRUdOVU0pCisgICAgeworICAgICAgcmFfcHJl diA9IGZyYW1lX3Vud2luZF9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFt ZSwgQ1IxNl9SQV9SRUdOVU0pOworICAgICAgcmFfcHJldiA9IHJhX3ByZXYg PDwgMTsKKyAgICAgIHJldHVybiBmcmFtZV91bndpbmRfZ290X2NvbnN0YW50 ICh0aGlzX2ZyYW1lLCBDUjE2X1BDX1JFR05VTSwgcmFfcHJldik7CisgICAg fQorCisgIC8qIElmIHByb2xvZ3VlIGFuYWx5c2lzIHNheXMgd2Ugc2F2ZWQg dGhpcyByZWdpc3RlciBzb21ld2hlcmUsCisgICAgIHJldHVybiBhIGRlc2Ny aXB0aW9uIG9mIHRoZSBzdGFjayBzbG90IGhvbGRpbmcgaXQuICAqLworICBl bHNlIGlmIChwLT5yZWdfb2Zmc2V0W3JlZ251bV0gIT0gMSkKKyAgICB7Cisg ICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9tZW1vcnkgKHRoaXNfZnJh bWUsIHJlZ251bSwKKwkJCQkgICAgICBmcmFtZV9iYXNlICsgcC0+cmVnX29m ZnNldFtyZWdudW1dKTsKKyAgICB9CisKKyAgLyogT3RoZXJ3aXNlLCBwcmVz dW1lIHdlIGhhdmVuJ3QgY2hhbmdlZCB0aGUgdmFsdWUgb2YgdGhpcworICAg ICByZWdpc3RlciwgYW5kIGdldCBpdCBmcm9tIHRoZSBuZXh0IGZyYW1lLiAg Ki8KKyAgZWxzZQorICAgIHsKKyAgICAgIHJldHVybiBmcmFtZV91bndpbmRf Z290X3JlZ2lzdGVyICh0aGlzX2ZyYW1lLCByZWdudW0sIHJlZ251bSk7Cisg ICAgfQorfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCBj cjE2X2ZyYW1lX3Vud2luZCA9IHsKKyAgTk9STUFMX0ZSQU1FLAorICBkZWZh dWx0X2ZyYW1lX3Vud2luZF9zdG9wX3JlYXNvbiwKKyAgY3IxNl9mcmFtZV90 aGlzX2lkLAorICBjcjE2X2ZyYW1lX3ByZXZfcmVnaXN0ZXIsCisgIE5VTEws CisgIGRlZmF1bHRfZnJhbWVfc25pZmZlcgorfTsKKworLyogSW1wbGVtZW50 IHRoZSAidW53aW5kX3BjIiBnZGJhcmNoIG1ldGhvZC4gICovCitzdGF0aWMg Q09SRV9BRERSCitjcjE2X3Vud2luZF9wYyAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQoreworICBV TE9OR0VTVCBwYzsKKworICBwYyA9IGZyYW1lX3Vud2luZF9yZWdpc3Rlcl91 bnNpZ25lZCAodGhpc19mcmFtZSwgQ1IxNl9QQ19SRUdOVU0pOworICByZXR1 cm4gcGM7Cit9CisKKy8qIEltcGxlbWVudCB0aGUgInVud2luZF9zcCIgZ2Ri YXJjaCBtZXRob2QuICAqLworc3RhdGljIENPUkVfQUREUgorY3IxNl91bndp bmRfc3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqdGhpc19mcmFtZSkKK3sKKyAgVUxPTkdFU1Qgc3A7CisKKyAgc3Ag PSBmcmFtZV91bndpbmRfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUs IENSMTZfU1BfUkVHTlVNKTsKKyAgcmV0dXJuIHNwOworfQorCisvKiBJbXBs ZW1lbnQgdGhlICJkdW1teV9pZCIgZ2RiYXJjaCBtZXRob2QuICAqLworc3Rh dGljIHN0cnVjdCBmcmFtZV9pZAorY3IxNl9kdW1teV9pZCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1l KQoreworICByZXR1cm4KKyAgICBmcmFtZV9pZF9idWlsZCAoZ2V0X2ZyYW1l X3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBDUjE2X1NQX1JFR05V TSksCisJCSAgICBnZXRfZnJhbWVfcGMgKHRoaXNfZnJhbWUpKTsKK30KKwor LyogSW1wbGVtZW50IHRoZSAicHVzaF9kdW1teV9jYWxsIiBnZGJhcmNoIG1l dGhvZC4gICovCitzdGF0aWMgQ09SRV9BRERSCitjcjE2X3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAq ZnVuY3Rpb24sCisJCSAgICAgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IENPUkVfQUREUiBicF9hZGRyLCBpbnQgbmFyZ3MsCisJCSAgICAgIHN0cnVj dCB2YWx1ZSAqKmFyZ3MsIENPUkVfQUREUiBzcCwgaW50IHN0cnVjdF9yZXR1 cm4sCisJCSAgICAgIENPUkVfQUREUiBzdHJ1Y3RfYWRkcikKK3sKKyAgZW51 bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIg KGdkYmFyY2gpOworICBpbnQgd3JpdGVfcGFzczsKKyAgaW50IHNwX29mZiA9 IDA7CisgIENPUkVfQUREUiBjZmE7CisgIGludCBudW1fcmVnaXN0ZXJfY2Fu ZGlkYXRlX2FyZ3M7CisKKyAgc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSA9IHZh bHVlX3R5cGUgKGZ1bmN0aW9uKTsKKworICAvKiBEZXJlZmVyZW5jZSBmdW5j dGlvbiBwb2ludGVyIHR5cGVzLiAgKi8KKyAgd2hpbGUgKFRZUEVfQ09ERSAo ZnVuY190eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorICAgIGZ1bmNfdHlwZSA9 IFRZUEVfVEFSR0VUX1RZUEUgKGZ1bmNfdHlwZSk7CisKKyAgLyogVGhlIGVu ZCByZXN1bHQgaGFkIGJldHRlciBiZSBhIGZ1bmN0aW9uIG9yIGEgbWV0aG9k LiAgKi8KKyAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFIChmdW5jX3R5cGUpID09 IFRZUEVfQ09ERV9GVU5DCisJICAgICAgfHwgVFlQRV9DT0RFIChmdW5jX3R5 cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpOworCisgIC8qIEZ1bmN0aW9ucyB3 aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBoYXZlIGFsbCBv ZiB0aGVpcgorICAgICB2YXJpYWJsZSBhcmd1bWVudHMgYW5kIHRoZSBsYXN0 IG5vbi12YXJpYWJsZSBhcmd1bWVudCBwYXNzZWQKKyAgICAgb24gdGhlIHN0 YWNrLgorCisgICAgIE90aGVyd2lzZSwgd2UgY2FuIHBhc3MgdXAgdG8gZm91 ciBhcmd1bWVudHMgb24gdGhlIHN0YWNrLgorCisgICAgIE9uY2UgY29tcHV0 ZWQsIHdlIGxlYXZlIHRoaXMgdmFsdWUgYWxvbmUuICBJLmUuIHdlIGRvbid0 IHVwZGF0ZQorICAgICBpdCBpbiBjYXNlIG9mIGEgc3RydWN0IHJldHVybiBn b2luZyBpbiBhIHJlZ2lzdGVyIG9yIGFuIGFyZ3VtZW50CisgICAgIHJlcXVp cmluZyBtdWx0aXBsZSByZWdpc3RlcnMsIGV0Yy4gIFdlIHJlbHkgaW5zdGVh ZCBvbiB0aGUgdmFsdWUKKyAgICAgb2YgdGhlIGBgYXJnX3JlZycnIHZhcmlh YmxlIHRvIGdldCB0aGVzZSBvdGhlciBkZXRhaWxzIGNvcnJlY3QuICAqLwor CisgIGlmIChUWVBFX1ZBUkFSR1MgKGZ1bmNfdHlwZSkpCisgICAgbnVtX3Jl Z2lzdGVyX2NhbmRpZGF0ZV9hcmdzID0gVFlQRV9ORklFTERTIChmdW5jX3R5 cGUpIC0gMTsKKyAgZWxzZQorICAgIG51bV9yZWdpc3Rlcl9jYW5kaWRhdGVf YXJncyA9IDQ7CisKKyAgLyogV2UgbWFrZSB0d28gcGFzc2VzOyB0aGUgZmly c3QgZG9lcyB0aGUgc3RhY2sgYWxsb2NhdGlvbiwKKyAgICAgdGhlIHNlY29u ZCBhY3R1YWxseSBzdG9yZXMgdGhlIGFyZ3VtZW50cy4gICovCisgIGZvciAo d3JpdGVfcGFzcyA9IDA7IHdyaXRlX3Bhc3MgPD0gMTsgd3JpdGVfcGFzcysr KQorICAgIHsKKyAgICAgIGludCBpOworICAgICAgaW50IGFyZ19yZWcgPSBD UjE2X1IwX1JFR05VTTsKKworICAgICAgaWYgKHdyaXRlX3Bhc3MpCisJc3Ag PSBhbGlnbl9kb3duIChzcCAtIHNwX29mZiwgNCk7CisgICAgICBzcF9vZmYg PSAwOworCisgICAgICBpZiAoc3RydWN0X3JldHVybikKKwl7CisJICBzdHJ1 Y3QgdHlwZSAqcmV0dXJuX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdW5j X3R5cGUpOworCisJICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKHJldHVybl90 eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUCisJCSAgICAgIHx8IFRZUEVfQ09E RSAoZnVuY190eXBlKSA9PSBUWVBFX0NPREVfVU5JT04pOworCisJICBpZiAo VFlQRV9MRU5HVEggKHJldHVybl90eXBlKSA+IDE2CisJICAgICAgfHwgVFlQ RV9MRU5HVEggKHJldHVybl90eXBlKSAlIDQgIT0gMCkKKwkgICAgeworCSAg ICAgIGlmICh3cml0ZV9wYXNzKQorCQlyZWdjYWNoZV9jb29rZWRfd3JpdGVf dW5zaWduZWQgKHJlZ2NhY2hlLCBDUjE2X1IxMl9SRUdOVU0sCisJCQkJCQlz dHJ1Y3RfYWRkcik7CisJICAgIH0KKwl9CisKKyAgICAgIC8qIFB1c2ggdGhl IGFyZ3VtZW50cy4gICovCisgICAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7 IGkrKykKKwl7CisJICBzdHJ1Y3QgdmFsdWUgKmFyZyA9IGFyZ3NbaV07CisJ ICBjb25zdCBnZGJfYnl0ZSAqYXJnX2JpdHMgPSB2YWx1ZV9jb250ZW50c19h bGwgKGFyZyk7CisJICBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGUgPSBjaGVja190 eXBlZGVmICh2YWx1ZV90eXBlIChhcmcpKTsKKwkgIFVMT05HRVNUIGFyZ19z aXplID0gVFlQRV9MRU5HVEggKGFyZ190eXBlKTsKKworCSAgaWYgKGkgPT0g MCAmJiBzdHJ1Y3RfYWRkciAhPSAwICYmICFzdHJ1Y3RfcmV0dXJuCisJICAg ICAgJiYgVFlQRV9DT0RFIChhcmdfdHlwZSkgPT0gVFlQRV9DT0RFX1BUUgor CSAgICAgICYmIGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYXJnX2JpdHMs IDQsCisJCQkJCSAgIGJ5dGVfb3JkZXIpID09IHN0cnVjdF9hZGRyKQorCSAg ICB7CisJICAgICAgLyogVGhpcyBhcmd1bWVudCByZXByZXNlbnRzIHRoZSBh ZGRyZXNzIGF0IHdoaWNoIEMrKyAoYW5kCisJICAgICAgICAgcG9zc2libHkg b3RoZXIgbGFuZ3VhZ2VzKSBzdG9yZSB0aGVpciByZXR1cm4gdmFsdWUuCisJ ICAgICAgICAgUHV0IHRoaXMgdmFsdWUgaW4gUjE1LiAgKi8KKwkgICAgICBp ZiAod3JpdGVfcGFzcykKKwkJcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2ln bmVkIChyZWdjYWNoZSwgQ1IxNl9SMTJfUkVHTlVNLAorCQkJCQkJc3RydWN0 X2FkZHIpOworCSAgICB9CisJICBlbHNlIGlmIChUWVBFX0NPREUgKGFyZ190 eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCisJCSAgICYmIFRZUEVfQ09ERSAo YXJnX3R5cGUpICE9IFRZUEVfQ09ERV9VTklPTikKKwkgICAgeworCSAgICAg IC8qIEFyZ3VtZW50IGlzIGEgc2NhbGFyLiAgKi8KKwkgICAgICBpZiAoYXJn X3NpemUgPT0gOCkKKwkJeworCQkgIGlmIChpIDwgbnVtX3JlZ2lzdGVyX2Nh bmRpZGF0ZV9hcmdzCisJCSAgICAgICYmIGFyZ19yZWcgPD0gQ1IxNl9SN19S RUdOVU0gLSAxKQorCQkgICAgeworCQkgICAgICAvKiBJZiBhcmd1bWVudCBy ZWdpc3RlcnMgYXJlIGdvaW5nIHRvIGJlIHVzZWQgdG8gcGFzcworCQkgICAg ICAgICBhbiA4IGJ5dGUgc2NhbGFyLCB0aGUgQUJJIHNwZWNpZmllcyB0aGF0 IHR3byByZWdpc3RlcnMKKwkJICAgICAgICAgbXVzdCBiZSBhdmFpbGFibGUu ICAqLworCQkgICAgICBpZiAod3JpdGVfcGFzcykKKwkJCXsKKwkJCSAgcmVn Y2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgYXJnX3Jl ZywKKwkJCQkJCQkgIGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlcgorCQkJCQkJ CSAgKGFyZ19iaXRzLCA0LAorCQkJCQkJCSAgIGJ5dGVfb3JkZXIpKTsKKwkJ CSAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwK KwkJCQkJCQkgIGFyZ19yZWcgKyAxLAorCQkJCQkJCSAgZXh0cmFjdF91bnNp Z25lZF9pbnRlZ2VyCisJCQkJCQkJICAoYXJnX2JpdHMgKyA0LCA0LAorCQkJ CQkJCSAgIGJ5dGVfb3JkZXIpKTsKKwkJCX0KKwkJICAgICAgYXJnX3JlZyAr PSAyOworCQkgICAgfQorCQkgIGVsc2UKKwkJICAgIHsKKwkJICAgICAgc3Bf b2ZmID0gYWxpZ25fdXAgKHNwX29mZiwgNCk7CisJCSAgICAgIC8qIE90aGVy d2lzZSwgcGFzcyB0aGUgOCBieXRlIHNjYWxhciBvbiB0aGUgc3RhY2suICAq LworCQkgICAgICBpZiAod3JpdGVfcGFzcykKKwkJCXdyaXRlX21lbW9yeSAo c3AgKyBzcF9vZmYsIGFyZ19iaXRzLCA4KTsKKwkJICAgICAgc3Bfb2ZmICs9 IDg7CisJCSAgICB9CisJCX0KKwkgICAgICBlbHNlCisJCXsKKwkJICBVTE9O R0VTVCB1OworCisJCSAgZ2RiX2Fzc2VydCAoYXJnX3NpemUgPD0gNCk7CisK KwkJICB1ID0KKwkJICAgIGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYXJn X2JpdHMsIGFyZ19zaXplLCBieXRlX29yZGVyKTsKKworCQkgIGlmIChpIDwg bnVtX3JlZ2lzdGVyX2NhbmRpZGF0ZV9hcmdzCisJCSAgICAgICYmIGFyZ19y ZWcgPD0gQ1IxNl9SN19SRUdOVU0pCisJCSAgICB7CisJCSAgICAgIGlmICh3 cml0ZV9wYXNzKQorCQkJcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVk IChyZWdjYWNoZSwgYXJnX3JlZywgdSk7CisJCSAgICAgIGFyZ19yZWcgKz0g MTsKKwkJICAgIH0KKwkJICBlbHNlCisJCSAgICB7CisJCSAgICAgIGludCBw X2FyZ19zaXplID0gNDsKKworCQkgICAgICBpZiAoVFlQRV9QUk9UT1RZUEVE IChmdW5jX3R5cGUpCisJCQkgICYmIGkgPCBUWVBFX05GSUVMRFMgKGZ1bmNf dHlwZSkpCisJCQl7CisJCQkgIHN0cnVjdCB0eXBlICpwX2FyZ190eXBlID0K KwkJCSAgICBUWVBFX0ZJRUxEX1RZUEUgKGZ1bmNfdHlwZSwgaSk7CisJCQkg IHBfYXJnX3NpemUgPSBUWVBFX0xFTkdUSCAocF9hcmdfdHlwZSk7CisJCQl9 CisKKwkJICAgICAgc3Bfb2ZmID0gYWxpZ25fdXAgKHNwX29mZiwgcF9hcmdf c2l6ZSk7CisKKwkJICAgICAgaWYgKHdyaXRlX3Bhc3MpCisJCQl3cml0ZV9t ZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoc3AgKyBzcF9vZmYsCisJCQkJCQkg ICAgICAgcF9hcmdfc2l6ZSwgYnl0ZV9vcmRlciwKKwkJCQkJCSAgICAgICB1 KTsKKwkJICAgICAgc3Bfb2ZmICs9IHBfYXJnX3NpemU7CisJCSAgICB9CisJ CX0KKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgLyogQXJndW1l bnQgaXMgYSBzdHJ1Y3Qgb3IgdW5pb24uICBQYXNzIGFzIG11Y2ggb2YgdGhl IHN0cnVjdAorCSAgICAgICAgIGluIHJlZ2lzdGVycywgaWYgcG9zc2libGUu ICBQYXNzIHRoZSByZXN0IG9uIHRoZSBzdGFjay4gICovCisJICAgICAgd2hp bGUgKGFyZ19zaXplID4gMCkKKwkJeworCQkgIGlmIChpIDwgbnVtX3JlZ2lz dGVyX2NhbmRpZGF0ZV9hcmdzCisJCSAgICAgICYmIGFyZ19yZWcgPD0gQ1Ix Nl9SN19SRUdOVU0KKwkJICAgICAgJiYgYXJnX3NpemUgPD0gNCAqIChDUjE2 X1I3X1JFR05VTSAtIGFyZ19yZWcgKyAxKQorCQkgICAgICAmJiBhcmdfc2l6 ZSAlIDQgPT0gMCkKKwkJICAgIHsKKwkJICAgICAgaW50IGxlbiA9IG1pbiAo YXJnX3NpemUsIDQpOworCisJCSAgICAgIGlmICh3cml0ZV9wYXNzKQorCQkJ cmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgYXJn X3JlZywKKwkJCQkJCQlleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIKKwkJCQkJ CQkoYXJnX2JpdHMsIGxlbiwKKwkJCQkJCQkgYnl0ZV9vcmRlcikpOworCQkg ICAgICBhcmdfYml0cyArPSBsZW47CisJCSAgICAgIGFyZ19zaXplIC09IGxl bjsKKwkJICAgICAgYXJnX3JlZysrOworCQkgICAgfQorCQkgIGVsc2UKKwkJ ICAgIHsKKwkJICAgICAgc3Bfb2ZmID0gYWxpZ25fdXAgKHNwX29mZiwgNCk7 CisJCSAgICAgIGlmICh3cml0ZV9wYXNzKQorCQkJd3JpdGVfbWVtb3J5IChz cCArIHNwX29mZiwgYXJnX2JpdHMsIGFyZ19zaXplKTsKKwkJICAgICAgc3Bf b2ZmICs9IGFsaWduX3VwIChhcmdfc2l6ZSwgNCk7CisJCSAgICAgIGFyZ19z aXplID0gMDsKKwkJICAgIH0KKwkJfQorCSAgICB9CisJfQorICAgIH0KKwor ICAvKiBLZWVwIHRyYWNrIG9mIHRoZSBzdGFjayBhZGRyZXNzIHByaW9yIHRv IHB1c2hpbmcgdGhlIHJldHVybiBhZGRyZXNzLgorICAgICBUaGlzIGlzIHRo ZSB2YWx1ZSB0aGF0IHdlJ2xsIHJldHVybi4gICovCisgIGNmYSA9IHNwOwor CisgIC8qIFB1c2ggdGhlIHJldHVybiBhZGRyZXNzLiAgKi8KKyAgc3AgPSBz cCAtIDQ7CisgIHdyaXRlX21lbW9yeV91bnNpZ25lZF9pbnRlZ2VyIChzcCwg NCwgYnl0ZV9vcmRlciwgYnBfYWRkcik7CisKKyAgLyogVXBkYXRlIHRoZSBz dGFjayBwb2ludGVyLiAgKi8KKyAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vu c2lnbmVkIChyZWdjYWNoZSwgQ1IxNl9TUF9SRUdOVU0sIHNwKTsKKworICBy ZXR1cm4gY2ZhOworfQorCisvKiBJbXBsZW1lbnQgdGhlICJyZXR1cm5fdmFs dWUiIGdkYmFyY2ggbWV0aG9kLiAgKi8KK3N0YXRpYyBlbnVtIHJldHVybl92 YWx1ZV9jb252ZW50aW9uCitjcjE2X3JldHVybl92YWx1ZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCisJCSAgIHN0cnVjdCB0eXBlICpmdW5jX3R5cGUs CisJCSAgIHN0cnVjdCB0eXBlICp2YWx0eXBlLAorCQkgICBzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLAorCQkgICBnZGJfYnl0ZSAqIHJlYWRidWYsIGNv bnN0IGdkYl9ieXRlICogd3JpdGVidWYpCit7CisgIGVudW0gYmZkX2VuZGlh biBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsK KyAgVUxPTkdFU1QgdmFsdHlwZV9sZW4gPSBUWVBFX0xFTkdUSCAodmFsdHlw ZSk7CisKKyAgaWYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA+IDE2CisgICAg ICB8fCAoKFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVD VAorCSAgIHx8IFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX1VO SU9OKQorCSAgJiYgVFlQRV9MRU5HVEggKHZhbHR5cGUpICUgNCAhPSAwKSkK KyAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1NUUlVDVF9DT05WRU5USU9OOwor CisgIGlmIChyZWFkYnVmKQorICAgIHsKKyAgICAgIFVMT05HRVNUIHU7Cisg ICAgICBpbnQgYXJncmVnID0gQ1IxNl9SMF9SRUdOVU07CisgICAgICBpbnQg b2Zmc2V0ID0gMDsKKworICAgICAgd2hpbGUgKHZhbHR5cGVfbGVuID4gMCkK Kwl7CisJICBpbnQgbGVuID0gbWluICh2YWx0eXBlX2xlbiwgNCk7CisKKwkg IHJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3Vuc2lnbmVkIChyZWdjYWNoZSwgYXJn cmVnLCAmdSk7CisJICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChyZWFkYnVm ICsgb2Zmc2V0LCBsZW4sIGJ5dGVfb3JkZXIsIHUpOworCSAgdmFsdHlwZV9s ZW4gLT0gbGVuOworCSAgb2Zmc2V0ICs9IGxlbjsKKwkgIGFyZ3JlZysrOwor CX0KKyAgICB9CisKKyAgaWYgKHdyaXRlYnVmKQorICAgIHsKKyAgICAgIFVM T05HRVNUIHU7CisgICAgICBpbnQgYXJncmVnID0gQ1IxNl9SMF9SRUdOVU07 CisgICAgICBpbnQgb2Zmc2V0ID0gMDsKKworICAgICAgd2hpbGUgKHZhbHR5 cGVfbGVuID4gMCkKKwl7CisJICBpbnQgbGVuID0gbWluICh2YWx0eXBlX2xl biwgNCk7CisKKwkgIHUgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKHdy aXRlYnVmICsgb2Zmc2V0LCBsZW4sIGJ5dGVfb3JkZXIpOworCSAgcmVnY2Fj aGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgYXJncmVnLCB1 KTsKKwkgIHZhbHR5cGVfbGVuIC09IGxlbjsKKwkgIG9mZnNldCArPSBsZW47 CisJICBhcmdyZWcrKzsKKwl9CisgICAgfQorCisgIHJldHVybiBSRVRVUk5f VkFMVUVfUkVHSVNURVJfQ09OVkVOVElPTjsKK30KKworLyogSW1wbGVtZW50 IHRoZSAiYnJlYWtwb2ludF9mcm9tX3BjIiBnZGJhcmNoIG1ldGhvZC4gICov CitzdGF0aWMgY29uc3QgZ2RiX2J5dGUgKgorY3IxNl9icmVha3BvaW50X2Zy b21fcGMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgKiBw Y3B0ciwKKwkJCSBpbnQgKmxlbnB0cikKK3sKKyAgLyogV2UgdXNlIGRpZmZl cmVudCBicmVha3BvaW50IGluc3RydWN0aW9ucyBmb3IgRUxGIGFuZCB1Q2xp bnV4LgorICAgICBTZWUgY3IxNi1saW51eC10ZGVwLmMgZm9yIG1vcmUgZGV0 YWlscy4gCisgICovCisgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBn ZGJhcmNoX3RkZXAgKGdkYmFyY2gpOworICAqbGVucHRyID0gMjsKKyAgaWYg KHRkZXAgPT0gTlVMTCB8fCB0ZGVwLT5icmVha3BvaW50ID09IE5VTEwpCisg ICAgeworICAgICAgICByZXR1cm4gIGJyZWFrcG9pbnRfZWxmOworICAgIH0K KyAgcmV0dXJuIHRkZXAtPmJyZWFrcG9pbnQ7Cit9CisKKworCisvKiBBbGxv Y2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIGdkYmFyY2ggb2JqZWN0LiAgKi8KK3N0 YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCitjcjE2X2dkYmFyY2hfaW5pdCAoc3Ry dWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICph cmNoZXMpCit7CisgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworICBzdHJ1 Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwOworICBpbnQgZWxmX2ZsYWdzOworCisg IC8qIEV4dHJhY3QgdGhlIGVsZl9mbGFncyBpZiBhdmFpbGFibGUuICAqLwor ICBpZiAoaW5mby5hYmZkICE9IE5VTEwKKyAgICAgICYmIGJmZF9nZXRfZmxh dm91ciAoaW5mby5hYmZkKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQor ICAgIGVsZl9mbGFncyA9IGVsZl9lbGZoZWFkZXIgKGluZm8uYWJmZCktPmVf ZmxhZ3M7CisgIGVsc2UKKyAgICBlbGZfZmxhZ3MgPSAwOworCisgIC8qIFRy eSB0byBmaW5kIHRoZSBhcmNoaXRlY3R1cmUgaW4gdGhlIGxpc3Qgb2YgYWxy ZWFkeSBkZWZpbmVkCisgICAgIGFyY2hpdGVjdHVyZXMuICAqLworICBmb3Ig KGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJjaGVz LCAmaW5mbyk7CisgICAgICAgYXJjaGVzICE9IE5VTEw7CisgICAgICAgYXJj aGVzID0gZ2RiYXJjaF9saXN0X2xvb2t1cF9ieV9pbmZvIChhcmNoZXMtPm5l eHQsICZpbmZvKSkKKyAgICB7CisgICAgICBpZiAoZ2RiYXJjaF90ZGVwIChh cmNoZXMtPmdkYmFyY2gpLT5lbGZfZmxhZ3MgIT0gZWxmX2ZsYWdzKQorCWNv bnRpbnVlOworCisgICAgICByZXR1cm4gYXJjaGVzLT5nZGJhcmNoOworICAg IH0KKyAgLyogTm9uZSBmb3VuZCwgY3JlYXRlIGEgbmV3IGFyY2hpdGVjdHVy ZSBmcm9tIHRoZSBpbmZvcm1hdGlvbgorICAgICBwcm92aWRlZC4gICovCisg IHRkZXAgPSAoc3RydWN0IGdkYmFyY2hfdGRlcCAqKSB4Y2FsbG9jICgxLHNp emVvZiAoc3RydWN0IGdkYmFyY2hfdGRlcCkpOworICB0ZGVwLT5lbGZfZmxh Z3MgPSBlbGZfZmxhZ3M7CisgIGdkYmFyY2ggPSBnZGJhcmNoX2FsbG9jICgm aW5mbywgdGRlcCk7CisKKyAgc2V0X2dkYmFyY2hfbnVtX3BzZXVkb19yZWdz IChnZGJhcmNoLCAwKTsKKyAgaWYoaW5mby5vc2FiaSA9PSBHREJfT1NBQklf TElOVVgpCisgIHsKKyAgICBzZXRfZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJj aCwgQ1IxNl9MSU5VWF9OVU1fUkVHUyk7CisgICAgc2V0X2dkYmFyY2hfcmVn aXN0ZXJfbmFtZSAoZ2RiYXJjaCwgY3IxNl9saW51eF9yZWdpc3Rlcl9uYW1l KTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBzZXRfZ2RiYXJjaF9udW1fcmVn cyAoZ2RiYXJjaCwgQ1IxNl9OVU1fUkVHUyk7CisgICAgc2V0X2dkYmFyY2hf cmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgY3IxNl9yZWdpc3Rlcl9uYW1lKTsK KyAgfQorICBzZXRfZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIChnZGJhcmNoLCBj cjE2X3JlZ2lzdGVyX3R5cGUpOworICBzZXRfZ2RiYXJjaF9wY19yZWdudW0g KGdkYmFyY2gsIENSMTZfUENfUkVHTlVNKTsKKyAgc2V0X2dkYmFyY2hfc3Bf cmVnbnVtIChnZGJhcmNoLCBDUjE2X1NQX1JFR05VTSk7CisgIHNldF9nZGJh cmNoX2lubmVyX3RoYW4gKGdkYmFyY2gsIGNvcmVfYWRkcl9sZXNzdGhhbik7 CisgIHNldF9nZGJhcmNoX2RlY3JfcGNfYWZ0ZXJfYnJlYWsgKGdkYmFyY2gs IDIpOworICBzZXRfZ2RiYXJjaF9icmVha3BvaW50X2Zyb21fcGMgKGdkYmFy Y2gsIGNyMTZfYnJlYWtwb2ludF9mcm9tX3BjKTsKKyAgc2V0X2dkYmFyY2hf c2tpcF9wcm9sb2d1ZSAoZ2RiYXJjaCwgY3IxNl9za2lwX3Byb2xvZ3VlKTsK KworICAvKiBQYXNzaW5nIE5VTEwgIHZhbHVlcyBpbiB0aGUgZm9sbG93aW5n IHR3byBmdW5jdGlvbnMKKyAgICAgZm9yIHRoZSB0aW1lIGJlaW5nLCB0byBm aXggbGF0ZXIgICovCisgIHNldF9nZGJhcmNoX3ByaW50X2luc24gKGdkYmFy Y2gsIHByaW50X2luc25fY3IxNik7CisgIHNldF9nZGJhcmNoX3Vud2luZF9w YyAoZ2RiYXJjaCwgY3IxNl91bndpbmRfcGMpOworICBzZXRfZ2RiYXJjaF91 bndpbmRfc3AgKGdkYmFyY2gsIGNyMTZfdW53aW5kX3NwKTsKKworICAvKiBN ZXRob2RzIGZvciBzYXZpbmcgLyBleHRyYWN0aW5nIGEgZHVtbXkgZnJhbWUn cyBJRC4KKyAgICAgVGhlIElEJ3Mgc3RhY2sgYWRkcmVzcyBtdXN0IG1hdGNo IHRoZSBTUCB2YWx1ZSByZXR1cm5lZCBieQorICAgICBQVVNIX0RVTU1ZX0NB TEwsIGFuZCBzYXZlZCBieSBnZW5lcmljX3NhdmVfZHVtbXlfZnJhbWVfdG9z LiAgKi8KKyAgc2V0X2dkYmFyY2hfZHVtbXlfaWQgKGdkYmFyY2gsIGNyMTZf ZHVtbXlfaWQpOworICBzZXRfZ2RiYXJjaF9wdXNoX2R1bW15X2NhbGwgKGdk YmFyY2gsIGNyMTZfcHVzaF9kdW1teV9jYWxsKTsKKyAgLyogVGFyZ2V0IGJ1 aWx0aW4gZGF0YSB0eXBlcy4gICovCisgIHNldF9nZGJhcmNoX2NoYXJfc2ln bmVkIChnZGJhcmNoLCA4KTsKKyAgc2V0X2dkYmFyY2hfc2hvcnRfYml0IChn ZGJhcmNoLCAxNik7CisKKyAgLyogaWYgd2UgZG9uJ3QgcGFzcyB0aGUgb3B0 aW9uIC1taW50MzIKKyAgICAgVG8gZml4IDogYWRkIGlmIGVsc2UgY2FzZSBk ZXBlbmRpbmcgb24gdGhlIG9wdGlvbiBwYXNzZWQsCisgICAgIHNwIHRoYXQg d2UgY2FuIGhhdmUgaW50IHNpemUgYXMgMTYgb3IgMzIgYml0cyBib3RoLiAq LworICBzZXRfZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoLCAxNik7CisgIHNl dF9nZGJhcmNoX2xvbmdfYml0IChnZGJhcmNoLCAzMik7CisgIHNldF9nZGJh cmNoX2xvbmdfbG9uZ19iaXQgKGdkYmFyY2gsIDY0KTsKKyAgc2V0X2dkYmFy Y2hfZmxvYXRfYml0IChnZGJhcmNoLCAzMik7CisKKyAgc2V0X2dkYmFyY2hf cHRyX2JpdCAoZ2RiYXJjaCwgMzIpOworICBzZXRfZ2RiYXJjaF9mbG9hdF9m b3JtYXQgKGdkYmFyY2gsIGZsb2F0Zm9ybWF0c19pZWVlX3NpbmdsZSk7Cisg IHNldF9nZGJhcmNoX2RvdWJsZV9iaXQgKGdkYmFyY2gsIDY0KTsKKyAgc2V0 X2dkYmFyY2hfbG9uZ19kb3VibGVfYml0IChnZGJhcmNoLCA2NCk7CisgIHNl dF9nZGJhcmNoX2RvdWJsZV9mb3JtYXQgKGdkYmFyY2gsIGZsb2F0Zm9ybWF0 c19pZWVlX2RvdWJsZSk7CisgIHNldF9nZGJhcmNoX2xvbmdfZG91YmxlX2Zv cm1hdCAoZ2RiYXJjaCwgZmxvYXRmb3JtYXRzX2llZWVfZG91YmxlKTsKKwor ICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmY3Ix Nl9mcmFtZV91bndpbmQpOworICBzZXRfZ2RiYXJjaF9yZXR1cm5fdmFsdWUg KGdkYmFyY2gsIGNyMTZfcmV0dXJuX3ZhbHVlKTsKKworICAvKiBIb29rIGlu IEFCSS1zcGVjaWZpYyBvdmVycmlkZXMsIGlmIHRoZXkgaGF2ZSBiZWVuIHJl Z2lzdGVyZWQuICAqLworICBnZGJhcmNoX2luaXRfb3NhYmkgKGluZm8sIGdk YmFyY2gpOworCisgIHJldHVybiBnZGJhcmNoOworCit9CisKKy8qIC1XbWlz c2luZy1wcm90b3R5cGVzICovCitleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0 eXBlIF9pbml0aWFsaXplX2NyMTZfdGRlcDsKKworLyogUmVnaXN0ZXIgdGhl IGFib3ZlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUuICAqLwordm9pZAorX2lu aXRpYWxpemVfY3IxNl90ZGVwICh2b2lkKQoreworICByZWdpc3Rlcl9nZGJh cmNoX2luaXQgKGJmZF9hcmNoX2NyMTYsIGNyMTZfZ2RiYXJjaF9pbml0KTsK K30KLS0tIGdkYl9zcmMub3JpZy9nZGIvY3IxNi10ZGVwLmgJMTk3MC0wMS0w MSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrIC4vZ2RiX3NyYy9nZGIv Y3IxNi10ZGVwLmgJMjAxMi0wOS0wNCAxMzowNTozOS4wMDAwMDAwMDAgKzA1 MzAKQEAgLTAsMCArMSwzNiBAQAorLyogR05VL0xpbnV4IG9uICBDUjE2IHRh cmdldCBzdXBwb3J0LgorICAgQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIENvbnRyaWJ1dGVk IGJ5IEthdXNoaWsgUGhhdGFrIChrYXVzaGlrLnBhaGF0a0BrcGl0Y3VtbWlu cy5jb20pCisgICBLUElUIEN1bW1pbnMgSW5mb3N5c3RlbXMgTGltaXRlZCwg UHVuZSBJbmRpYS4KKworICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgor CisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjZGVmaW5lIENSMTZf TlVNX1JFR1MgIDIyCisjZGVmaW5lIENSMTZfTElOVVhfTlVNX1JFR1MgIDIx CisKK2V4dGVybiBjb25zdCBnZGJfYnl0ZSBicmVha3BvaW50X2VsZltdOwor ZXh0ZXJuIGNvbnN0IGdkYl9ieXRlIGJyZWFrcG9pbnRfbGludXhbXTsKKwor LyogVGFyZ2V0LWRlcGVuZGVudCBzdHJ1Y3R1cmUgaW4gZ2RiYXJjaC4gICov CisvKiBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgZGF0YS4gICovCitzdHJ1Y3Qg Z2RiYXJjaF90ZGVwCit7CisgIC8qIFRoZSBFTEYgaGVhZGVyIGZsYWdzIHNw ZWNpZnkgdGhlIG11bHRpbGliIHVzZWQuICAqLworICBpbnQgZWxmX2ZsYWdz OworCisgIGNvbnN0IGNoYXIgKmJyZWFrcG9pbnQ7IC8qIEJyZWFrcG9pbnQg aW5zdHJ1Y3Rpb24uICAqLworfTsK --_006_C6CA53A2A46BA7469348BDBD663AB65845B2B47CKCHJEXMB03kpitc_ Content-Type: application/octet-stream; name="gdb_core_fpic_suspect.diff" Content-Description: gdb_core_fpic_suspect.diff Content-Disposition: attachment; filename="gdb_core_fpic_suspect.diff"; size=2107; creation-date="Tue, 11 Sep 2012 12:41:41 GMT"; modification-date="Tue, 11 Sep 2012 13:04:22 GMT" Content-Transfer-Encoding: base64 Content-length: 2859 LS0tIGdkYl9zcmMub3JpZy9nZGIvZmluZHZhci5jCTIwMTItMDYtMDUgMTk6 MjA6NDkuMDAwMDAwMDAwICswNTMwCisrKyAuL2dkYl9zcmMvZ2RiL2ZpbmR2 YXIuYwkyMDEyLTA4LTE3IDE2OjIxOjU0LjAwMDAwMDAwMCArMDUzMApAQCAt NTAxLDYgKzUwMSw3IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVj dCBzeW1ib2wgKnYKIAkJCQkJIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7 CiAgICAgICBlbHNlCiAJYWRkciA9IFNZTUJPTF9WQUxVRV9BRERSRVNTICh2 YXIpOworCWFkZHIgPSBhZGRyICsgdGVtcF9mcGljX2FkZHI7CiAgICAgICBi cmVhazsKIAogICAgIGNhc2UgTE9DX0FSRzoKQEAgLTYxMCw2ICs2MTEsNyBA QCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2CiAJ CQkJCSAgIFNZTUJPTF9PQkpfU0VDVElPTiAobXN5bSkpOwogCWVsc2UKIAkg IGFkZHIgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSk7CisJICBhZGRy ID0gYWRkciArIHRlbXBfZnBpY19hZGRyOwogCiAJb2JqX3NlY3Rpb24gPSBT WU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pOwogCWlmIChvYmpfc2VjdGlvbgot LS0gZ2RiX3NyYy5vcmlnL2dkYi9yZW1vdGUuYwkyMDEyLTA3LTAyIDIwOjU5 OjM0LjAwMDAwMDAwMCArMDUzMAorKysgLi9nZGJfc3JjL2dkYi9yZW1vdGUu YwkyMDEyLTA5LTExIDE0OjUwOjA4LjAwMDAwMDAwMCArMDUzMApAQCAtMzE1 MSw2ICszMTUxLDcgQEAgZ2V0X29mZnNldHMgKHZvaWQpCiAgIGVsc2UgaWYg KGRhdGEgJiYgZGF0YS0+bnVtX3NlZ21lbnRzID09IDEpCiAgICAgewogICAg ICAgc2VnbWVudHNbMF0gPSBkYXRhLT5zZWdtZW50X2Jhc2VzWzBdICsgdGV4 dF9hZGRyOworICAgICAgc2VnbWVudHNbMV0gPSBkYXRhLT5zZWdtZW50X2Jh c2VzWzFdICsgZGF0YV9hZGRyOwogICAgICAgbnVtX3NlZ21lbnRzID0gMTsK ICAgICB9CiAgIC8qIFRoZXJlJ3Mgbm8gd2F5IHRvIHJlbG9jYXRlIGJ5IHNl Z21lbnQuICAqLwotLS0gZ2RiX3NyYy5vcmlnL2dkYi9zeW1maWxlLmMJMjAx Mi0wNi0yNyAwMTo0NDowMi4wMDAwMDAwMDAgKzA1MzAKKysrIC4vZ2RiX3Ny Yy9nZGIvc3ltZmlsZS5jCTIwMTItMDgtMTcgMTY6MTk6MDkuMDAwMDAwMDAw ICswNTMwCkBAIC0zNzU3LDYgKzM3NTcsMTYgQEAgc3ltZmlsZV9tYXBfb2Zm c2V0c190b19zZWdtZW50cyAoYmZkICphYgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtIGRhdGEtPnNlZ21lbnRfYmFzZXNbd2hpY2ggLSAxXSk7 CiAgICAgfQogCisgIC8qIEJlbG93IGNvZGUgdG8gaGFuZGxlIGRhdGEgYWRk cmVzcyBpbiBmUElDIG1vZGUsIG9mZnNldCBmcm9tIC50ZXh0ICovCisgIHRl bXBfZnBpY19hZGRyID0gYWJmZC0+c2VjdGlvbnMtPnNpemU7CisgIGlmKHNl Z21lbnRfYmFzZXNbMV0gPiBzZWdtZW50X2Jhc2VzWzBdKQorICAgIHRlbXBf ZnBpY19hZGRyID0gc2VnbWVudF9iYXNlc1sxXSAtIChzZWdtZW50X2Jhc2Vz WzBdICsgdGVtcF9mcGljX2FkZHIpOworICBlbHNlCisgIHsKKyAgICB0ZW1w X2ZwaWNfYWRkciA9IChzZWdtZW50X2Jhc2VzWzBdICsgdGVtcF9mcGljX2Fk ZHIpIC0gc2VnbWVudF9iYXNlc1sxXTsKKyAgICB0ZW1wX2ZwaWNfYWRkciA9 IDAgLSB0ZW1wX2ZwaWNfYWRkcjsKKyAgfQorCiAgIHJldHVybiAxOwogfQog Ci0tLSBnZGJfc3JjLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEyLTA3LTIwIDIz OjI5OjA1LjAwMDAwMDAwMCArMDUzMAorKysgLi9nZGJfc3JjL2dkYi9zeW1m aWxlLmgJMjAxMi0wOC0xNyAxNjoxNzo1Ni4wMDAwMDAwMDAgKzA1MzAKQEAg LTcyLDYgKzcyLDggQEAgc3RydWN0IHBzeW1ib2xfYWxsb2NhdGlvbl9saXN0 CiAgIGludCBzaXplOwogfTsKIAorQ09SRV9BRERSIHRlbXBfZnBpY19hZGRy OworCiAvKiBEZWZpbmUgYW4gYXJyYXkgb2YgYWRkcmVzc2VzIHRvIGFjY29t bW9kYXRlIG5vbi1jb250aWd1b3VzIGR5bmFtaWMKICAgIGxvYWRpbmcgb2Yg bW9kdWxlcy4gIFRoaXMgaXMgZm9yIHVzZSB3aGVuIGVudGVyaW5nIGNvbW1h bmRzLCBzbyB3ZQogICAgY2FuIGtlZXAgdHJhY2sgb2YgdGhlIHNlY3Rpb24g bmFtZXMgdW50aWwgd2UgcmVhZCB0aGUgZmlsZSBhbmQgY2FuCg== --_006_C6CA53A2A46BA7469348BDBD663AB65845B2B47CKCHJEXMB03kpitc_ Content-Type: application/octet-stream; name="cr16_bfd.diff" Content-Description: cr16_bfd.diff Content-Disposition: attachment; filename="cr16_bfd.diff"; size=1000; creation-date="Tue, 11 Sep 2012 12:42:34 GMT"; modification-date="Tue, 11 Sep 2012 13:04:22 GMT" Content-Transfer-Encoding: base64 Content-length: 1359 ZGlmZiAtdXByTiBnZGJfc3JjLm9yaWcvb3Bjb2Rlcy9jcjE2LWRpcy5jIC4v Z2RiX3NyYy9vcGNvZGVzL2NyMTYtZGlzLmMKLS0tIGdkYl9zcmMub3JpZy9v cGNvZGVzL2NyMTYtZGlzLmMJMjAxMi0wNS0xNyAyMDo0MzoyNS4wMDAwMDAw MDAgKzA1MzAKKysrIC4vZ2RiX3NyYy9vcGNvZGVzL2NyMTYtZGlzLmMJMjAx Mi0wOS0xMSAxMjoxODo0My4wMDAwMDAwMDAgKzA1MzAKQEAgLTMxNyw3ICsz MTcsOSBAQCBidWlsZF9tYXNrICh2b2lkKQogCiAvKiBTZWFyY2ggZm9yIGEg bWF0Y2hpbmcgb3Bjb2RlLiBSZXR1cm4gMSBmb3Igc3VjY2VzcywgMCBmb3Ig ZmFpbHVyZS4gICovCiAKLXN0YXRpYyBpbnQKK2ludCBtYXRjaF9vcGNvZGUg KHZvaWQpOworCitpbnQKIG1hdGNoX29wY29kZSAodm9pZCkKIHsKICAgdW5z aWduZWQgbG9uZyBtYXNrOwpAQCAtNzM0LDcgKzczNiw5IEBAIHByaW50X2Fy Z3VtZW50cyAoaW5zICpjdXJyZW50SW5zbiwgYmZkX3YKIAogLyogQnVpbGQg dGhlIGluc3RydWN0aW9uJ3MgYXJndW1lbnRzLiAgKi8KIAotc3RhdGljIHZv aWQKK3ZvaWQgbWFrZV9pbnN0cnVjdGlvbiAodm9pZCk7CisKK3ZvaWQKIG1h a2VfaW5zdHJ1Y3Rpb24gKHZvaWQpCiB7CiAgIGludCBpOwotLS0gLi9nZGJf c3JjLm9yaWcvYmZkL2NvbmZpZy5iZmQJMjAxMi0wNS0xNSAxODoyNTozNC4w MDAwMDAwMDAgKzA1MzAKKysrIC4vZ2RiX3NyYy9iZmQvY29uZmlnLmJmZAky MDEyLTA5LTExIDE2OjE4OjE2LjAwMDAwMDAwMCArMDUzMApAQCAtMzQ1LDYg KzM0NSwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgogICAgIHRhcmdfdW5kZXJz Y29yZT15ZXMKICAgICA7OwogCisgIGNyMTYqLSotdWNsaW51eCopCisgICAg dGFyZ19kZWZ2ZWM9YmZkX2VsZjMyX2NyMTZfdmVjCisgICAgdGFyZ191bmRl cnNjb3JlPXllcworICAgIDs7CisKICAgY3IxNmMtKi1lbGYqKQogICAgIHRh cmdfZGVmdmVjPWJmZF9lbGYzMl9jcjE2Y192ZWMKICAgICB0YXJnX3VuZGVy c2NvcmU9eWVzCg== --_006_C6CA53A2A46BA7469348BDBD663AB65845B2B47CKCHJEXMB03kpitc_ Content-Type: application/octet-stream; name="cr16_config_tgt_alpha.diff" Content-Description: cr16_config_tgt_alpha.diff Content-Disposition: attachment; filename="cr16_config_tgt_alpha.diff"; size=574; creation-date="Tue, 11 Sep 2012 12:41:53 GMT"; modification-date="Tue, 11 Sep 2012 13:04:22 GMT" Content-Transfer-Encoding: base64 Content-length: 781 LS0tIGdkYl9zcmMub3JpZy9nZGIvY29uZmlndXJlLnRndAkyMDEyLTA4LTAy IDAxOjE4OjQ0LjAwMDAwMDAwMCArMDUzMAorKysgLi9nZGJfc3JjL2dkYi9j b25maWd1cmUudGd0CTIwMTItMDktMTEgMTQ6NDg6MjYuMDAwMDAwMDAwICsw NTMwCkBAIC0xMTYsNiArMTE2LDIwIEBAIGJmaW4tKi0qKQogCWdkYl9zaW09 Li4vc2ltL2JmaW4vbGlic2ltLmEKIAk7OwogCitjcjE2Ki0qLSpsaW51eCop CisJIyBUYXJnZXQ6IENSMTYgcHJvY2Vzc29yCisJZ2RiX3RhcmdldF9vYnM9 ImNyMTYtdGRlcC5vIGNyMTYtbGludXgtdGRlcC5vIGxpbnV4LXRkZXAubyIK KwlnZGJfc2ltPS4uL3NpbS9jcjE2L2xpYnNpbS5hCisJYnVpbGRfZ2Ric2Vy dmVyPXllcworCTs7CisKK2NyMTYqLSotKikKKwkjIFRhcmdldDogQ1IxNiBw cm9jZXNzb3IKKwlnZGJfdGFyZ2V0X29icz0iY3IxNi10ZGVwLm8iCisJZ2Ri X3NpbT0uLi9zaW0vY3IxNi9saWJzaW0uYQorCWJ1aWxkX2dkYnNlcnZlcj15 ZXMKKwk7OworCiBjcmlzKikKIAkjIFRhcmdldDogQ1JJUwogCWdkYl90YXJn ZXRfb2JzPSJjcmlzLXRkZXAubyBzb2xpYi1zdnI0Lm8iCg== --_006_C6CA53A2A46BA7469348BDBD663AB65845B2B47CKCHJEXMB03kpitc_ Content-Type: application/octet-stream; name="cr16_config_toplevel_alpha.diff" Content-Description: cr16_config_toplevel_alpha.diff Content-Disposition: attachment; filename="cr16_config_toplevel_alpha.diff"; size=802; creation-date="Tue, 11 Sep 2012 12:41:50 GMT"; modification-date="Tue, 11 Sep 2012 13:04:22 GMT" Content-Transfer-Encoding: base64 Content-length: 1090 LS0tIGdkYl9zcmMub3JpZy9jb25maWd1cmUJMjAxMi0wNi0yOCAxNzoyMDo1 Mi4wMDAwMDAwMDAgKzA1MzAKKysrIC4vZ2RiX3NyYy9jb25maWd1cmUJMjAx Mi0wOC0xNyAxNjo1NjoxMC4wMDAwMDAwMDAgKzA1MzAKQEAgLTM0NDcsNyAr MzQ0Nyw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KICAgICBub2NvbmZpZ2Rp cnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYmdsb3NzIGdkYiIKICAgICA7 OwogICBjcjE2LSotKikKLSAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2Rp cnMgZ2RiIgorICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJn ZXQtbGliZ2xvc3MiCiAgICAgOzsKICAgZDEwdi0qLSopCiAgICAgbm9jb25m aWdkaXJzPSIkbm9jb25maWdkaXJzIHRhcmdldC1saWJnbG9zcyIKLS0tIGdk Yl9zcmMub3JpZy9jb25maWd1cmUuYWMJMjAxMi0wNi0yOCAxNzoyMDo1Mi4w MDAwMDAwMDAgKzA1MzAKKysrIC4vZ2RiX3NyYy9jb25maWd1cmUuYWMJMjAx Mi0wOC0xNyAxNjo1NjoxNy4wMDAwMDAwMDAgKzA1MzAKQEAgLTg3Myw3ICs4 NzMsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCiAgICAgbm9jb25maWdkaXJz PSIkbm9jb25maWdkaXJzIHRhcmdldC1saWJnbG9zcyBnZGIiCiAgICAgOzsK ICAgY3IxNi0qLSopCi0gICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJz IGdkYiIKKyAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0 LWxpYmdsb3NzIgogICAgIDs7CiAgIGQxMHYtKi0qKQogICAgIG5vY29uZmln ZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGliZ2xvc3MiCg== --_006_C6CA53A2A46BA7469348BDBD663AB65845B2B47CKCHJEXMB03kpitc_--