From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Hy7nw-00045G-7T for qemu-devel@nongnu.org; Tue, 12 Jun 2007 10:57:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Hy7nv-00044o-Bc for qemu-devel@nongnu.org; Tue, 12 Jun 2007 10:57:07 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Hy7nu-00044Y-VT for qemu-devel@nongnu.org; Tue, 12 Jun 2007 10:57:07 -0400 Received: from nz-out-0506.google.com ([64.233.162.226]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Hy7nu-0007PI-8q for qemu-devel@nongnu.org; Tue, 12 Jun 2007 10:57:06 -0400 Received: by nz-out-0506.google.com with SMTP id 18so1026145nzp for ; Tue, 12 Jun 2007 07:57:05 -0700 (PDT) Message-ID: Date: Tue, 12 Jun 2007 22:57:04 +0800 From: "Jun Peng" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_4150_7084197.1181660224600" Subject: [Qemu-devel] HOST_MIPS: handle relocation of op.o (op_mips.c, patch) Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_4150_7084197.1181660224600 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello, Let us see "jal R_MIPS_26": in current CVS version, op.o, -fno-PIC -mno-abicalls 004eb0d4 : ... 4eb104: afa50010 sw a1,16(sp) 4eb108: 14600003 bnez v1,4eb118 4eb10c: 00000000 nop 4eb110: 0c140e12 jal 503848 4eb114: 00000000 nop 4eb118: 8fa30010 lw v1,16(sp) 4eb11c: 00002021 move a0,zero helper.o, PIC and abicalls 00503848 : 503848: 3c1c000c lui gp,0xc 50384c: 279c0858 addiu gp,gp,2136 503850: 0399e021 addu gp,gp,t9 503854: 8f998db8 lw t9,-29256(gp) 503858: 00002821 move a1,zero 50385c: 00003021 move a2,zero 503860: 03200008 jr t9 503864: 00003821 move a3,zero When calling PIC/abicalls functions, $25 must contain the address of the called function. But, At 0x503850, I guess $25 is not &raise_exception, but &gen_func. Therefore, before call raise_exception, we must seved the address of raise_exception into $25. In other words, we must use R_MIPS_HI16 / R_MIPS_LO16 instead of R_MIPS_26. op_mips.c can take care of this. I tested it with qemu-0.6.1 and qemu-0.9.0 on loongson + linux. ------=_Part_4150_7084197.1181660224600 Content-Type: text/plain; name=qemu-op_mips.patch; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f2uhylvv Content-Disposition: attachment; filename="qemu-op_mips.patch" ZGlmZiAtTnVyYiBxZW11LWN2cy9NYWtlZmlsZSBxZW11LWxvb25nc29uL01ha2VmaWxlCi0tLSBx ZW11LWN2cy9NYWtlZmlsZQkyMDA3LTA1LTIwIDE4OjU0OjUwLjAwMDAwMDAwMCArMDgwMAorKysg cWVtdS1sb29uZ3Nvbi9NYWtlZmlsZQkyMDA3LTA2LTEyIDIyOjI0OjA2LjAwMDAwMDAwMCArMDgw MApAQCAtMjUsOCArMjUsMTUgQEAKIAogTElCUys9JChBSU9MSUJTKQogCitpZmVxICgkKEFSQ0gp LG1pcHMpCitzdWJkaXItJTogZHluZ2VuJChFWEVTVUYpIG9wX21pcHMkKEVYRVNVRikKKwkkKE1B S0UpIC1DICQoc3Vic3Qgc3ViZGlyLSwsJEApIGFsbAorCitlbHNlCiBhbGw6ICQoVE9PTFMpICQo RE9DUykgcmVjdXJzZS1hbGwKIAorZW5kaWYKKwogc3ViZGlyLSU6IGR5bmdlbiQoRVhFU1VGKQog CSQoTUFLRSkgLUMgJChzdWJzdCBzdWJkaXItLCwkQCkgYWxsCiAKQEAgLTM4LDEwICs0NSwxNiBA QAogZHluZ2VuJChFWEVTVUYpOiBkeW5nZW4uYwogCSQoSE9TVF9DQykgJChDRkxBR1MpICQoQ1BQ RkxBR1MpICQoQkFTRV9DRkxBR1MpIC1vICRAICReCiAKK2lmZXEgKCQoQVJDSCksbWlwcykKK29w X21pcHMkKEVYRVNVRik6IG9wX21pcHMuYworCSQoSE9TVF9DQykgJChDRkxBR1MpICQoREVGSU5F UykgLW8gJEAgJF4KKworZW5kaWYKKwogY2xlYW46CiAjIGF2b2lkIG9sZCBidWlsZCBwcm9ibGVt cyBieSByZW1vdmluZyBwb3RlbnRpYWxseSBpbmNvcnJlY3Qgb2xkIGZpbGVzCiAJcm0gLWYgY29u ZmlnLm1hayBjb25maWcuaCBvcC1pMzg2Lmggb3BjLWkzODYuaCBnZW4tb3AtaTM4Ni5oIG9wLWFy bS5oIG9wYy1hcm0uaCBnZW4tb3AtYXJtLmggCi0Jcm0gLWYgKi5vICouYSAkKFRPT0xTKSBkeW5n ZW4kKEVYRVNVRikgVEFHUyAqLnBvZCAqfiAqLyp+CisJcm0gLWYgKi5vICouYSAkKFRPT0xTKSBk eW5nZW4kKEVYRVNVRikgb3BfbWlwcyQoRVhFU1VGKSBUQUdTICoucG9kICp+ICovKn4KIAkkKE1B S0UpIC1DIHRlc3RzIGNsZWFuCiAJZm9yIGQgaW4gJChUQVJHRVRfRElSUyk7IGRvIFwKIAkkKE1B S0UpIC1DICQkZCAkQCB8fCBleGl0IDEgOyBcCmRpZmYgLU51cmIgcWVtdS1jdnMvTWFrZWZpbGUu dGFyZ2V0IHFlbXUtbG9vbmdzb24vTWFrZWZpbGUudGFyZ2V0Ci0tLSBxZW11LWN2cy9NYWtlZmls ZS50YXJnZXQJMjAwNy0wNi0xMiAyMjoyMDo0NC4wMDAwMDAwMDAgKzA4MDAKKysrIHFlbXUtbG9v bmdzb24vTWFrZWZpbGUudGFyZ2V0CTIwMDctMDYtMTIgMjI6Mjc6NTQuMDAwMDAwMDAwICswODAw CkBAIC0zMyw2ICszMyw3IEBACiBMSUJTPQogSEVMUEVSX0NGTEFHUz0kKENGTEFHUykKIERZTkdF Tj0uLi9keW5nZW4kKEVYRVNVRikKK09QX01JUFM9Li4vb3BfbWlwcyQoRVhFU1VGKQogIyB1c2Vy IGVtdWxhdG9yIG5hbWUKIFRBUkdFVF9BUkNIMj0kKFRBUkdFVF9BUkNIKQogaWZlcSAoJChUQVJH RVRfQVJDSCksYXJtKQpAQCAtNTcxLDkgKzU3MiwyMiBAQAogZ2VuLW9wLmg6IG9wLm8gJChEWU5H RU4pCiAJJChEWU5HRU4pIC1nIC1vICRAICQ8CiAKK2lmZXEgKCQoQVJDSCksbWlwcykKK29wLm86 IG9wMi5zCisJJChDQykgJChPUF9DRkxBR1MpICQoQ1BQRkxBR1MpIC1jIC1vICRAICQ8CisKK29w Mi5zOiBvcC5zICQoT1BfTUlQUykKKwkkKE9QX01JUFMpIDwgJDwgPiAkQAorCitvcC5zOiBvcC5j CisJJChDQykgJChPUF9DRkxBR1MpICQoQ1BQRkxBR1MpIC1TIC1vICRAICQ8CisKK2Vsc2UKIG9w Lm86IG9wLmMKIAkkKENDKSAkKE9QX0NGTEFHUykgJChDUFBGTEFHUykgLWMgLW8gJEAgJDwKIAor ZW5kaWYKKwogIyBIRUxQRVJfQ0ZMQUdTIGlzIHVzZWQgZm9yIGFsbCB0aGUgY29kZSBjb21waWxl ZCB3aXRoIHN0YXRpYyByZWdpc3RlcgogIyB2YXJpYWJsZXMKIGlmZXEgKCQoVEFSR0VUX0JBU0Vf QVJDSCksIGkzODYpCmRpZmYgLU51cmIgcWVtdS1jdnMvZHluZ2VuLmMgcWVtdS1sb29uZ3Nvbi9k eW5nZW4uYwotLS0gcWVtdS1jdnMvZHluZ2VuLmMJMjAwNy0wNS0wOSAwNjo1MTo0MS4wMDAwMDAw MDAgKzA4MDAKKysrIHFlbXUtbG9vbmdzb24vZHluZ2VuLmMJMjAwNy0wNi0xMiAyMjoyNDowNi4w MDAwMDAwMDAgKzA4MDAKQEAgLTI1MzcsMTYgKzI1MzcsNiBAQAogICAgICAgICAgICAgICAgICAg ICAgICAgYWRkZW5kID0gZ2V0MzIoKHVpbnQzMl90ICopKHRleHQgKyByZWwtPnJfb2Zmc2V0KSk7 CiAgICAgICAgICAgICAgICAgICAgICAgICByZWxvY19vZmZzZXQgPSByZWwtPnJfb2Zmc2V0IC0g c3RhcnRfb2Zmc2V0OwogCQkJc3dpdGNoICh0eXBlKSB7Ci0JCQljYXNlIFJfTUlQU18yNjoKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dGZpbGUsICIgICAgLyogUl9NSVBT XzI2IFJFTE9DLCBvZmZzZXQgMHgleCwgbmFtZSAlcyAqL1xuIiwKLQkJCQkgICAgcmVsLT5yX29m ZnNldCwgc3ltX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0 ZmlsZSwKLQkJCQkgICAgIiAgICAqKHVpbnQzMl90ICopKGdlbl9jb2RlX3B0ciArIDB4JXgpID0g IgotCQkJCSAgICAiKDB4JXggJiB+MHgzZmZmZmYpICIKLQkJCQkgICAgInwgKCgweCV4ICsgKCgl cyAtICgqKHVpbnQzMl90ICopKGdlbl9jb2RlX3B0ciArIDB4JXgpKSkgPj4gMikpICIKLQkJCQkg ICAgIiAgICYgMHgzZmZmZmYpO1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlbG9jX29mZnNldCwgYWRkZW5kLCBhZGRlbmQsIG5hbWUsIHJlbG9jX29mZnNldCk7Ci0J CQkgICAgYnJlYWs7CiAJCQljYXNlIFJfTUlQU19ISTE2OgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZwcmludGYob3V0ZmlsZSwgIiAgICAvKiBSX01JUFNfSEkxNiBSRUxPQywgb2Zmc2V0 IDB4JXgsIG5hbWUgJXMgKi9cbiIsCiAJCQkJICAgIHJlbC0+cl9vZmZzZXQsIHN5bV9uYW1lKTsK QEAgLTI1NTQsNyArMjU0NCw3IEBACiAJCQkJICAgICIgICAgKih1aW50MzJfdCAqKShnZW5fY29k ZV9wdHIgKyAweCV4KSA9ICIKIAkJCQkgICAgIigoKih1aW50MzJfdCAqKShnZW5fY29kZV9wdHIg KyAweCV4KSkgIgogCQkJCSAgICAiICYgfjB4ZmZmZikgIgotCQkJCSAgICAiIHwgKCgoJXMgLSAw eDgwMDApID4+IDE2KSAmIDB4ZmZmZik7XG4iLAorCQkJCSAgICAiIHwgKCgoJXMgKyAweDgwMDAp ID4+IDE2KSAmIDB4ZmZmZik7XG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVsb2Nfb2Zmc2V0LCByZWxvY19vZmZzZXQsIG5hbWUpOwogCQkJICAgIGJyZWFrOwogCQkJ Y2FzZSBSX01JUFNfTE8xNjoKQEAgLTI1NjcsMjcgKzI1NTcsNiBAQAogCQkJCSAgICAiIHwgKCVz ICYgMHhmZmZmKTtcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxv Y19vZmZzZXQsIHJlbG9jX29mZnNldCwgbmFtZSk7CiAJCQkgICAgYnJlYWs7Ci0JCQljYXNlIFJf TUlQU19QQzE2OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYob3V0ZmlsZSwg IiAgICAvKiBSX01JUFNfUEMxNiBSRUxPQywgb2Zmc2V0IDB4JXgsIG5hbWUgJXMgKi9cbiIsCi0J CQkJICAgIHJlbC0+cl9vZmZzZXQsIHN5bV9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmcHJpbnRmKG91dGZpbGUsCi0JCQkJICAgICIgICAgKih1aW50MzJfdCAqKShnZW5fY29k ZV9wdHIgKyAweCV4KSA9ICIKLQkJCQkgICAgIigweCV4ICYgfjB4ZmZmZikgIgotCQkJCSAgICAi fCAoKDB4JXggKyAoKCVzIC0gKCoodWludDMyX3QgKikoZ2VuX2NvZGVfcHRyICsgMHgleCkpKSA+ PiAyKSkgIgotCQkJCSAgICAiICAgJiAweGZmZmYpO1xuIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlbG9jX29mZnNldCwgYWRkZW5kLCBhZGRlbmQsIG5hbWUsIHJlbG9j X29mZnNldCk7Ci0JCQkgICAgYnJlYWs7Ci0JCQljYXNlIFJfTUlQU19HT1QxNjoKLQkJCWNhc2Ug Ul9NSVBTX0NBTEwxNjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKG91dGZp bGUsICIgICAgLyogUl9NSVBTX0dPVDE2IFJFTE9DLCBvZmZzZXQgMHgleCwgbmFtZSAlcyAqL1xu IiwKLQkJCQkgICAgcmVsLT5yX29mZnNldCwgc3ltX25hbWUpOwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZwcmludGYob3V0ZmlsZSwKLQkJCQkgICAgIiAgICAqKHVpbnQzMl90ICopKGdl bl9jb2RlX3B0ciArIDB4JXgpID0gIgotCQkJCSAgICAiKCgqKHVpbnQzMl90ICopKGdlbl9jb2Rl X3B0ciArIDB4JXgpKSAiCi0JCQkJICAgICIgJiB+MHhmZmZmKSAiCi0JCQkJICAgICIgfCAoKCgl cyAtIDB4ODAwMCkgPj4gMTYpICYgMHhmZmZmKTtcbiIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWxvY19vZmZzZXQsIHJlbG9jX29mZnNldCwgbmFtZSk7Ci0JCQkgICAg YnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJICAgIGVycm9yKCJ1bnN1cHBvcnRlZCBNSVBTIHJlbG9j YXRpb24gKCVkKSIsIHR5cGUpOwogCQkJfQpkaWZmIC1OdXJiIHFlbXUtY3ZzL29wX21pcHMuYyBx ZW11LWxvb25nc29uL29wX21pcHMuYwotLS0gcWVtdS1jdnMvb3BfbWlwcy5jCTE5NzAtMDEtMDEg MDg6MDA6MDAuMDAwMDAwMDAwICswODAwCisrKyBxZW11LWxvb25nc29uL29wX21pcHMuYwkyMDA3 LTA2LTEyIDIyOjI0OjA2LjAwMDAwMDAwMCArMDgwMApAQCAtMCwwICsxLDE2MCBAQAorLyoJcWVt dS9vcF9taXBzLmMKKyAqCisgKgkJCVBlbmcgSnVuIDxqdW43OTAzY25AZ21haWwuY29tPgorICov CisKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 c3RyaW5nLmg+CisKKyNkZWZpbmUJR0NDX01OT19BQklDQUxMUwkvLyBmYXN0ZXIKKy8vI2RlZmlu ZQlRRU1VX1ZFUlNJT05fNgorCisjaWZkZWYJUUVNVV9WRVJTSU9OXzYKK2ludCBleGl0X3RiX2tl eSA9IDA7CitjaGFyIGV4aXRfdGJfYnVmWzEwMjRdOworY2hhciBleGl0X3RiX3NwWzEwMjRdOwor CitpbnQgbGluZTIoY2hhciAqYnVmLCBpbnQgbnVtKQoreworCWlmKHN0cmNtcChidWYsICJcdGpc dCQzMVxuIikgIT0gMCkgeworCQlzdHJjYXQoZXhpdF90Yl9idWYsIGJ1Zik7CisJCWlmKHN0cnN0 cihidWYsICIkc3AiKSkKKwkJCXN0cmNhdChleGl0X3RiX3NwLCBidWYpOworCQlzdHJjcHkoYnVm LCAiIik7CisJCXJldHVybiAwOworCX0KKworCXNwcmludGYoYnVmLCAiXAorI0VYSVRfVEJcblwK KyVzXAorCWoJJDMxXG5cCisJbm9wXG5cCislc1wKKyRlbmRfJTA4WDpcblwKKwlqCSQzMVxuXAor IiwKKwkJZXhpdF90Yl9zcCwgZXhpdF90Yl9idWYsIG51bSk7CisKKwlleGl0X3RiX2tleSA9IDA7 CisKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgkvKiBRRU1VX1ZFUlNJT05fNiAqLworCitpbnQgbGlu ZShjaGFyICpidWYsIGludCBudW0pCit7CisJY2hhciBmdW5jWzI1Nl07CisKKyNpZmRlZglRRU1V X1ZFUlNJT05fNgorCS8vIGV4aXRfdGIKKwlpZihzdHJjbXAoYnVmLCAiI0VYSVRfVEJcbiIpID09 IDApIHsKKwkJZXhpdF90Yl9rZXkgPSAxOworCQlzdHJjcHkoYnVmLCAiIik7CisJCXN0cmNweShl eGl0X3RiX2J1ZiwgIiIpOworCQlzdHJjcHkoZXhpdF90Yl9zcCwgIiIpOworCQlyZXR1cm4gMDsK Kwl9CisjZW5kaWYKKworCS8vIGogJDMxICAtLT4gZW5kX1hYWDogaiAkMzEKKwlpZihzdHJjbXAo YnVmLCAiXHRqXHQkMzFcbiIpID09IDApIHsKKwkJc3ByaW50ZihidWYsICJcCiskZW5kXyUwOFg6 XG5cCisJagkkMzFcblwKKyIsIG51bSk7CisJCQlyZXR1cm4gMDsKKwl9CisKKyNpZmRlZglHQ0Nf TU5PX0FCSUNBTExTCisKKyNpZmRlZglRRU1VX1ZFUlNJT05fNgorCWlmKHN0cmNtcChidWYsICJc dGphbFx0JDJcbiIpID09IDApIHsKKwkJcmV0dXJuIDA7CisJfQorI2Vsc2UKKwkvLyBqYWwgJDIg IC0tPiAgamFsICR0OSAgKDAuOS4wKQorCWlmKHN0cmNtcChidWYsICJcdGphbFx0JDJcbiIpID09 IDApIHsKKwkJc3ByaW50ZihidWYsICJcCisJbW92ZQkkMjUsJDJcblwKKwlqYWwJJDI1XG5cCisi CisJCSk7CisJCXJldHVybiAwOworCX0KKyNlbmRpZgkvKiBRRU1VX1ZFUlNJT05fNiAqLworCisJ Ly8gamFsIGZ1bmMgIC0tPiBsdWkgKyBhZGRpdQorCWlmKHN0cm5jbXAoYnVmLCAiXHRqYWxcdCIs IDUpID09IDApIHsKKwkJKihzdHJjaHIoYnVmLCAnXG4nKSkgPSAwOworCQlzdHJjcHkoZnVuYywg YnVmICsgNSk7CisJCXNwcmludGYoYnVmLCAiXAorCWx1aQkkMjUsJSVoaSglcylcblwKKwlhZGRp dQkkMjUsJDI1LCUlbG8oJXMpXG5cCisJamFsCSQyNVxuXAorIiwKKwkJCQlmdW5jLCBmdW5jKTsK KwkJcmV0dXJuIDA7CisJfQorCisjZWxzZQkvKiBHQ0NfTU5PX0FCSUNBTExTICovCisKKwl7IGNo YXIgKnAsIHJlZ1s0XTsKKwkvLyBsdyAkPywlZ290KHZhcikoJDI4KSAgLS0+ICBsdWkgKyBhZGRp dQorCWlmKHN0cnN0cihidWYsICIlZ290IikpIHsKKwkJaWYoc3RybmNtcChidWYsICJcdGx3XHQk IiwgNSkpCisJCQlleGl0KDEpOworCQlwID0gYnVmICsgNDsKKwkJKnN0cmNocihwLCAnLCcpID0g MDsKKwkJc3RyY3B5KHJlZywgcCk7CisJCXAgPSBwICsgc3RybGVuKHJlZykgKyAxOworCQlwID0g c3RyY2hyKHAsICcoJykgKyAxOworCQkqc3RyY2hyKHAsICcpJykgPSAwOworCQlzdHJjcHkoZnVu YywgcCk7CisJCXNwcmludGYoYnVmLCAiXAorCWx1aQklcywlJWhpKCVzKVxuXAorCWFkZGl1CSVz LCVzLCUlbG8oJXMpXG5cCisiLAorCQkJCXJlZywgZnVuYywgcmVnLCByZWcsIGZ1bmMpOworCQly ZXR1cm4gMDsKKwl9CisKKwkvLyBsdyAkMjUsJWNhbGwxNihmdW5jKSgkMjgpICAtLT4gIGx1aSAr IGFkZGl1CisJaWYoc3Ryc3RyKGJ1ZiwgIiVjYWxsMTYiKSkgeworCQlpZihzdHJuY21wKGJ1Ziwg Ilx0bHdcdCQyNSwlY2FsbDE2IiwgMTUpKQorCQkJZXhpdCgxKTsKKwkJcCA9IHN0cmNocihidWYs ICcoJykgKyAxOworCQkqc3RyY2hyKHAsICcpJykgPSAwOworCQlzdHJjcHkoZnVuYywgcCk7CisJ CXNwcmludGYoYnVmLCAiXAorCWx1aQkkMjUsJSVoaSglcylcblwKKwlhZGRpdQkkMjUsJDI1LCUl bG8oJXMpXG5cCisiLAorCQkJCWZ1bmMsIGZ1bmMpOworCQlyZXR1cm4gMDsKKwl9CisJfQorCisj ZW5kaWYJLyogR0NDX01OT19BQklDQUxMUyAqLworCisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJY2hhciBidWZbMTAyNF07CisJaW50IG4gPSAw OworCisJd2hpbGUoZmdldHMoYnVmLCAxMDIzLCBzdGRpbikpIHsKKyNpZmRlZglRRU1VX1ZFUlNJ T05fNgorCQlpZihleGl0X3RiX2tleSkKKwkJCWxpbmUyKGJ1Ziwgbik7CisJCWVsc2UKKyNlbmRp ZgorCQkJbGluZShidWYsIG4pOworCQlwcmludGYoIiVzIiwgYnVmKTsKKwkJbisrOworCX0KKwly ZXR1cm4gMDsKK30K ------=_Part_4150_7084197.1181660224600--