From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4160 invoked by alias); 5 May 2009 13:09:09 -0000 Received: (qmail 4149 invoked by uid 22791); 5 May 2009 13:09:07 -0000 X-SWARE-Spam-Status: No, hits=-0.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_14,J_CHICKENPOX_43,J_CHICKENPOX_44,J_CHICKENPOX_48,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from ti-out-0910.google.com (HELO ti-out-0910.google.com) (209.85.142.189) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 05 May 2009 13:09:01 +0000 Received: by ti-out-0910.google.com with SMTP id a1so446667tib.12 for ; Tue, 05 May 2009 06:08:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.110.7.18 with SMTP id 18mr1659tig.48.1241528938466; Tue, 05 May 2009 06:08:58 -0700 (PDT) In-Reply-To: References: Date: Tue, 05 May 2009 13:09:00 -0000 Message-ID: Subject: Re: [Precord RFA/RFC] Check Linux sys_brk release memory in process record and replay. From: Hui Zhu To: gdb-patches ml Cc: Michael Snyder Content-Type: multipart/mixed; boundary=001485f498485b0d1a046929fbd7 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: 2009-05/txt/msg00079.txt.bz2 --001485f498485b0d1a046929fbd7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3636 Sorry I forget the patch. On Tue, May 5, 2009 at 21:07, Hui Zhu wrote: > Hi guys, > > This patch will make linux-record can check if the sys_brk will > release the memory or not. =A0If memory will be released, gdb will query > to user. > > For example: > cat m.c > #include > #include > #include > #include > #include > #include > #include > #include > #include > > int > main(int argc,char *argv[],char *envp[]) > { > =A0 =A0 =A0 =A0sbrk (10); > =A0 =A0 =A0 =A0sbrk (-10); > > =A0 =A0 =A0 =A0return (0); > } > > gdb m > GNU gdb (GDB) 6.8.50.20090505-cvs > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. =A0Type "show copyi= ng" > and "show warranty" for details. > This GDB was configured as "i686-pc-linux-gnu". > For bug reporting instructions, please see: > ... > (gdb) start > Temporary breakpoint 1 at 0x8048385: file m.c, line 14. > Starting program: /home/teawater/gdb/m > > Temporary breakpoint 1, main (argc=3D, argv=3D optimized out>, > =A0 =A0envp=3D) at m.c:14 > 14 =A0 =A0 =A0 =A0 =A0 =A0 =A0sbrk (10); > (gdb) record > (gdb) n > 15 =A0 =A0 =A0 =A0 =A0 =A0 =A0sbrk (-10); > (gdb) > The next instruction is syscall brk. =A0It will release the memory that > will cause process record target get error. =A0Do you want to stop the > inferior?([y] or n) > Process record: inferior program stopped. > > Program received signal SIGTRAP, Trace/breakpoint trap. > 0xb7fe3405 in __kernel_vsyscall () > > > 2009-05-05 =A0Hui Zhu =A0 > > =A0 =A0 =A0 =A0Add a architecture process record and replay reset interfa= ce > =A0 =A0 =A0 =A0and i386 and i386-linux record and replay reset functions. > > =A0 =A0 =A0 =A0* gdbarch.sh (process_record_reset): This interface point = to > =A0 =A0 =A0 =A0the function that reset the architecture process record and > =A0 =A0 =A0 =A0replay. > =A0 =A0 =A0 =A0* record.c (record_open): Call process_record_reset. > =A0 =A0 =A0 =A0* i386-tdep.c (i386_linux_record_reset): New function. Call > =A0 =A0 =A0 =A0tdep interface "i386_record_reset". > =A0 =A0 =A0 =A0(i386_gdbarch_init): Set "i386_linux_record_reset" to GDBA= RCH > =A0 =A0 =A0 =A0"process_record_reset" interface. > =A0 =A0 =A0 =A0* i386-tdep.h (gdbarch_tdep): New function pointer > =A0 =A0 =A0 =A0i386_record_reset that point to the function that can reset > =A0 =A0 =A0 =A0the process record. > =A0 =A0 =A0 =A0* i386-linux-tdep.c (i386_linux_record_reset): New functio= n. > =A0 =A0 =A0 =A0Call record_linux_reset. > =A0 =A0 =A0 =A0(i386_linux_init_abi): Set "i386_linux_record_reset" to > =A0 =A0 =A0 =A0"i386_record_reset". > > =A0 =A0 =A0 =A0Check Linux sys_brk release memory in process record > =A0 =A0 =A0 =A0and replay. > > =A0 =A0 =A0 =A0* linux-record.c (record_top_of_heap): New variable. > =A0 =A0 =A0 =A0The current top of heap of inferior. > =A0 =A0 =A0 =A0(record_linux_reset): New function. =A0The reset function = of > =A0 =A0 =A0 =A0Linux process record and replay. =A0It will reset the value > =A0 =A0 =A0 =A0of record_top_of_heap. > =A0 =A0 =A0 =A0(record_linux_system_call): Add the sys_brk check code. > =A0 =A0 =A0 =A0If this sys_brk will release the memory, query to user. > =A0 =A0 =A0 =A0* linux-record.h (record_linux_reset): New function extern. > > > Thanks, > Hui > --001485f498485b0d1a046929fbd7 Content-Type: text/plain; charset=US-ASCII; name="check-brk.txt" Content-Disposition: attachment; filename="check-brk.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fucm9awm0 Content-length: 14205 LS0tCiBnZGJhcmNoLmMgICAgICAgICB8ICAgMzMgKysrKysrKysrKysrKysr KysKIGdkYmFyY2guaCAgICAgICAgIHwgICAgOCArKysrCiBnZGJhcmNoLnNo ICAgICAgICB8ICAgIDMgKwogaTM4Ni1saW51eC10ZGVwLmMgfCAgICA3ICsr KwogaTM4Ni10ZGVwLmMgICAgICAgfCAgICA4ICsrKysKIGkzODYtdGRlcC5o ICAgICAgIHwgICAgMiArCiBsaW51eC1yZWNvcmQuYyAgICB8ICAxMDEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBsaW51eC1yZWNvcmQuaCAgICB8ICAgIDEgCiByZWNvcmQuYyAg ICAgICAgICB8ICAgIDQgKysKIDkgZmlsZXMgY2hhbmdlZCwgMTY3IGluc2Vy dGlvbnMoKykKCi0tLSBhL2dkYmFyY2guYworKysgYi9nZGJhcmNoLmMKQEAg LTI0MCw2ICsyNDAsNyBAQCBzdHJ1Y3QgZ2RiYXJjaAogICBnZGJhcmNoX3N0 YXRpY190cmFuc2Zvcm1fbmFtZV9mdHlwZSAqc3RhdGljX3RyYW5zZm9ybV9u YW1lOwogICBpbnQgc29mdW5fYWRkcmVzc19tYXliZV9taXNzaW5nOwogICBn ZGJhcmNoX3Byb2Nlc3NfcmVjb3JkX2Z0eXBlICpwcm9jZXNzX3JlY29yZDsK KyAgZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9yZXNldF9mdHlwZSAqcHJvY2Vz c19yZWNvcmRfcmVzZXQ7CiAgIGdkYmFyY2hfdGFyZ2V0X3NpZ25hbF9mcm9t X2hvc3RfZnR5cGUgKnRhcmdldF9zaWduYWxfZnJvbV9ob3N0OwogICBnZGJh cmNoX3RhcmdldF9zaWduYWxfdG9faG9zdF9mdHlwZSAqdGFyZ2V0X3NpZ25h bF90b19ob3N0OwogICBnZGJhcmNoX2dldF9zaWdpbmZvX3R5cGVfZnR5cGUg KmdldF9zaWdpbmZvX3R5cGU7CkBAIC0zNzYsNiArMzc3LDcgQEAgc3RydWN0 IGdkYmFyY2ggc3RhcnR1cF9nZGJhcmNoID0KICAgMCwgIC8qIHN0YXRpY190 cmFuc2Zvcm1fbmFtZSAqLwogICAwLCAgLyogc29mdW5fYWRkcmVzc19tYXli ZV9taXNzaW5nICovCiAgIDAsICAvKiBwcm9jZXNzX3JlY29yZCAqLworICAw LCAgLyogcHJvY2Vzc19yZWNvcmRfcmVzZXQgKi8KICAgZGVmYXVsdF90YXJn ZXRfc2lnbmFsX2Zyb21faG9zdCwgIC8qIHRhcmdldF9zaWduYWxfZnJvbV9o b3N0ICovCiAgIGRlZmF1bHRfdGFyZ2V0X3NpZ25hbF90b19ob3N0LCAgLyog dGFyZ2V0X3NpZ25hbF90b19ob3N0ICovCiAgIDAsICAvKiBnZXRfc2lnaW5m b190eXBlICovCkBAIC02MzMsNiArNjM1LDcgQEAgdmVyaWZ5X2dkYmFyY2gg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQogICAvKiBTa2lwIHZlcmlmeSBv ZiBzdGF0aWNfdHJhbnNmb3JtX25hbWUsIGhhcyBwcmVkaWNhdGUgKi8KICAg LyogU2tpcCB2ZXJpZnkgb2Ygc29mdW5fYWRkcmVzc19tYXliZV9taXNzaW5n LCBpbnZhbGlkX3AgPT0gMCAqLwogICAvKiBTa2lwIHZlcmlmeSBvZiBwcm9j ZXNzX3JlY29yZCwgaGFzIHByZWRpY2F0ZSAqLworICAvKiBTa2lwIHZlcmlm eSBvZiBwcm9jZXNzX3JlY29yZF9yZXNldCwgaGFzIHByZWRpY2F0ZSAqLwog ICAvKiBTa2lwIHZlcmlmeSBvZiB0YXJnZXRfc2lnbmFsX2Zyb21faG9zdCwg aW52YWxpZF9wID09IDAgKi8KICAgLyogU2tpcCB2ZXJpZnkgb2YgdGFyZ2V0 X3NpZ25hbF90b19ob3N0LCBpbnZhbGlkX3AgPT0gMCAqLwogICAvKiBTa2lw IHZlcmlmeSBvZiBnZXRfc2lnaW5mb190eXBlLCBoYXMgcHJlZGljYXRlICov CkBAIC05NTUsNiArOTU4LDEyIEBAIGdkYmFyY2hfZHVtcCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIHMKICAgICAgICAgICAgICAgICAgICAgICAiZ2Ri YXJjaF9kdW1wOiBwcm9jZXNzX3JlY29yZCA9IDwlcz5cbiIsCiAgICAgICAg ICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJj aC0+cHJvY2Vzc19yZWNvcmQpKTsKICAgZnByaW50Zl91bmZpbHRlcmVkIChm aWxlLAorICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IGdk YmFyY2hfcHJvY2Vzc19yZWNvcmRfcmVzZXRfcCgpID0gJWRcbiIsCisgICAg ICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9yZXNl dF9wIChnZGJhcmNoKSk7CisgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwK KyAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBwcm9jZXNz X3JlY29yZF9yZXNldCA9IDwlcz5cbiIsCisgICAgICAgICAgICAgICAgICAg ICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoZ2RiYXJjaC0+cHJvY2Vzc19y ZWNvcmRfcmVzZXQpKTsKKyAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAog ICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHBzX3JlZ251 bSA9ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgIHBsb25nZXN0IChn ZGJhcmNoLT5wc19yZWdudW0pKTsKICAgZnByaW50Zl91bmZpbHRlcmVkIChm aWxlLApAQCAtMzI4Myw2ICszMjkyLDMwIEBAIHNldF9nZGJhcmNoX3Byb2Nl c3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXIKICAgZ2RiYXJjaC0+cHJvY2Vzc19y ZWNvcmQgPSBwcm9jZXNzX3JlY29yZDsKIH0KIAoraW50CitnZGJhcmNoX3By b2Nlc3NfcmVjb3JkX3Jlc2V0X3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KQoreworICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOworICByZXR1 cm4gZ2RiYXJjaC0+cHJvY2Vzc19yZWNvcmRfcmVzZXQgIT0gTlVMTDsKK30K Kwordm9pZAorZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9yZXNldCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gpCit7CisgIGdkYl9hc3NlcnQgKGdkYmFyY2gg IT0gTlVMTCk7CisgIGdkYl9hc3NlcnQgKGdkYmFyY2gtPnByb2Nlc3NfcmVj b3JkX3Jlc2V0ICE9IE5VTEwpOworICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAy KQorICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFy Y2hfcHJvY2Vzc19yZWNvcmRfcmVzZXQgY2FsbGVkXG4iKTsKKyAgZ2RiYXJj aC0+cHJvY2Vzc19yZWNvcmRfcmVzZXQgKGdkYmFyY2gpOworfQorCit2b2lk CitzZXRfZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9yZXNldCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9yZXNldF9mdHlwZSBwcm9j ZXNzX3JlY29yZF9yZXNldCkKK3sKKyAgZ2RiYXJjaC0+cHJvY2Vzc19yZWNv cmRfcmVzZXQgPSBwcm9jZXNzX3JlY29yZF9yZXNldDsKK30KKwogZW51bSB0 YXJnZXRfc2lnbmFsCiBnZGJhcmNoX3RhcmdldF9zaWduYWxfZnJvbV9ob3N0 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHNpZ25vKQogewotLS0g YS9nZGJhcmNoLmgKKysrIGIvZ2RiYXJjaC5oCkBAIC04MTgsNiArODE4LDE0 IEBAIHR5cGVkZWYgaW50IChnZGJhcmNoX3Byb2Nlc3NfcmVjb3JkX2Z0eXAK IGV4dGVybiBpbnQgZ2RiYXJjaF9wcm9jZXNzX3JlY29yZCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIENP UkVfQUREUiBhZGRyKTsKIGV4dGVybiB2b2lkIHNldF9nZGJhcmNoX3Byb2Nl c3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9w cm9jZXNzX3JlY29yZF9mdHlwZSAqcHJvY2Vzc19yZWNvcmQpOwogCisvKiBS ZXNldCB0aGUgaW5zaWRlIHZhbHVlIG9mIHByb2Nlc3MgcmVjb3JkIGlmIG5l ZWQuICovCisKK2V4dGVybiBpbnQgZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9y ZXNldF9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CisKK3R5cGVkZWYg dm9pZCAoZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9yZXNldF9mdHlwZSkgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKK2V4dGVybiB2b2lkIGdkYmFyY2hf cHJvY2Vzc19yZWNvcmRfcmVzZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KTsKK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3Byb2Nlc3NfcmVjb3JkX3Jl c2V0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9wcm9jZXNz X3JlY29yZF9yZXNldF9mdHlwZSAqcHJvY2Vzc19yZWNvcmRfcmVzZXQpOwor CiAvKiBTaWduYWwgdHJhbnNsYXRpb246IHRyYW5zbGF0ZSBpbmZlcmlvcidz IHNpZ25hbCAoaG9zdCdzKSBudW1iZXIgaW50bwogICAgR0RCJ3MgcmVwcmVz ZW50YXRpb24uICovCiAKLS0tIGEvZ2RiYXJjaC5zaAorKysgYi9nZGJhcmNo LnNoCkBAIC03MTUsNiArNzE1LDkgQEAgdjppbnQ6c29mdW5fYWRkcmVzc19t YXliZV9taXNzaW5nOjo6MDowOgogIyBSZXR1cm4gLTEgaWYgc29tZXRoaW5n IGdvZXMgd3JvbmcsIDAgb3RoZXJ3aXNlLgogTTppbnQ6cHJvY2Vzc19yZWNv cmQ6c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgQ09SRV9BRERSIGFkZHI6 cmVnY2FjaGUsIGFkZHIKIAorIyBSZXNldCB0aGUgaW5zaWRlIHZhbHVlIG9m IHByb2Nlc3MgcmVjb3JkIGlmIG5lZWQuCitNOnZvaWQ6cHJvY2Vzc19yZWNv cmRfcmVzZXQ6dm9pZAorCiAjIFNpZ25hbCB0cmFuc2xhdGlvbjogdHJhbnNs YXRlIGluZmVyaW9yJ3Mgc2lnbmFsIChob3N0J3MpIG51bWJlciBpbnRvCiAj IEdEQidzIHJlcHJlc2VudGF0aW9uLgogbTplbnVtIHRhcmdldF9zaWduYWw6 dGFyZ2V0X3NpZ25hbF9mcm9tX2hvc3Q6aW50IHNpZ25vOnNpZ25vOjpkZWZh dWx0X3RhcmdldF9zaWduYWxfZnJvbV9ob3N0OjowCi0tLSBhL2kzODYtbGlu dXgtdGRlcC5jCisrKyBiL2kzODYtbGludXgtdGRlcC5jCkBAIC0zNTIsNiAr MzUyLDEyIEBAIGkzODZfbGludXhfd3JpdGVfcGMgKHN0cnVjdCByZWdjYWNo ZSAqcmUKICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdj YWNoZSwgSTM4Nl9MSU5VWF9PUklHX0VBWF9SRUdOVU0sIC0xKTsKIH0KIAor c3RhdGljIHZvaWQKK2kzODZfbGludXhfcmVjb3JkX3Jlc2V0IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCkKK3sKKyAgcmVjb3JkX2xpbnV4X3Jlc2V0IChn ZGJhcmNoKTsKK30KKwogLyogUGFyc2UgdGhlIGFyZ3VtZW50cyBvZiBjdXJy ZW50IHN5c3RlbSBjYWxsIGluc3RydWN0aW9uIGFuZCByZWNvcmQKICAgIHRo ZSB2YWx1ZXMgb2YgdGhlIHJlZ2lzdGVycyBhbmQgbWVtb3J5IHRoYXQgd2ls bCBiZSBjaGFuZ2VkIGludG8KICAgICJyZWNvcmRfYXJjaF9saXN0Ii4gIFRo aXMgaW5zdHJ1Y3Rpb24gaXMgImludCAweDgwIiAoTGludXgKQEAgLTc4Nyw2 ICs3OTMsNyBAQCBpMzg2X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJj aF9pbmZvCiAgIGkzODZfbGludXhfcmVjb3JkX3RkZXAuYXJnNCA9IEkzODZf RVNJX1JFR05VTTsKICAgaTM4Nl9saW51eF9yZWNvcmRfdGRlcC5hcmc1ID0g STM4Nl9FRElfUkVHTlVNOwogCisgIHRkZXAtPmkzODZfcmVjb3JkX3Jlc2V0 ID0gaTM4Nl9saW51eF9yZWNvcmRfcmVzZXQ7CiAgIHRkZXAtPmkzODZfaW50 eDgwX3JlY29yZCA9IGkzODZfbGludXhfaW50eDgwX3N5c2VudGVyX3JlY29y ZDsKICAgdGRlcC0+aTM4Nl9zeXNlbnRlcl9yZWNvcmQgPSBpMzg2X2xpbnV4 X2ludHg4MF9zeXNlbnRlcl9yZWNvcmQ7CiAKLS0tIGEvaTM4Ni10ZGVwLmMK KysrIGIvaTM4Ni10ZGVwLmMKQEAgLTUwODYsNiArNTA4NiwxMyBAQCBub19z dXBwb3J0OgogICByZXR1cm4gLTE7CiB9CiAKK3N0YXRpYyB2b2lkCitpMzg2 X3Byb2Nlc3NfcmVjb3JkX3Jlc2V0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCkKK3sKKyAgaWYgKGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPmkzODZfcmVj b3JkX3Jlc2V0KQorICAgIGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPmkzODZf cmVjb3JkX3Jlc2V0IChnZGJhcmNoKTsKK30KKwogDAogc3RhdGljIHN0cnVj dCBnZGJhcmNoICoKIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJj aF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKQEAg LTUyNzgsNiArNTI4NSw3IEBAIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1Y3Qg Z2RiYXJjaF9pbmZvIGkKIAkJCQkJIGkzODZfc2tpcF9wZXJtYW5lbnRfYnJl YWtwb2ludCk7CiAKICAgc2V0X2dkYmFyY2hfcHJvY2Vzc19yZWNvcmQgKGdk YmFyY2gsIGkzODZfcHJvY2Vzc19yZWNvcmQpOworICBzZXRfZ2RiYXJjaF9w cm9jZXNzX3JlY29yZF9yZXNldCAoZ2RiYXJjaCwgaTM4Nl9wcm9jZXNzX3Jl Y29yZF9yZXNldCk7CiAKICAgcmV0dXJuIGdkYmFyY2g7CiB9Ci0tLSBhL2kz ODYtdGRlcC5oCisrKyBiL2kzODYtdGRlcC5oCkBAIC0xMDgsNiArMTA4LDgg QEAgc3RydWN0IGdkYmFyY2hfdGRlcAogICBzdHJ1Y3QgdHlwZSAqaTM4Nl9z c2VfdHlwZTsKIAogICAvKiBQcm9jZXNzIHJlY29yZC9yZXBsYXkgdGFyZ2V0 LiAgKi8KKyAgLyogUmVzZXQgKi8KKyAgdm9pZCAoKmkzODZfcmVjb3JkX3Jl c2V0KSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOwogICAvKiBQYXJzZSBp bnR4ODAgYXJncy4gICovCiAgIGludCAoKmkzODZfaW50eDgwX3JlY29yZCkg KHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUpOwogICAvKiBQYXJzZSBzeXNl bnRlciBhcmdzLiAgKi8KLS0tIGEvbGludXgtcmVjb3JkLmMKKysrIGIvbGlu dXgtcmVjb3JkLmMKQEAgLTIwLDYgKzIwLDEyIEBACiAjaW5jbHVkZSAiZGVm cy5oIgogI2luY2x1ZGUgInRhcmdldC5oIgogI2luY2x1ZGUgInJlZ2NhY2hl LmgiCisjaW5jbHVkZSAiaW5mY2FsbC5oIgorI2luY2x1ZGUgIm9iamZpbGVz LmgiCisjaW5jbHVkZSAidmFsdWUuaCIKKyNpbmNsdWRlICJicmVha3BvaW50 LmgiCisjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKyNpbmNsdWRlICJnZGJ0aHJl YWQuaCIKICNpbmNsdWRlICJyZWNvcmQuaCIKICNpbmNsdWRlICJsaW51eC1y ZWNvcmQuaCIKIApAQCAtODAsNiArODYsNTYgQEAKICNkZWZpbmUgUkVDT1JE X1FfWEdFVFFTVEFUCSgoJzUnIDw8IDgpICsgNSkKICNkZWZpbmUgUkVDT1JE X1FfWEdFVFFVT1RBCSgoJzMnIDw8IDgpICsgMykKIAorLyogcmVjb3JkX3Rv cF9vZl9oZWFwIGlzIHRoZSBjdXJyZW50IHRvcCBvZiBoZWFwIG9mIGluZmVy aW9yLgorICAgV2hlbiByZWNvcmQgZGVhbCB3aXRoIHN5c19icmssIGl0IHdp bGwgYmUgdXNlZC4KKyAgIEdldCBpdCBuZWVkIGNhbGwgY2FsbF9mdW5jdGlv bl9ieV9oYW5kLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmVzZXQgYSBsb3QKKyAg IG9mIHN0YXR1cyBvZiBpbmZlcmlvci4gIEl0IHdpbGwgbWFrZSBwcm9jZXNz IHJlY29yZCBnZXQgZXJyb3IKKyAgIGlmIGNhbGwgaXQgaW4gcmVjb3JkX2xp bnV4X3N5c3RlbV9jYWxsLiAgU28gZ2V0IHJlY29yZF90b3Bfb2ZfaGVhcCBp bgorICAgcmVjb3JkX2xpbnV4X3Jlc2V0LiAgKi8KKworc3RhdGljIGJmZF92 bWEgcmVjb3JkX3RvcF9vZl9oZWFwOworCit2b2lkCityZWNvcmRfbGludXhf cmVzZXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQoreworICBzdHJ1Y3Qg dmFsdWUgKnNicmtfZm47CisgIHN0cnVjdCBvYmpmaWxlICpzYnJrX29iamY7 CisKKyAgcmVjb3JkX3RvcF9vZl9oZWFwID0gMDsKKworICAvKiBHZXQgc2Jy a19mbiBhbmQgemVyby4gIEJlY2F1c2UgYWxsIG9mIHRoZW0KKyAgICAgd2ls bCBiZSBmcmVlIGJ5IGZyZWVfYWxsX3ZhbHVlcyBpbiBlYWNoIGNvbW1hbmQg YmVnaW4uICAqLworICBzYnJrX2ZuID0gTlVMTDsKKyAgaWYgKGxvb2t1cF9t aW5pbWFsX3N5bWJvbCAoInNicmsiLCBOVUxMLCBOVUxMKSAhPSBOVUxMKQor ICAgIHNicmtfZm4gPSBmaW5kX2Z1bmN0aW9uX2luX2luZmVyaW9yICgic2Jy ayIsICZzYnJrX29iamYpOworICBpZiAoIXNicmtfZm4pCisgICAgeworICAg ICAgaWYgKGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoIl9zYnJrIiwgTlVMTCwg TlVMTCkgIT0gTlVMTCkKKwlzYnJrX2ZuID0gZmluZF9mdW5jdGlvbl9pbl9p bmZlcmlvciAoIl9zYnJrIiwgJnNicmtfb2JqZik7CisgICAgfQorCisgIGlm IChzYnJrX2ZuKQorICAgIHsKKyAgICAgIHN0cnVjdCB2YWx1ZSAqcmV0Owor ICAgICAgc3RydWN0IHZhbHVlICp6ZXJvID0gdmFsdWVfZnJvbV9sb25nZXN0 CisJKGJ1aWx0aW5fdHlwZSAoZ2V0X29iamZpbGVfYXJjaCAoc2Jya19vYmpm KSktPmJ1aWx0aW5faW50LCAwKTsKKworICAgICAgcmVtb3ZlX2JyZWFrcG9p bnRzICgpOworICAgICAgcmV0ID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChz YnJrX2ZuLCAxLCAmemVybyk7CisgICAgICBpbnNlcnRfYnJlYWtwb2ludHMg KCk7CisKKyAgICAgIGlmIChyZXQpCisJeworCSAgcmVjb3JkX3RvcF9vZl9o ZWFwID0gdmFsdWVfYXNfbG9uZyAocmV0KTsKKwl9CisgICAgfQorCisgIGlm ICghcmVjb3JkX3RvcF9vZl9oZWFwKQorICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKKwkJCV8oIlByb2Nlc3MgcmVjb3JkIGdldCBjdXJy ZW50ICIKKwkJCSAgInRvcCBvZiBoZWFwIGZhaWxpZWQuXG4iKSk7Cit9CisK IC8qIFdoZW4gdGhlIGFyY2hpdGVjdHVyZSBwcm9jZXNzIHJlY29yZCBnZXQg YSBMaW51eCBzeXNjYWxsCiAgICBpbnN0cnVjdGlvbiwgaXQgd2lsbCBnZXQg YSBMaW51eCBzeXNjYWxsIG51bWJlciBvZiB0aGlzCiAgICBhcmNoaXRlY3R1 cmUgYW5kIGNvbnZlcnQgaXQgdG8gdGhlIExpbnV4IHN5c2NhbGwgbnVtYmVy ICJudW0iIHdoaWNoCkBAIC0yNDYsOCArMzAyLDUzIEBAIHJlY29yZF9saW51 eF9zeXN0ZW1fY2FsbCAoaW50IG51bSwgc3RydWMKIAogICAgICAgLyogc3lz X25pX3N5c2NhbGwgKi8KICAgICBjYXNlIDQ0OgorICAgICAgYnJlYWs7CisK ICAgICAgIC8qIHN5c19icmsgKi8KICAgICBjYXNlIDQ1OgorICAgICAgewor CWludCBxOworCWJmZF92bWEgZW5kX2RhdGFfc2VnbWVudDsKKworCXJlZ2Nh Y2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgdGRlcC0+YXJnMSwKKwkJCSAgIChn ZGJfYnl0ZSAqKSAmIGVuZF9kYXRhX3NlZ21lbnQpOworCisJaWYgKHJlY29y ZF90b3Bfb2ZfaGVhcCkKKwkgIHsKKwkgICAgaWYgKGVuZF9kYXRhX3NlZ21l bnQgJiYgcmVjb3JkX3RvcF9vZl9oZWFwID4gZW5kX2RhdGFfc2VnbWVudCkK KwkgICAgICB7CisJCXRhcmdldF90ZXJtaW5hbF9vdXJzICgpOworCQlxID0K KwkJICB5cXVlcnkgKF8oIlRoZSBuZXh0IGluc3RydWN0aW9uIGlzIHN5c2Nh bGwgYnJrLiAgIgorCQkJICAgICJJdCB3aWxsIHJlbGVhc2UgdGhlIG1lbW9y eSB0aGF0IHdpbGwgY2F1c2UgIgorCQkJICAgICJwcm9jZXNzIHJlY29yZCB0 YXJnZXQgZ2V0IGVycm9yLiAgRG8gIgorCQkJICAgICJ5b3Ugd2FudCB0byBz dG9wIHRoZSBpbmZlcmlvcj8iKSk7CisJCXRhcmdldF90ZXJtaW5hbF9pbmZl cmlvciAoKTsKKwkJaWYgKHEpCisJCSAgcmV0dXJuIDE7CisJICAgICAgfQor CSAgfQorCWVsc2UKKwkgIHsKKworCSAgICB0YXJnZXRfdGVybWluYWxfb3Vy cyAoKTsKKwkgICAgcSA9CisJICAgICAgeXF1ZXJ5IChfKCJUaGUgbmV4dCBp bnN0cnVjdGlvbiBpcyBzeXNjYWxsIGJyay4gICIKKwkJCSJQcm9jZXNzIHJl Y29yZCBjYW5ub3QgbWFrZSBzdXJlIGl0IHdpbGwgIgorCQkJInJlbGVhc2Ug bWVtb3J5IG9yIG5vdC4gICIKKwkJCSJJdCBtYXkgY2F1c2UgcHJvY2VzcyBy ZWNvcmQgdGFyZ2V0IGdldCBlcnJvci4gICIKKwkJCSJEbyB5b3Ugd2FudCB0 byBzdG9wIHRoZSBpbmZlcmlvcj8iKSk7CisJICAgIHRhcmdldF90ZXJtaW5h bF9pbmZlcmlvciAoKTsKKwkgICAgaWYgKHEpCisJICAgICAgcmV0dXJuIDE7 CisJICB9CisKKwkvKiBJZiBzeXNjYWxsIGJyayBleGVjdXRlLCBlbmRfZGF0 YV9zZWdtZW50IHdpbGwgYmUKKwkgICB0aGUgdG9wIG9mIGhlYXAuICAqLwor CXJlY29yZF90b3Bfb2ZfaGVhcCA9IGVuZF9kYXRhX3NlZ21lbnQ7CisgICAg ICB9CisgICAgICBicmVhazsKKwogICAgICAgLyogc3lzX3NldGdpZDE2ICov CiAgICAgY2FzZSA0NjoKICAgICAgIC8qIHN5c19nZXRnaWQxNiAqLwotLS0g YS9saW51eC1yZWNvcmQuaAorKysgYi9saW51eC1yZWNvcmQuaApAQCAtMTY3 LDYgKzE2Nyw3IEBAIHN0cnVjdCBsaW51eF9yZWNvcmRfdGRlcAogICBpbnQg YXJnNTsKIH07CiAKK2V4dGVybiB2b2lkIHJlY29yZF9saW51eF9yZXNldCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOwogZXh0ZXJuIGludCByZWNvcmRf bGludXhfc3lzdGVtX2NhbGwgKGludCBudW0sIHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsCiAJCQkJICAgICBzdHJ1Y3QgbGludXhfcmVjb3JkX3RkZXAg KnRkZXApOwogCi0tLSBhL3JlY29yZC5jCisrKyBiL3JlY29yZC5jCkBAIC00 NDAsNiArNDQwLDEwIEBAIHJlY29yZF9vcGVuIChjaGFyICpuYW1lLCBpbnQg ZnJvbV90dHkpCiAJcmV0dXJuOwogICAgIH0KIAorICAvKlJlc2V0IHRoZSBn ZGJhcmNoIHBhcnQgb2YgcHJvY2VzcyByZWNvcmQuICAqLworICBpZiAoZ2Ri YXJjaF9wcm9jZXNzX3JlY29yZF9yZXNldF9wIChjdXJyZW50X2dkYmFyY2gp KQorICAgIGdkYmFyY2hfcHJvY2Vzc19yZWNvcmRfcmVzZXQgKGN1cnJlbnRf Z2RiYXJjaCk7CisKICAgLypSZXNldCB0aGUgYmVuZWF0aCBmdW5jdGlvbiBw b2ludGVycy4gICovCiAgIHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZSA9IE5V TEw7CiAgIHJlY29yZF9iZW5lYXRoX3RvX3dhaXQgPSBOVUxMOwo= --001485f498485b0d1a046929fbd7--