From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27087 invoked by alias); 24 Sep 2002 12:23:30 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 27074 invoked from network); 24 Sep 2002 12:23:28 -0000 Received: from unknown (HELO d12lmsgate.de.ibm.com) (195.212.91.199) by sources.redhat.com with SMTP; 24 Sep 2002 12:23:28 -0000 Received: from d12relay01.de.ibm.com (d12relay01.de.ibm.com [9.165.215.22]) by d12lmsgate.de.ibm.com (8.12.3/8.12.3) with ESMTP id g8OCNPoN080168 for ; Tue, 24 Sep 2002 14:23:25 +0200 Received: from d12ml015.de.ibm.com (d12ml015_cs0 [9.165.223.40]) by d12relay01.de.ibm.com (8.12.3/NCO/VER6.4) with ESMTP id g8OCNPec077456 for ; Tue, 24 Sep 2002 14:23:25 +0200 Importance: Normal Sensitivity: To: gdb-patches@sources.redhat.com Message-ID: From: "Gerhard Tonn" Date: Tue, 24 Sep 2002 05:23:00 -0000 Subject: [PATCH RFC] DWARF2 CFI exploitation for Linux on S/390 MIME-Version: 1.0 Content-type: multipart/mixed; Boundary="0__=4EBBE6ADDFD789F48f9e8a93df938690918c4EBBE6ADDFD789F4" Content-Disposition: inline X-SW-Source: 2002-09/txt/msg00574.txt.bz2 --0__=4EBBE6ADDFD789F48f9e8a93df938690918c4EBBE6ADDFD789F4 Content-type: text/plain; charset=us-ascii Content-length: 1740 Hi, I am working on the DWARF2 CFI exploitation for s390. On s390 there are some changes to the already existing code necessary. 1) The sequence and number of DWARF2 registers are different from the gdb registers on s390 for some reason. 2) The DWARF2 CFA value is different from the frame_base value. In order to adapt the code to the first item, I have introduced #defines for DWARF2 registers and a REGNUM_TO_DWARF2_REG macro and its implementation. See the attached patch for details. In order to consider the second item I have adapted the LOC_REF_ARG symbol class handling in dwarf2read.c and findvar.c to use the BASEREG value if DWARF2 is active. I don't know what to do with LOC_LOCAL yet. At line 6432 in the current implementation of dwarf2read.c islocal is set to 1, if there's no identified frame pointer for the function. I am not sure if this is correct. If it is, I don't know how to handle it when CFA is different from frame_base. The problem is that I have to consider the LOC_LOCAL symbol class in findvar.c in this case without knowing the frame pointer. The following code fragment in dwarf2cfi.c around line 1316 seems to be intel specific, at least on s390 it doesn't make sense. Should I move it to a gdbarch function? if (i == SP_REGNUM) { context->reg[i].how = REG_CTX_VALUE; context->reg[i].loc.addr = cfa; } Finally I am interested in how signal frame and dummy frame handling is supposed to work with DWARF2 CFI support. Does anybody have done already work in this area? (See attached file: common-dwarf2.patch) Regards / Mit freundlichen Gruessen Gerhard Gerhard Tonn, Linux for eServer Development, +(49)-7031-16-4716, Lotus Notes: ton@ibmde, Internet: ton@de.ibm.com --0__=4EBBE6ADDFD789F48f9e8a93df938690918c4EBBE6ADDFD789F4 Content-type: application/octet-stream; name="common-dwarf2.patch" Content-Disposition: attachment; filename="common-dwarf2.patch" Content-transfer-encoding: base64 Content-length: 13778 LS0tIGdkYi01LjIuY3ZzMjAwMjA4MTgvZ2RiL2R3YXJmMmNmaS5jCTIwMDIt MDctMjMgMTc6MjY6NTQuMDAwMDAwMDAwICswMjAwDQorKysgZ2RiLTUuMi5j dnMyMDAyMDgxOC5iYWsyL2dkYi9kd2FyZjJjZmkuYwkyMDAyLTA5LTE4IDE2 OjIwOjQzLjAwMDAwMDAwMCArMDIwMA0KQEAgLTMyLDYgKzMyLDE2IEBADQog I2luY2x1ZGUgImR3YXJmMmNmaS5oIg0KICNpbmNsdWRlICJnZGJfYXNzZXJ0 LmgiDQogDQorI2lmbmRlZiBEV0FSRjJfTlVNX1JFR1MNCisjZGVmaW5lIERX QVJGMl9OVU1fUkVHUyBOVU1fUkVHUw0KKyNlbmRpZg0KKyNpZm5kZWYgRFdB UkYyX1NQX1JFR05VTQ0KKyNkZWZpbmUgRFdBUkYyX1NQX1JFR05VTSBTUF9S RUdOVU0NCisjZW5kaWYNCisjaWZuZGVmIERXQVJGMl9QQ19SRUdOVU0NCisj ZGVmaW5lIERXQVJGMl9QQ19SRUdOVU0gUENfUkVHTlVNDQorI2VuZGlmDQor DQogLyogQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5IC0gaG9sZHMgaW5mb3Jt YXRpb24gdGhhdCBpcyBzaGFyZWQgYW1vbmcgbWFueQ0KICAgIEZyYW1lIERl c2NyaXB0b3JzLiAgKi8NCiBzdHJ1Y3QgY2llX3VuaXQNCkBAIC0yOTEsNyAr MzAxLDcgQEANCiB7DQogICBzdHJ1Y3QgY29udGV4dCAqY29udGV4dDsNCiAN Ci0gIGludCByZWdzX3NpemUgPSBzaXplb2YgKHN0cnVjdCBjb250ZXh0X3Jl ZykgKiBOVU1fUkVHUzsNCisgIGludCByZWdzX3NpemUgPSBzaXplb2YgKHN0 cnVjdCBjb250ZXh0X3JlZykgKiBEV0FSRjJfTlVNX1JFR1M7DQogDQogICBj b250ZXh0ID0gKHN0cnVjdCBjb250ZXh0ICopIG9ic3RhY2tfYWxsb2MgKCZ1 bndpbmRfdG1wX29ic3RhY2ssDQogCQkJCQkgICAgICBzaXplb2YgKHN0cnVj dCBjb250ZXh0KSk7DQpAQCAtMzA4LDcgKzMxOCw3IEBADQogew0KICAgc3Ry dWN0IGZyYW1lX3N0YXRlICpmczsNCiANCi0gIGludCByZWdzX3NpemUgPSBz aXplb2YgKHN0cnVjdCBmcmFtZV9zdGF0ZV9yZWcpICogTlVNX1JFR1M7DQor ICBpbnQgcmVnc19zaXplID0gc2l6ZW9mIChzdHJ1Y3QgZnJhbWVfc3RhdGVf cmVnKSAqIERXQVJGMl9OVU1fUkVHUzsNCiANCiAgIGZzID0gKHN0cnVjdCBm cmFtZV9zdGF0ZSAqKSBvYnN0YWNrX2FsbG9jICgmdW53aW5kX3RtcF9vYnN0 YWNrLA0KIAkJCQkJICAgICBzaXplb2YgKHN0cnVjdCBmcmFtZV9zdGF0ZSkp Ow0KQEAgLTMzNSw3ICszNDUsNyBAQA0KIHN0YXRpYyB2b2lkDQogY29udGV4 dF9jcHkgKHN0cnVjdCBjb250ZXh0ICpkc3QsIHN0cnVjdCBjb250ZXh0ICpz cmMpDQogew0KLSAgaW50IHJlZ3Nfc2l6ZSA9IHNpemVvZiAoc3RydWN0IGNv bnRleHRfcmVnKSAqIE5VTV9SRUdTOw0KKyAgaW50IHJlZ3Nfc2l6ZSA9IHNp emVvZiAoc3RydWN0IGNvbnRleHRfcmVnKSAqIERXQVJGMl9OVU1fUkVHUzsN CiAgIHN0cnVjdCBjb250ZXh0X3JlZyAqZHJlZzsNCiANCiAgIC8qIFN0cnVj dHVyZSBkc3QgY29udGFpbnMgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mDQpA QCAtODY3LDE0ICs4NzcsMTUgQEANCiAgIHN3aXRjaCAoY29udGV4dC0+cmVn W3JlZ251bV0uaG93KQ0KICAgICB7DQogICAgIGNhc2UgUkVHX0NUWF9VTlNB VkVEOg0KLSAgICAgIHJlYWRfcmVnaXN0ZXJfZ2VuIChyZWdudW0sIHJlZyk7 DQorICAgICAgcmVhZF9yZWdpc3Rlcl9nZW4gKERXQVJGMl9SRUdfVE9fUkVH TlVNKHJlZ251bSksIHJlZyk7DQogICAgICAgYnJlYWs7DQogICAgIGNhc2Ug UkVHX0NUWF9TQVZFRF9PRkZTRVQ6DQogICAgICAgdGFyZ2V0X3JlYWRfbWVt b3J5IChjb250ZXh0LT5jZmEgKyBjb250ZXh0LT5yZWdbcmVnbnVtXS5sb2Mu b2Zmc2V0LA0KIAkJCSAgcmVnLCBSRUdJU1RFUl9SQVdfU0laRSAocmVnbnVt KSk7DQogICAgICAgYnJlYWs7DQogICAgIGNhc2UgUkVHX0NUWF9TQVZFRF9S RUc6DQotICAgICAgcmVhZF9yZWdpc3Rlcl9nZW4gKGNvbnRleHQtPnJlZ1ty ZWdudW1dLmxvYy5yZWcsIHJlZyk7DQorICAgICAgcmVhZF9yZWdpc3Rlcl9n ZW4gKERXQVJGMl9SRUdfVE9fUkVHTlVNKGNvbnRleHQtPnJlZ1tyZWdudW1d LmxvYy5yZWcpLA0KKwkJCXJlZyk7DQogICAgICAgYnJlYWs7DQogICAgIGNh c2UgUkVHX0NUWF9TQVZFRF9BRERSOg0KICAgICAgIHRhcmdldF9yZWFkX21l bW9yeSAoY29udGV4dC0+cmVnW3JlZ251bV0ubG9jLmFkZHIsDQpAQCAtMTMx MSwxNiArMTMyMiwxOCBAQA0KICAgICBvcmlnX2NvbnRleHQtPmNmYSA9IGNm YTsNCiANCiAgIC8qIENvbXB1dGUgdGhlIGFkZHJlc3NlcyBvZiBhbGwgcmVn aXN0ZXJzIHNhdmVkIGluIHRoaXMgZnJhbWUuICAqLw0KLSAgZm9yIChpID0g MDsgaSA8IE5VTV9SRUdTOyArK2kpDQorICBmb3IgKGkgPSAwOyBpIDwgRFdB UkYyX05VTV9SRUdTOyArK2kpDQogICAgIHN3aXRjaCAoZnMtPnJlZ3MucmVn W2ldLmhvdykNCiAgICAgICB7DQogICAgICAgY2FzZSBSRUdfVU5TQVZFRDoN Ci0JaWYgKGkgPT0gU1BfUkVHTlVNKQ0KKyNpZiAwDQorCWlmIChpID09IERX QVJGMl9TUF9SRUdOVU0pDQogCSAgew0KIAkgICAgY29udGV4dC0+cmVnW2ld LmhvdyA9IFJFR19DVFhfVkFMVUU7DQogCSAgICBjb250ZXh0LT5yZWdbaV0u bG9jLmFkZHIgPSBjZmE7DQogCSAgfQ0KIAllbHNlDQorI2VuZGlmDQogCSAg Y29udGV4dC0+cmVnW2ldLmhvdyA9IFJFR19DVFhfVU5TQVZFRDsNCiAJYnJl YWs7DQogICAgICAgY2FzZSBSRUdfU0FWRURfT0ZGU0VUOg0KQEAgLTEzNjks NiArMTM4Miw3IEBADQogCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19M SU5FX18sICJiYWQgc3dpdGNoIik7DQogICAgICAgfQ0KICAgZ2V0X3JlZyAo KGNoYXIgKikgJmNvbnRleHQtPnJhLCBjb250ZXh0LCBmcy0+cmV0YWRkcl9j b2x1bW4pOw0KKyAgY29udGV4dC0+cmE9QUREUl9CSVRTX1JFTU9WRShjb250 ZXh0LT5yYSk7DQogICB1bndpbmRfdG1wX29ic3RhY2tfZnJlZSAoKTsNCiB9 DQogDQpAQCAtMTczMSw3ICsxNzQ1LDcgQEANCiAgIGlmIChmcy0+Y2ZhX2hv dyA9PSBDRkFfUkVHX09GRlNFVCkNCiAgICAgew0KICAgICAgIHZhbCAtPSBm cy0+Y2ZhX29mZnNldDsNCi0gICAgICB3cml0ZV9yZWdpc3Rlcl9nZW4gKGZz LT5jZmFfcmVnLCAoY2hhciAqKSAmdmFsKTsNCisgICAgICB3cml0ZV9yZWdp c3Rlcl9nZW4gKERXQVJGMl9SRUdfVE9fUkVHTlVNKGZzLT5jZmFfcmVnKSwg KGNoYXIgKikgJnZhbCk7DQogICAgIH0NCiAgIGVsc2UNCiAgICAgd2Fybmlu ZyAoIkNhbid0IHdyaXRlIGZwLiIpOw0KQEAgLTE3NDcsMTEgKzE3NjEsMTIg QEANCiAgIGNoYXIgKnJlZ2J1ZiA9IGFsbG9jYSAoTUFYX1JFR0lTVEVSX1JB V19TSVpFKTsNCiAgIGludCByZWdudW07DQogDQotICBmb3IgKHJlZ251bSA9 IDA7IHJlZ251bSA8IE5VTV9SRUdTOyByZWdudW0rKykNCisgIGZvciAocmVn bnVtID0gMDsgcmVnbnVtIDwgRFdBUkYyX05VTV9SRUdTOyByZWdudW0rKykN CiAgICAgew0KICAgICAgIGdldF9yZWcgKHJlZ2J1ZiwgVU5XSU5EX0NPTlRF WFQgKGZpKSwgcmVnbnVtKTsNCi0gICAgICB3cml0ZV9yZWdpc3Rlcl9ieXRl cyAoUkVHSVNURVJfQllURSAocmVnbnVtKSwgcmVnYnVmLA0KLQkJCSAgICBS RUdJU1RFUl9SQVdfU0laRSAocmVnbnVtKSk7DQorICAgICAgd3JpdGVfcmVn aXN0ZXJfYnl0ZXMgKFJFR0lTVEVSX0JZVEUgKERXQVJGMl9SRUdfVE9fUkVH TlVNKHJlZ251bSkpLA0KKwkJCSAgICByZWdidWYsDQorCQkJICAgIFJFR0lT VEVSX1JBV19TSVpFIChEV0FSRjJfUkVHX1RPX1JFR05VTShyZWdudW0pKSk7 DQogICAgIH0NCiAgIHdyaXRlX3JlZ2lzdGVyIChQQ19SRUdOVU0sIFVOV0lO RF9DT05URVhUIChmaSktPnJhKTsNCiANCkBAIC0xNzkzLDcgKzE4MDgsNyBA QA0KIGNmaV9pbml0X2ZyYW1lX3BjIChpbnQgZnJvbWxlYWYsIHN0cnVjdCBm cmFtZV9pbmZvICpmaSkNCiB7DQogICBpZiAoZmktPm5leHQpDQotICAgIGdl dF9yZWcgKChjaGFyICopICYoZmktPnBjKSwgVU5XSU5EX0NPTlRFWFQgKGZp LT5uZXh0KSwgUENfUkVHTlVNKTsNCisgICAgZmktPnBjID0gY2ZpX2dldF9y YSAoZmktPm5leHQpOw0KICAgZWxzZQ0KICAgICBmaS0+cGMgPSByZWFkX3Bj ICgpOw0KIH0NCkBAIC0xODA5LDkgKzE4MjQsOSBAQA0KICAgZnMgPSBmcmFt ZV9zdGF0ZV9hbGxvYyAoKTsNCiAgIGZpLT5jb250ZXh0ID0gZnJhbWVfb2Jz dGFja19hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgY29udGV4dCkpOw0KICAgVU5X SU5EX0NPTlRFWFQgKGZpKS0+cmVnID0NCi0gICAgZnJhbWVfb2JzdGFja19h bGxvYyAoc2l6ZW9mIChzdHJ1Y3QgY29udGV4dF9yZWcpICogTlVNX1JFR1Mp Ow0KKyAgICBmcmFtZV9vYnN0YWNrX2FsbG9jIChzaXplb2YgKHN0cnVjdCBj b250ZXh0X3JlZykgKiBEV0FSRjJfTlVNX1JFR1MpOw0KICAgbWVtc2V0IChV TldJTkRfQ09OVEVYVCAoZmkpLT5yZWcsIDAsDQotCSAgc2l6ZW9mIChzdHJ1 Y3QgY29udGV4dF9yZWcpICogTlVNX1JFR1MpOw0KKwkgIHNpemVvZiAoc3Ry dWN0IGNvbnRleHRfcmVnKSAqIERXQVJGMl9OVU1fUkVHUyk7DQogDQogICBp ZiAoZmktPm5leHQpDQogICAgIHsNCkBAIC0xODcxLDcgKzE4ODYsNyBAQA0K ICAgZWxzZQ0KICAgICB7DQogICAgICAgZnJhbWUgPSBmcmFtZS0+bmV4dDsN Ci0gICAgICBzd2l0Y2ggKFVOV0lORF9DT05URVhUIChmcmFtZSktPnJlZ1ty ZWdudW1dLmhvdykNCisgICAgICBzd2l0Y2ggKFVOV0lORF9DT05URVhUIChm cmFtZSktPnJlZ1tSRUdOVU1fVE9fRFdBUkYyX1JFRyhyZWdudW0pXS5ob3cp DQogCXsNCiAJY2FzZSBSRUdfQ1RYX1VOU0FWRUQ6DQogCSAgcmVhZF9yZWdp c3Rlcl9nZW4gKHJlZ251bSwgcmF3X2J1ZmZlcik7DQpAQCAtMTg4MiwzNSAr MTg5NywzNyBAQA0KIAkgIGJyZWFrOw0KIAljYXNlIFJFR19DVFhfU0FWRURf T0ZGU0VUOg0KIAkgIHRhcmdldF9yZWFkX21lbW9yeSAoVU5XSU5EX0NPTlRF WFQgKGZyYW1lKS0+Y2ZhICsNCi0JCQkgICAgICBVTldJTkRfQ09OVEVYVCAo ZnJhbWUpLT5yZWdbcmVnbnVtXS5sb2Mub2Zmc2V0LA0KLQkJCSAgICAgIHJh d19idWZmZXIsIFJFR0lTVEVSX1JBV19TSVpFIChyZWdudW0pKTsNCisJCQkg ICAgICBVTldJTkRfQ09OVEVYVCAoZnJhbWUpLT5yZWdbUkVHTlVNX1RPX0RX QVJGMl9SRUcocmVnbnVtKV0ubG9jLm9mZnNldCwNCisJCQkgICAgICByYXdf YnVmZmVyLA0KKwkJCSAgICAgIFJFR0lTVEVSX1JBV19TSVpFIChSRUdOVU1f VE9fRFdBUkYyX1JFRyhyZWdudW0pKSk7DQogCSAgaWYgKGx2YWwgIT0gTlVM TCkNCiAJICAgICpsdmFsID0gbHZhbF9tZW1vcnk7DQogCSAgaWYgKGFkZHJw ICE9IE5VTEwpDQogCSAgICAqYWRkcnAgPQ0KIAkgICAgICBVTldJTkRfQ09O VEVYVCAoZnJhbWUpLT5jZmEgKw0KLQkgICAgICBVTldJTkRfQ09OVEVYVCAo ZnJhbWUpLT5yZWdbcmVnbnVtXS5sb2Mub2Zmc2V0Ow0KKwkgICAgICBVTldJ TkRfQ09OVEVYVCAoZnJhbWUpLT5yZWdbUkVHTlVNX1RPX0RXQVJGMl9SRUco cmVnbnVtKV0ubG9jLm9mZnNldDsNCiAJICBicmVhazsNCiAJY2FzZSBSRUdf Q1RYX1NBVkVEX1JFRzoNCi0JICByZWFkX3JlZ2lzdGVyX2dlbiAoVU5XSU5E X0NPTlRFWFQgKGZyYW1lKS0+cmVnW3JlZ251bV0ubG9jLnJlZywNCi0JCQkg ICAgIHJhd19idWZmZXIpOw0KKwkgIHJlYWRfcmVnaXN0ZXJfZ2VuIChEV0FS RjJfUkVHX1RPX1JFR05VTShVTldJTkRfQ09OVEVYVCAoZnJhbWUpLT5yZWdb UkVHTlVNX1RPX0RXQVJGMl9SRUcocmVnbnVtKV0ubG9jLnJlZyksDQorCQkJ ICAgICByYXdfYnVmZmVyKTsNCiAJICBpZiAobHZhbCAhPSBOVUxMKQ0KIAkg ICAgKmx2YWwgPSBsdmFsX3JlZ2lzdGVyOw0KIAkgIGlmIChhZGRycCAhPSBO VUxMKQ0KIAkgICAgKmFkZHJwID0NCi0JICAgICAgUkVHSVNURVJfQllURSAo VU5XSU5EX0NPTlRFWFQgKGZyYW1lKS0+cmVnW3JlZ251bV0ubG9jLnJlZyk7 DQorCSAgICAgIFJFR0lTVEVSX0JZVEUgKFVOV0lORF9DT05URVhUIChmcmFt ZSktPnJlZ1tSRUdOVU1fVE9fRFdBUkYyX1JFRyhyZWdudW0pXS5sb2MucmVn KTsNCiAJICBicmVhazsNCiAJY2FzZSBSRUdfQ1RYX1NBVkVEX0FERFI6DQot CSAgdGFyZ2V0X3JlYWRfbWVtb3J5IChVTldJTkRfQ09OVEVYVCAoZnJhbWUp LT5yZWdbcmVnbnVtXS5sb2MuYWRkciwNCi0JCQkgICAgICByYXdfYnVmZmVy LCBSRUdJU1RFUl9SQVdfU0laRSAocmVnbnVtKSk7DQorCSAgdGFyZ2V0X3Jl YWRfbWVtb3J5IChVTldJTkRfQ09OVEVYVCAoZnJhbWUpLT5yZWdbUkVHTlVN X1RPX0RXQVJGMl9SRUcocmVnbnVtKV0ubG9jLmFkZHIsDQorCQkJICAgICAg cmF3X2J1ZmZlciwNCisJCQkgICAgICBSRUdJU1RFUl9SQVdfU0laRSAoUkVH TlVNX1RPX0RXQVJGMl9SRUcocmVnbnVtKSkpOw0KIAkgIGlmIChsdmFsICE9 IE5VTEwpDQogCSAgICAqbHZhbCA9IGx2YWxfbWVtb3J5Ow0KIAkgIGlmIChh ZGRycCAhPSBOVUxMKQ0KLQkgICAgKmFkZHJwID0gVU5XSU5EX0NPTlRFWFQg KGZyYW1lKS0+cmVnW3JlZ251bV0ubG9jLmFkZHI7DQorCSAgICAqYWRkcnAg PSBVTldJTkRfQ09OVEVYVCAoZnJhbWUpLT5yZWdbUkVHTlVNX1RPX0RXQVJG Ml9SRUcocmVnbnVtKV0ubG9jLmFkZHI7DQogCSAgYnJlYWs7DQogCWNhc2Ug UkVHX0NUWF9WQUxVRToNCi0JICBtZW1jcHkgKHJhd19idWZmZXIsICZVTldJ TkRfQ09OVEVYVCAoZnJhbWUpLT5yZWdbcmVnbnVtXS5sb2MuYWRkciwNCi0J CSAgUkVHSVNURVJfUkFXX1NJWkUgKHJlZ251bSkpOw0KKwkgIG1lbWNweSAo cmF3X2J1ZmZlciwgJlVOV0lORF9DT05URVhUIChmcmFtZSktPnJlZ1tSRUdO VU1fVE9fRFdBUkYyX1JFRyhyZWdudW0pXS5sb2MuYWRkciwNCisJCSAgUkVH SVNURVJfUkFXX1NJWkUgKFJFR05VTV9UT19EV0FSRjJfUkVHKHJlZ251bSkp KTsNCiAJICBpZiAobHZhbCAhPSBOVUxMKQ0KIAkgICAgKmx2YWwgPSBub3Rf bHZhbDsNCiAJICBpZiAob3B0aW1pemVkICE9IE5VTEwpDQotLS0gZ2RiLTUu Mi5jdnMyMDAyMDgxOC9nZGIvZ2RiYXJjaC5zaAkyMDAyLTA4LTE3IDA3OjI5 OjA2LjAwMDAwMDAwMCArMDIwMA0KKysrIGdkYi01LjIuY3ZzMjAwMjA4MTgu YmFrMi9nZGIvZ2RiYXJjaC5zaAkyMDAyLTA5LTE4IDE0OjM2OjUyLjAwMDAw MDAwMCArMDIwMA0KQEAgLTQ1OCw2ICs0NTgsNyBAQA0KICMgdG8gbWFwIG9u ZSB0byBvbmUgb250byB0aGUgc2RiIHJlZ2lzdGVyIG51bWJlcnMuDQogZjoy OlNEQl9SRUdfVE9fUkVHTlVNOmludDpzZGJfcmVnX3RvX3JlZ251bTppbnQg c2RiX3JlZ25yOnNkYl9yZWducjo6Om5vX29wX3JlZ190b19yZWdudW06OjAN CiBmOjI6RFdBUkYyX1JFR19UT19SRUdOVU06aW50OmR3YXJmMl9yZWdfdG9f cmVnbnVtOmludCBkd2FyZjJfcmVnbnI6ZHdhcmYyX3JlZ25yOjo6bm9fb3Bf cmVnX3RvX3JlZ251bTo6MA0KK2Y6MjpSRUdOVU1fVE9fRFdBUkYyX1JFRzpp bnQ6cmVnbnVtX3RvX2R3YXJmMl9yZWc6aW50IHJlZ251bTpyZWdudW06Ojpu b19vcF9yZWdudW1fdG9fcmVnOjowDQogZjoyOlJFR0lTVEVSX05BTUU6Y29u c3QgY2hhciAqOnJlZ2lzdGVyX25hbWU6aW50IHJlZ25yOnJlZ25yOjo6bGVn YWN5X3JlZ2lzdGVyX25hbWU6OjANCiB2OjI6UkVHSVNURVJfU0laRTppbnQ6 cmVnaXN0ZXJfc2l6ZTo6OjowOi0xDQogdjoyOlJFR0lTVEVSX0JZVEVTOmlu dDpyZWdpc3Rlcl9ieXRlczo6OjowOi0xDQotLS0gZ2RiLTUuMi5jdnMyMDAy MDgxOC9nZGIvYXJjaC11dGlscy5jCTIwMDItMDgtMTcgMDc6Mjk6MDYuMDAw MDAwMDAwICswMjAwDQorKysgZ2RiLTUuMi5jdnMyMDAyMDgxOC5iYWsyL2dk Yi9hcmNoLXV0aWxzLmMJMjAwMi0wOS0xOCAxNDozNjo1Mi4wMDAwMDAwMDAg KzAyMDANCkBAIC0yOTMsNiArMjkzLDEyIEBADQogICByZXR1cm4gcmVnOw0K IH0NCiANCitpbnQNCitub19vcF9yZWdudW1fdG9fcmVnIChpbnQgcmVnbnVt KQ0KK3sNCisgIHJldHVybiByZWdudW07DQorfQ0KKw0KIC8qIEZvciB1c2Ug YnkgZnJhbWVfYXJnc19hZGRyZXNzIGFuZCBmcmFtZV9sb2NhbHNfYWRkcmVz cy4gICovDQogQ09SRV9BRERSDQogZGVmYXVsdF9mcmFtZV9hZGRyZXNzIChz dHJ1Y3QgZnJhbWVfaW5mbyAqZmkpDQotLS0gZ2RiLTUuMi5jdnMyMDAyMDgx OC9nZGIvZHdhcmYycmVhZC5jCTIwMDItMDgtMDEgMTc6MTU6MzEuMDAwMDAw MDAwICswMjAwDQorKysgZ2RiLTUuMi5jdnMyMDAyMDgxOC5iYWsyL2dkYi9k d2FyZjJyZWFkLmMJMjAwMi0wOS0xOCAxNDozNjo1Mi4wMDAwMDAwMDAgKzAy MDANCkBAIC00ODIxLDYgKzQ4MjEsNyBAQA0KIAkJICAgICAgaWYgKGJhc2Vy ZWcgIT0gZnJhbWVfYmFzZV9yZWcpDQogCQkJY29tcGxhaW4gKCZkd2FyZjJf Y29tcGxleF9sb2NhdGlvbl9leHByKTsNCiAJCSAgICAgIFNZTUJPTF9DTEFT UyAoc3ltKSA9IExPQ19SRUZfQVJHOw0KKwkJICAgICAgU1lNQk9MX0JBU0VS RUcgKHN5bSkgPSBEV0FSRjJfUkVHX1RPX1JFR05VTSAoYmFzZXJlZyk7DQog CQkgICAgfQ0KIAkJICBlbHNlDQogCQkgICAgew0KLS0tIGdkYi01LjIuY3Zz MjAwMjA4MTgvZ2RiL2FyY2gtdXRpbHMuaAkyMDAyLTA4LTE3IDA3OjI5OjA2 LjAwMDAwMDAwMCArMDIwMA0KKysrIGdkYi01LjIuY3ZzMjAwMjA4MTguYmFr L2FyY2gtdXRpbHMuaAkyMDAyLTA5LTA5IDE1OjE1OjUxLjAwMDAwMDAwMCAr MDIwMA0KQEAgLTEwNiw2ICsxMDYsMTAgQEANCiANCiBleHRlcm4gaW50IG5v X29wX3JlZ190b19yZWdudW0gKGludCByZWcpOw0KIA0KKy8qIE5vLW9wIGNv bnZlcnNpb24gb2YgcmVnbnVtIHRvIHJlZy4gKi8NCisNCitleHRlcm4gaW50 IG5vX29wX3JlZ251bV90b19yZWcgKGludCByZWdudW0pOw0KKw0KIC8qIERl ZmF1bHQgZnJhbWVfYXJnc19hZGRyZXNzIGFuZCBmcmFtZV9sb2NhbHNfYWRk cmVzcy4gICovDQogDQogZXh0ZXJuIENPUkVfQUREUiBkZWZhdWx0X2ZyYW1l X2FkZHJlc3MgKHN0cnVjdCBmcmFtZV9pbmZvICopOw0KLS0tIGdkYi01LjIu Y3ZzMjAwMjA4MTgvZ2RiL2ZpbmR2YXIuYwkyMDAyLTA3LTI1IDA1OjExOjAz LjAwMDAwMDAwMCArMDIwMA0KKysrIGdkYi01LjIuY3ZzMjAwMjA4MTguYmFr L2dkYi9maW5kdmFyLmMJMjAwMi0wOS0yNCAxMjoyMDoxNC4wMDAwMDAwMDAg KzAyMDANCkBAIC0zNSw2ICszNSw4IEBADQogI2luY2x1ZGUgInJlZ2NhY2hl LmgiDQogI2luY2x1ZGUgImJ1aWx0aW4tcmVncy5oIg0KIA0KK2V4dGVybiB1 bnNpZ25lZCBpbnQgZHdhcmZfZnJhbWVfc2l6ZTsNCisNCiAvKiBCYXNpYyBi eXRlLXN3YXBwaW5nIHJvdXRpbmVzLiAgR0RCIGhhcyBuZWVkZWQgdGhlc2Ug Zm9yIGEgbG9uZyB0aW1lLi4uDQogICAgQWxsIGV4dHJhY3QgYSB0YXJnZXQt Zm9ybWF0IGludGVnZXIgYXQgQUREUiB3aGljaCBpcyBMRU4gYnl0ZXMgbG9u Zy4gICovDQogDQpAQCAtNTA2LDEzICs1MDgsMjcgQEANCiANCiAgICAgY2Fz ZSBMT0NfUkVGX0FSRzoNCiAgICAgICB7DQorCXN0cnVjdCB2YWx1ZSAqcmVn dmFsOw0KIAlzdHJ1Y3QgdmFsdWUgKnJlZjsNCiAJQ09SRV9BRERSIGFyZ3Jl ZjsNCi0JaWYgKGZyYW1lID09IE5VTEwpDQotCSAgcmV0dXJuIDA7DQotCWFy Z3JlZiA9IEZSQU1FX0FSR1NfQUREUkVTUyAoZnJhbWUpOw0KLQlpZiAoIWFy Z3JlZikNCi0JICByZXR1cm4gMDsNCisNCisJLyogSXMgZHdhcmYyIGRlYnVn IGZvcm1hdCBhY3RpdmU/ICovDQorCWlmKGR3YXJmX2ZyYW1lX3NpemUpIA0K KwkgIHsNCisJICAgIHJlZ3ZhbCA9IHZhbHVlX2Zyb21fcmVnaXN0ZXIgKGxv b2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLA0KKwkJCQkgICAgICAgICAgU1lN Qk9MX0JBU0VSRUcgKHZhciksIGZyYW1lKTsNCisJICAgIGlmIChyZWd2YWwg PT0gTlVMTCkNCisJICAgICAgZXJyb3IgKCJWYWx1ZSBvZiBiYXNlIHJlZ2lz dGVyIG5vdCBhdmFpbGFibGUuIik7DQorCSAgICBhcmdyZWYgPSB2YWx1ZV9h c19hZGRyZXNzIChyZWd2YWwpOw0KKwkgIH0NCisJZWxzZQ0KKwkgIHsNCisJ ICAgIGlmIChmcmFtZSA9PSBOVUxMKQ0KKwkgICAgICByZXR1cm4gMDsNCisJ ICAgIGFyZ3JlZiA9IEZSQU1FX0FSR1NfQUREUkVTUyAoZnJhbWUpOw0KKwkg ICAgaWYgKCFhcmdyZWYpDQorCSAgICAgIHJldHVybiAwOw0KKwkgIH0gIA0K IAlhcmdyZWYgKz0gU1lNQk9MX1ZBTFVFICh2YXIpOw0KIAlyZWYgPSB2YWx1 ZV9hdCAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFyZ3JlZiwgTlVM TCk7DQogCWFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWYpOw0K --0__=4EBBE6ADDFD789F48f9e8a93df938690918c4EBBE6ADDFD789F4--