From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 165853858D35 for ; Tue, 28 Jul 2020 05:25:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 165853858D35 Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 06S51WW0181765 for ; Tue, 28 Jul 2020 01:25:48 -0400 Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0b-001b2d01.pphosted.com with ESMTP id 32j0a5djfv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 28 Jul 2020 01:25:48 -0400 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 06S5PdOs030068 for ; Tue, 28 Jul 2020 05:25:46 GMT Received: from b06avi18626390.portsmouth.uk.ibm.com (b06avi18626390.portsmouth.uk.ibm.com [9.149.26.192]) by ppma03ams.nl.ibm.com with ESMTP id 32gcpx321d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 28 Jul 2020 05:25:46 +0000 Received: from d06av21.portsmouth.uk.ibm.com (d06av21.portsmouth.uk.ibm.com [9.149.105.232]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 06S5OGmi17105216 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 28 Jul 2020 05:24:16 GMT Received: from d06av21.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D34065204F; Tue, 28 Jul 2020 05:25:41 +0000 (GMT) Received: from [9.200.56.98] (unknown [9.200.56.98]) by d06av21.portsmouth.uk.ibm.com (Postfix) with ESMTP id B3E1A52063; Tue, 28 Jul 2020 05:25:40 +0000 (GMT) To: gcc-patches@gcc.gnu.org Cc: segher.boessenkool@nl.ibm.com From: HAO CHEN GUI Subject: [PATCH, rs6000] Add non-relative jump table support for 64bit rs6000 Message-ID: Date: Tue, 28 Jul 2020 13:25:36 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------4E647822FAD795DC9B9F7E46" Content-Language: en-US X-TM-AS-GCONF: 00 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-07-28_01:2020-07-27, 2020-07-28 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=15 bulkscore=0 phishscore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 adultscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 clxscore=1034 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2007280033 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_NUMSUBJECT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Jul 2020 05:25:51 -0000 This is a multi-part message in MIME format. --------------4E647822FAD795DC9B9F7E46 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Hi, This patch adds non-relative jump table support for 64bit rs6000. It implements ASM_OUTPUT_ADDR_VEC_ELT and corresponding expansion of jump table instruction for 64bit rs6000. We want to put non-relative jump table in data.rel.ro section for rs6000. So I add a new target hook - TARGET_ASM_SELECT_JUMPTABLE_SECTION to choose which section jump table should be put in. It puts the jump table in data.rel.ro for 64bit rs6000. For other platforms, it calls targetm.asm_out.function_rodata_section, just as before. We want to have an option to use non-relative jump table even when PIC flag is set. So I add a new option - "mforce-nonrelative-jumptables" for rs6000.  It enables the feature by default. The option takes effect in target hook - TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC. static bool rs6000_gen_pic_addr_diff_vec (void) {   return TARGET_32BIT || !rs6000_force_nonrelative_jumptables; } The attachments are the patch diff file and change log file. Bootstrapped and tested on powerpc64le-linux-gnu with no regressions.  Is this okay for trunk? Any recommendations? Thanks a lot. --------------4E647822FAD795DC9B9F7E46 Content-Type: text/plain; charset=UTF-8; name="ChangeLog" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ChangeLog" MjAxOS0xMS0zMCAgSGFvY2hlbiBHdWkgIDxndWloYW9jQGdjYy5nbnUub3JnPg0KDQogICAg ICAgICogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VD VElPTik6IFJlZGVmaW5lLg0KICAgICAgICAqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKFRB UkdFVF9BU01fR0VORVJBVEVfUElDX0FERFJfRElGRl9WRUMsVEFSR0VUX0FTTV9TRUxFQ1Rf SlVNUFRBQkxFX1NFQ1RJT04pOiBJbXBsZW1lbnQgdHdvIGhvb2tzLg0KCQkqIGNvbmZpZy9y czYwMDAvcnM2MDAwLmggKENBU0VfVkVDVE9SX1BDX1JFTEFUSVZFLENBU0VfVkVDVE9SX01P REUpIFJlZGVmaW5lLg0KCQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChub25yZWxhdGl2 ZV90YWJsZWp1bXBkaSwgbm9ucmVsYXRpdmVfdGFibGVqdW1wZGlfbm9zcGVjKSBBZGQgdHdv IGV4cGFuc2lvbnMuDQoJCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IChtZm9yY2Utbm9u cmVsYXRpdmUtanVtcHRhYmxlcykgQWRkIGEgbmV3IG9wdGlvbnMgZm9yIHJzNjAwMC4NCiAg ICAgICAgKiBkb2MvdG0udGV4aS5pbiAoVEFSR0VUX0FTTV9TRUxFQ1RfSlVNUFRBQkxFX1NF Q1RJT04pOiBMaWtld2lzZS4NCiAgICAgICAgKiBkb2MvdG0udGV4aTogUmVnZW5lcmF0ZS4N CiAgICAgICAgKiBmaW5hbC5jICh0YXJnZXRtLmFzbV9vdXQuc2VsZWN0X2p1bXB0YWJsZV9z ZWN0aW9uKTogUmVwbGFjZSB0YXJnZXRtLmFzbV9vdXQuZnVuY3Rpb25fcm9kYXRhX3NlY3Rp b24gd2l0aCB0YXJnZXRtLmFzbV9vdXQuc2VsZWN0X2p1bXB0YWJsZV9zZWN0aW9uIGluIGp1 bXB0YWJsZSBzZWN0aW9uIHNlbGVjdGlvbi4NCiAgICAgICAgKiBvdXRwdXQuaCAoZGVmYXVs dF9zZWxlY3RfanVtcHRhYmxlX3NlY3Rpb24pOiBEZWNsYXJlLg0KICAgICAgICAqIHRhcmdl dC5kZWYgKGRlZmF1bHRfc2VsZWN0X2p1bXB0YWJsZV9zZWN0aW9uKTogTGlrZXdpc2UNCiAg ICAgICAgKiB2YXJhc20uYyAoZGVmYXVsdF9zZWxlY3RfanVtcHRhYmxlX3NlY3Rpb24pOiBJ bXBsZW1lbnRhdGlvbi4= --------------4E647822FAD795DC9B9F7E46 Content-Type: text/plain; charset=UTF-8; name="patch.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch.diff" ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcv cnM2MDAwL2xpbnV4NjQuaAppbmRleCAzNDc3NmM4NDIxZS4uZTlhMWZlZDQzY2QgMTAwNjQ0 Ci0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorKysgYi9nY2MvY29uZmlnL3Jz NjAwMC9saW51eDY0LmgKQEAgLTMyNCw3ICszMjQsNyBAQCBleHRlcm4gaW50IGRvdF9zeW1i b2xzOwogCiAvKiBJbmRpY2F0ZSB0aGF0IGp1bXAgdGFibGVzIGdvIGluIHRoZSB0ZXh0IHNl Y3Rpb24uICAqLwogI3VuZGVmICBKVU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04KLSNkZWZp bmUgSlVNUF9UQUJMRVNfSU5fVEVYVF9TRUNUSU9OIFRBUkdFVF82NEJJVAorI2RlZmluZSBK VU1QX1RBQkxFU19JTl9URVhUX1NFQ1RJT04gKFRBUkdFVF82NEJJVCAmJiBmbGFnX3BpYyAm JiAhcnM2MDAwX2ZvcmNlX25vbnJlbGF0aXZlX2p1bXB0YWJsZXMpCiAKIC8qIFRoZSBsaW51 eCBwcGM2NCBBQkkgaXNuJ3QgZXhwbGljaXQgb24gd2hldGhlciBhZ2dyZWdhdGVzIHNtYWxs ZXIKICAgIHRoYW4gYSBkb3VibGV3b3JkIHNob3VsZCBiZSBwYWRkZWQgdXB3YXJkIG9yIGRv d253YXJkLiAgWW91IGNvdWxkCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9yczYw MDAuYyBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jCmluZGV4IDU4ZjVkNzgwNjAzLi5k MGMwYWM2NTI5YSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMKKysr IGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmMKQEAgLTEzNjksNiArMTM2OSwxMiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9zcGVjIHJzNjAwMF9hdHRyaWJ1dGVfdGFi bGVbXSA9CiAjdW5kZWYgVEFSR0VUX0FTTV9PVVRQVVRfQUREUl9DT05TVF9FWFRSQQogI2Rl ZmluZSBUQVJHRVRfQVNNX09VVFBVVF9BRERSX0NPTlNUX0VYVFJBIHJzNjAwMF9vdXRwdXRf YWRkcl9jb25zdF9leHRyYQogCisjdW5kZWYgIFRBUkdFVF9BU01fR0VORVJBVEVfUElDX0FE RFJfRElGRl9WRUMKKyNkZWZpbmUgVEFSR0VUX0FTTV9HRU5FUkFURV9QSUNfQUREUl9ESUZG X1ZFQyByczYwMDBfZ2VuX3BpY19hZGRyX2RpZl92ZWMKKworI3VuZGVmIFRBUkdFVF9BU01f U0VMRUNUX0pVTVBUQUJMRV9TRUNUSU9OCisjZGVmaW5lIFRBUkdFVF9BU01fU0VMRUNUX0pV TVBUQUJMRV9TRUNUSU9OIHJzNjAwMF9zZWxlY3RfanVtcHRhYmxlX3NlY3Rpb24KKwogI3Vu ZGVmIFRBUkdFVF9MRUdJVElNSVpFX0FERFJFU1MKICNkZWZpbmUgVEFSR0VUX0xFR0lUSU1J WkVfQUREUkVTUyByczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzCiAKQEAgLTI2NDk0LDYgKzI2 NTAwLDY4IEBAIHJzNjAwMF9jYW5ub3Rfc3Vic3RpdHV0ZV9tZW1fZXF1aXZfcCAocnR4IG1l bSkKICAgcmV0dXJuIGZhbHNlOwogfQogCisvKiBJbXBsZW1lbnQgVEFSR0VUX0FTTV9HRU5F UkFURV9QSUNfQUREUl9ESUZGX1ZFQy4gUmV0dXJuIGZhbHNlIGlmIHJzNjAwMF9mb3JjZV9u b25yZWxhdGl2ZV9qdW1wdGFibGVzIGlzIHNldCBhbmQgdGFyZ2V0IGlzIDY0Yml0LiAqLwor CitzdGF0aWMgYm9vbAorcnM2MDAwX2dlbl9waWNfYWRkcl9kaWZfdmVjICh2b2lkKQorewor ICByZXR1cm4gIXJzNjAwMF9mb3JjZV9ub25yZWxhdGl2ZV9qdW1wdGFibGVzOworfQorCisv KiBJbXBsZW1lbnQgVEFSR0VUX0FTTV9GVU5DVElPTl9ST0RBVEFfU0VDVElPTi4gUHV0IG5v bi1yZWxhdGl2ZSBqdW1wIHRhYmxlIGluIGRhdGEucmVsLnJvIHNlY3Rpb24gKi8KKworc2Vj dGlvbiAqCityczYwMDBfc2VsZWN0X2p1bXB0YWJsZV9zZWN0aW9uICh0cmVlIGRlY2wpCit7 CisgIGlmIChUQVJHRVRfMzJCSVQpCisgICAgcmV0dXJuIGRlZmF1bHRfZnVuY3Rpb25fcm9k YXRhX3NlY3Rpb24gKGRlY2wpOworCisgIGlmIChkZWNsICE9IE5VTExfVFJFRSAmJiBERUNM X1NFQ1RJT05fTkFNRSAoZGVjbCkpCisgICAgeworICAgICAgY29uc3QgY2hhciAqbmFtZSA9 IERFQ0xfU0VDVElPTl9OQU1FIChkZWNsKTsKKworICAgICAgaWYgKERFQ0xfQ09NREFUX0dS T1VQIChkZWNsKSAmJiBIQVZFX0NPTURBVF9HUk9VUCkKKyAgICAgICAgeworICAgICAgICAg IGNvbnN0IGNoYXIgKmRvdDsKKyAgICAgICAgICBzaXplX3QgbGVuOworICAgICAgICAgIGNo YXIqIHJuYW1lOworCisgICAgICAgICAgZG90ID0gc3RyY2hyIChuYW1lICsgMSwgJy4nKTsK KyAgICAgICAgICBpZiAoIWRvdCkKKyAgICAgICAgICAgIGRvdCA9IG5hbWU7CisgICAgICAg ICAgbGVuID0gc3RybGVuIChkb3QpICsgMTM7CisgICAgICAgICAgcm5hbWUgPSAoY2hhciAq KSBhbGxvY2EgKGxlbik7CisKKyAgICAgICAgICBzdHJjcHkgKHJuYW1lLCAiLmRhdGEucmVs LnJvIik7CisgICAgICAgICAgc3RyY2F0IChybmFtZSwgZG90KTsKKyAgICAgICAgICByZXR1 cm4gZ2V0X3NlY3Rpb24gKHJuYW1lLCBTRUNUSU9OX1dSSVRFIHwgU0VDVElPTl9SRUxSTyB8 IFNFQ1RJT05fTElOS09OQ0UsIGRlY2wpOworICAgICAgICB9CisgICAgICAgIC8qIEZvciAu Z251LmxpbmtvbmNlLnQuZm9vIHdlIHdhbnQgdG8gdXNlIC5nbnUubGlua29uY2Uuci5mb28u ICAqLworICAgICAgICAgZWxzZSBpZiAoREVDTF9DT01EQVRfR1JPVVAgKGRlY2wpCisgICAg ICAgICAgICAgICAmJiBzdHJuY21wIChuYW1lLCAiLmdudS5saW5rb25jZS50LiIsIDE2KSA9 PSAwKQorICAgICAgICB7CisgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAobmFtZSkg KyAxOworICAgICAgICAgIGNoYXIgKnJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChsZW4pOwor CisgICAgICAgICAgbWVtY3B5IChybmFtZSwgbmFtZSwgbGVuKTsKKyAgICAgICAgICBybmFt ZVsxNF0gPSAncic7CisgICAgICAgICAgcmV0dXJuIGdldF9zZWN0aW9uIChybmFtZSwgU0VD VElPTl9MSU5LT05DRSwgZGVjbCk7CisgICAgICAgIH0KKyAgICAgICAgLyogRm9yIC50ZXh0 LmZvbyB3ZSB3YW50IHRvIHVzZSAuZGF0YS5yZWwucm8uZm9vLiAgKi8KKyAgICAgICAgIGVs c2UgaWYgKGZsYWdfZnVuY3Rpb25fc2VjdGlvbnMgJiYgZmxhZ19kYXRhX3NlY3Rpb25zCisg ICAgICAgICAgICAgICYmIHN0cm5jbXAgKG5hbWUsICIudGV4dC4iLCA2KSA9PSAwKQorICAg ICAgICB7CisgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAobmFtZSkgKyAxOworICAg ICAgICAgIGNoYXIgKnJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChsZW4gKyA3KTsKKworICAg ICAgICAgIG1lbWNweSAocm5hbWUsICIuZGF0YS5yZWwucm8iLCAxMik7CisgICAgICAgICAg bWVtY3B5IChybmFtZSArIDEyLCBuYW1lICsgNSwgbGVuIC0gNSk7CisgICAgICAgICAgcmV0 dXJuIGdldF9zZWN0aW9uIChybmFtZSwgU0VDVElPTl9XUklURSB8IFNFQ1RJT05fUkVMUk8s IGRlY2wpOworICAgICAgICB9CisgICAgfQorICByZXR1cm4gZ2V0X3NlY3Rpb24gKCIuZGF0 YS5yZWwucm8iLCBTRUNUSU9OX1dSSVRFIHwgU0VDVElPTl9SRUxSTywgZGVjbCk7Cit9CisK IHN0cnVjdCBnY2NfdGFyZ2V0IHRhcmdldG0gPSBUQVJHRVRfSU5JVElBTElaRVI7CiAKICNp bmNsdWRlICJndC1yczYwMDAuaCIKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3Jz NjAwMC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLmgKaW5kZXggMTIwOWEzMzE3M2Uu LjJhMTQ4YWZmOWU0IDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaAor KysgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaApAQCAtMTc1MiwxNSArMTc1MiwxNSBA QCB0eXBlZGVmIHN0cnVjdCByczYwMDBfYXJncwogCiAvKiAjZGVmaW5lIExFR0lUSU1BVEVf UElDX09QRVJBTkRfUCAoWCkgKi8KIAwKLS8qIFNwZWNpZnkgdGhlIG1hY2hpbmUgbW9kZSB0 aGF0IHRoaXMgbWFjaGluZSB1c2VzCi0gICBmb3IgdGhlIGluZGV4IGluIHRoZSB0YWJsZWp1 bXAgaW5zdHJ1Y3Rpb24uICAqLwotI2RlZmluZSBDQVNFX1ZFQ1RPUl9NT0RFIFNJbW9kZQot CiAvKiBEZWZpbmUgYXMgQyBleHByZXNzaW9uIHdoaWNoIGV2YWx1YXRlcyB0byBub256ZXJv IGlmIHRoZSB0YWJsZWp1bXAKICAgIGluc3RydWN0aW9uIGV4cGVjdHMgdGhlIHRhYmxlIHRv IGNvbnRhaW4gb2Zmc2V0cyBmcm9tIHRoZSBhZGRyZXNzIG9mIHRoZQogICAgdGFibGUuCiAg ICBEbyBub3QgZGVmaW5lIHRoaXMgaWYgdGhlIHRhYmxlIHNob3VsZCBjb250YWluIGFic29s dXRlIGFkZHJlc3Nlcy4gICovCi0jZGVmaW5lIENBU0VfVkVDVE9SX1BDX1JFTEFUSVZFIDEK KyNkZWZpbmUgQ0FTRV9WRUNUT1JfUENfUkVMQVRJVkUgVEFSR0VUXzMyQklUCisKKy8qIFNw ZWNpZnkgdGhlIG1hY2hpbmUgbW9kZSB0aGF0IHRoaXMgbWFjaGluZSB1c2VzCisgICBmb3Ig dGhlIGluZGV4IGluIHRoZSB0YWJsZWp1bXAgaW5zdHJ1Y3Rpb24uICAqLworI2RlZmluZSBD QVNFX1ZFQ1RPUl9NT0RFIChUQVJHRVRfMzJCSVQgfHwgKGZsYWdfcGljICYmICFyczYwMDBf Zm9yY2Vfbm9ucmVsYXRpdmVfanVtcHRhYmxlcykgPyBTSW1vZGUgOiBESW1vZGUpCiAKIC8q IERlZmluZSB0aGlzIGFzIDEgaWYgYGNoYXInIHNob3VsZCBieSBkZWZhdWx0IGJlIHNpZ25l ZDsgZWxzZSBhcyAwLiAgKi8KICNkZWZpbmUgREVGQVVMVF9TSUdORURfQ0hBUiAwCkBAIC0y MTkwLDYgKzIxOTAsMTUgQEAgZXh0ZXJuIGNoYXIgcnM2MDAwX3JlZ19uYW1lc1tdWzhdOwkv KiByZWdpc3RlciBuYW1lcyAoMCB2cy4gJXIwKS4gICovCiAgICAgICAgcHV0YyAoJ1xuJywg RklMRSk7CQkJCVwKICAgICAgfSB3aGlsZSAoMCkKIAorLyogVGhpcyBpcyBob3cgdG8gb3V0 cHV0IGFuIGVsZW1lbnQgb2YgYSBjYXNlLXZlY3RvciB0aGF0IGlzIG5vbi1yZWxhdGl2ZS4g Ki8KKyNkZWZpbmUgQVNNX09VVFBVVF9BRERSX1ZFQ19FTFQoRklMRSwgVkFMVUUpIFwKKyAg ZG8geyBjaGFyIGJ1ZlsxMDBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgIGZwdXRzICgiXHQucXVhZCAiLCBGSUxFKTsgICAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgQVNNX0dFTkVSQVRFX0lOVEVSTkFMX0xBQkVMIChidWYsICJMIiwg VkFMVUUpOyAgIFwKKyAgICAgICBhc3NlbWJsZV9uYW1lIChGSUxFLCBidWYpOyAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgIHB1dGMgKCdcbicsIEZJTEUpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgfSB3aGlsZSAoMCkKKwogLyogVGhpcyBpcyBo b3cgdG8gb3V0cHV0IGFuIGFzc2VtYmxlciBsaW5lCiAgICB0aGF0IHNheXMgdG8gYWR2YW5j ZSB0aGUgbG9jYXRpb24gY291bnRlcgogICAgdG8gYSBtdWx0aXBsZSBvZiAyKipMT0cgYnl0 ZXMuICAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kIGIvZ2Nj L2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCmluZGV4IDBhYTUyNjVkMTk5Li43NmI5ZjE4NWU4 OCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCisrKyBiL2djYy9j b25maWcvcnM2MDAwL3JzNjAwMC5tZApAQCAtMTI2NzAsOCArMTI2NzAsMTAgQEAKICAgICB7 CiAgICAgICBpZiAoVEFSR0VUXzMyQklUKQogICAgICAgCWVtaXRfanVtcF9pbnNuIChnZW5f dGFibGVqdW1wc2kgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkpOwotICAgICAgZWxzZQor ICAgICAgZWxzZSBpZiAoZmxhZ19waWMgJiYgIXJzNjAwMF9mb3JjZV9ub25yZWxhdGl2ZV9q dW1wdGFibGVzKQogCWVtaXRfanVtcF9pbnNuIChnZW5fdGFibGVqdW1wZGkgKG9wZXJhbmRz WzBdLCBvcGVyYW5kc1sxXSkpOworICAgICAgZWxzZSAKKyAgICAgICAgZW1pdF9qdW1wX2lu c24gKGdlbl9ub25yZWxhdGl2ZV90YWJsZWp1bXBkaSAob3BlcmFuZHNbMF0sIG9wZXJhbmRz WzFdKSk7CiAgICAgfQogICBlbHNlCiAgICAgewpAQCAtMTI2NzksOCArMTI2ODEsMTAgQEAK ICAgICAgIHJ0eCBqdW1wOwogICAgICAgaWYgKFRBUkdFVF8zMkJJVCkKIAlqdW1wID0gZ2Vu X3RhYmxlanVtcHNpX25vc3BlYyAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBjY3JlZyk7 Ci0gICAgICBlbHNlCisgICAgICBlbHNlIGlmIChmbGFnX3BpYyAmJiAhcnM2MDAwX2ZvcmNl X25vbnJlbGF0aXZlX2p1bXB0YWJsZXMpCiAJanVtcCA9IGdlbl90YWJsZWp1bXBkaV9ub3Nw ZWMgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgY2NyZWcpOworICAgICAgZWxzZQorCWp1 bXAgPSBnZW5fbm9ucmVsYXRpdmVfdGFibGVqdW1wZGlfbm9zcGVjIChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMV0sIGNjcmVnKTsKICAgICAgIGVtaXRfanVtcF9pbnNuIChqdW1wKTsKICAg ICB9CiAgIERPTkU7CkBAIC0xMjczMSw2ICsxMjczNSwxNyBAQAogICBvcGVyYW5kc1s0XSA9 IGdlbl9yZWdfcnR4IChESW1vZGUpOwogfSkKIAorKGRlZmluZV9leHBhbmQgIm5vbnJlbGF0 aXZlX3RhYmxlanVtcGRpIgorICBbKHNldCAobWF0Y2hfZHVwIDIpCisgICAgICAgIChtYXRj aF9vcGVyYW5kOkRJIDAgImdwY19yZWdfb3BlcmFuZCIgInIiKSkKKyAgIChwYXJhbGxlbCBb KHNldCAocGMpCisgICAgICAgICAgICAgICAgICAgKG1hdGNoX2R1cCAyKSkKKyAgICAgICAg ICAgICAgKHVzZSAobGFiZWxfcmVmIChtYXRjaF9vcGVyYW5kIDEpKSldKV0KKyAgICJUQVJH RVRfNjRCSVQgJiYgcnM2MDAwX3NwZWN1bGF0ZV9pbmRpcmVjdF9qdW1wcyIKKyB7CisgIG9w ZXJhbmRzWzJdID0gZ2VuX3JlZ19ydHggKERJbW9kZSk7CisgfSkKKwogKGRlZmluZV9leHBh bmQgInRhYmxlanVtcGRpX25vc3BlYyIKICAgWyhzZXQgKG1hdGNoX2R1cCA1KQogICAgICAg ICAoc2lnbl9leHRlbmQ6REkgKG1hdGNoX29wZXJhbmQ6U0kgMCAibHdhX29wZXJhbmQiKSkp CkBAIC0xMjc0OCw2ICsxMjc2MywxOSBAQAogICBvcGVyYW5kc1s1XSA9IGdlbl9yZWdfcnR4 IChESW1vZGUpOwogfSkKIAorKGRlZmluZV9leHBhbmQgIm5vbnJlbGF0aXZlX3RhYmxlanVt cGRpX25vc3BlYyIKKyAgWyhzZXQgKG1hdGNoX2R1cCAzKQorICAgICAgICAobWF0Y2hfb3Bl cmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICJyIikpCisgICAocGFyYWxsZWwgWyhzZXQg KHBjKQorICAgICAgICAgICAgICAgICAgIChtYXRjaF9kdXAgMykpCisgICAgICAgICAgICAg ICh1c2UgKGxhYmVsX3JlZiAobWF0Y2hfb3BlcmFuZCAxKSkpCisgICAgICAgICAgICAgIChj bG9iYmVyIChtYXRjaF9vcGVyYW5kIDIpKV0pXQorICAiVEFSR0VUXzY0QklUICYmICFyczYw MDBfc3BlY3VsYXRlX2luZGlyZWN0X2p1bXBzIgoreworICBvcGVyYW5kc1szXSA9IGdlbl9y ZWdfcnR4IChESW1vZGUpOworfSkKKworCiAoZGVmaW5lX2luc24gIip0YWJsZWp1bXA8bW9k ZT5faW50ZXJuYWwxIgogICBbKHNldCAocGMpCiAJKG1hdGNoX29wZXJhbmQ6UCAwICJyZWdp c3Rlcl9vcGVyYW5kIiAiYywqbCIpKQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAv cnM2MDAwLm9wdCBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKaW5kZXggZjk1Yjgy NzkyNzAuLmIzZjY5YTczMDUzIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9yczYw MDAub3B0CisrKyBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKQEAgLTU3OCwzICs1 NzgsNiBAQCBHZW5lcmF0ZSAoZG8gbm90IGdlbmVyYXRlKSBwcmVmaXhlZCBtZW1vcnkgaW5z dHJ1Y3Rpb25zLgogbXBjcmVsCiBUYXJnZXQgUmVwb3J0IE1hc2soUENSRUwpIFZhcihyczYw MDBfaXNhX2ZsYWdzKQogR2VuZXJhdGUgKGRvIG5vdCBnZW5lcmF0ZSkgcGMtcmVsYXRpdmUg bWVtb3J5IGFkZHJlc3NpbmcuCisKK21mb3JjZS1ub25yZWxhdGl2ZS1qdW1wdGFibGVzCitU YXJnZXQgVW5kb2N1bWVudGVkIFZhcihyczYwMDBfZm9yY2Vfbm9ucmVsYXRpdmVfanVtcHRh YmxlcykgSW5pdCgxKSBTYXZlCmRpZmYgLS1naXQgYS9nY2MvZG9jL3RtLnRleGkgYi9nY2Mv ZG9jL3RtLnRleGkKaW5kZXggNmU3ZDlkYzU0YTkuLjI4ZTJhZmFiZTdlIDEwMDY0NAotLS0g YS9nY2MvZG9jL3RtLnRleGkKKysrIGIvZ2NjL2RvYy90bS50ZXhpCkBAIC03NzEyLDYgKzc3 MTIsMTIgQEAgaWYgZnVuY3Rpb24gaXMgaW4gQGNvZGV7LnRleHQubmFtZX0sIGFuZCB0aGUg bm9ybWFsIHJlYWRvbmx5LWRhdGEgc2VjdGlvbgogb3RoZXJ3aXNlLgogQGVuZCBkZWZ0eXBl Zm4KIAorQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IHtzZWN0aW9uICp9IFRBUkdFVF9BU01f U0VMRUNUX0pVTVBUQUJMRV9TRUNUSU9OICh0cmVlIEB2YXJ7ZGVjbH0pCitSZXR1cm4gdGhl IHNlY3Rpb24gb2YganVtcCB0YWJsZSBhc3NvY2lhdGVkIHdpdGgKK0BzYW1we0RFQ0xfU0VD VElPTl9OQU1FIChAdmFye2RlY2x9KX0uCitUaGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoaXMg ZnVuY3Rpb24gc2VsZWN0cyB0aGUgcm9kYXRhIHNlY3Rpb24uCitAZW5kIGRlZnR5cGVmbgor CiBAZGVmdHlwZXZyIHtUYXJnZXQgSG9va30ge2NvbnN0IGNoYXIgKn0gVEFSR0VUX0FTTV9N RVJHRUFCTEVfUk9EQVRBX1BSRUZJWAogVXN1YWxseSwgdGhlIGNvbXBpbGVyIHVzZXMgdGhl IHByZWZpeCBAY29kZXsiLnJvZGF0YSJ9IHRvIGNvbnN0cnVjdAogc2VjdGlvbiBuYW1lcyBm b3IgbWVyZ2VhYmxlIGNvbnN0YW50IGRhdGEuICBEZWZpbmUgdGhpcyBtYWNybyB0byBvdmVy cmlkZQpkaWZmIC0tZ2l0IGEvZ2NjL2RvYy90bS50ZXhpLmluIGIvZ2NjL2RvYy90bS50ZXhp LmluCmluZGV4IDNiZTk4NGJiZDVjLi4xNzNhOGRmYWVlOCAxMDA2NDQKLS0tIGEvZ2NjL2Rv Yy90bS50ZXhpLmluCisrKyBiL2djYy9kb2MvdG0udGV4aS5pbgpAQCAtNTAwNyw2ICs1MDA3 LDggQEAgaXQgaXMgdW5saWtlbHkgdG8gYmUgY2FsbGVkLgogCiBAaG9vayBUQVJHRVRfQVNN X0ZVTkNUSU9OX1JPREFUQV9TRUNUSU9OCiAKK0Bob29rIFRBUkdFVF9BU01fU0VMRUNUX0pV TVBUQUJMRV9TRUNUSU9OCisKIEBob29rIFRBUkdFVF9BU01fTUVSR0VBQkxFX1JPREFUQV9Q UkVGSVgKIAogQGhvb2sgVEFSR0VUX0FTTV9UTV9DTE9ORV9UQUJMRV9TRUNUSU9OCmRpZmYg LS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jCmluZGV4IGEzNjAxOTY0YThkLi4x OGVkMWY2Nzg4YyAxMDA2NDQKLS0tIGEvZ2NjL2ZpbmFsLmMKKysrIGIvZ2NjL2ZpbmFsLmMK QEAgLTI0OTIsNyArMjQ5Miw3IEBAIGZpbmFsX3NjYW5faW5zbl8xIChydHhfaW5zbiAqaW5z biwgRklMRSAqZmlsZSwgaW50IG9wdGltaXplX3AgQVRUUklCVVRFX1VOVVNFRCwKIAkgICAg ewogCSAgICAgIGludCBsb2dfYWxpZ247CiAKLQkgICAgICBzd2l0Y2hfdG9fc2VjdGlvbiAo dGFyZ2V0bS5hc21fb3V0LmZ1bmN0aW9uX3JvZGF0YV9zZWN0aW9uCisJICAgICAgc3dpdGNo X3RvX3NlY3Rpb24gKHRhcmdldG0uYXNtX291dC5zZWxlY3RfanVtcHRhYmxlX3NlY3Rpb24K IAkJCQkgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpOwogCiAjaWZkZWYgQUREUl9WRUNfQUxJ R04KQEAgLTI1NzEsNyArMjU3MSw3IEBAIGZpbmFsX3NjYW5faW5zbl8xIChydHhfaW5zbiAq aW5zbiwgRklMRSAqZmlsZSwgaW50IG9wdGltaXplX3AgQVRUUklCVVRFX1VOVVNFRCwKICNl bmRpZgogCiAJICAgIGlmICghIEpVTVBfVEFCTEVTX0lOX1RFWFRfU0VDVElPTikKLQkgICAg ICBzd2l0Y2hfdG9fc2VjdGlvbiAodGFyZ2V0bS5hc21fb3V0LmZ1bmN0aW9uX3JvZGF0YV9z ZWN0aW9uCisJICAgICAgc3dpdGNoX3RvX3NlY3Rpb24gKHRhcmdldG0uYXNtX291dC5zZWxl Y3RfanVtcHRhYmxlX3NlY3Rpb24KIAkJCQkgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkpOwog CSAgICBlbHNlCiAJICAgICAgc3dpdGNoX3RvX3NlY3Rpb24gKGN1cnJlbnRfZnVuY3Rpb25f c2VjdGlvbiAoKSk7CmRpZmYgLS1naXQgYS9nY2Mvb3V0cHV0LmggYi9nY2Mvb3V0cHV0LmgK aW5kZXggZWIyNTNjNTAzMjkuLmIwMTIyOGIyMjRjIDEwMDY0NAotLS0gYS9nY2Mvb3V0cHV0 LmgKKysrIGIvZ2NjL291dHB1dC5oCkBAIC01NzMsNiArNTczLDcgQEAgZXh0ZXJuIHNlY3Rp b24gKmRlZmF1bHRfZWxmX3NlbGVjdF9zZWN0aW9uICh0cmVlLCBpbnQsIHVuc2lnbmVkIEhP U1RfV0lERV9JTlQpOwogZXh0ZXJuIHZvaWQgZGVmYXVsdF91bmlxdWVfc2VjdGlvbiAodHJl ZSwgaW50KTsKIGV4dGVybiBzZWN0aW9uICpkZWZhdWx0X2Z1bmN0aW9uX3JvZGF0YV9zZWN0 aW9uICh0cmVlKTsKIGV4dGVybiBzZWN0aW9uICpkZWZhdWx0X25vX2Z1bmN0aW9uX3JvZGF0 YV9zZWN0aW9uICh0cmVlKTsKK2V4dGVybiBzZWN0aW9uICpkZWZhdWx0X3NlbGVjdF9qdW1w dGFibGVfc2VjdGlvbiAodHJlZSk7CiBleHRlcm4gc2VjdGlvbiAqZGVmYXVsdF9jbG9uZV90 YWJsZV9zZWN0aW9uICh2b2lkKTsKIGV4dGVybiBzZWN0aW9uICpkZWZhdWx0X3NlbGVjdF9y dHhfc2VjdGlvbiAobWFjaGluZV9tb2RlLCBydHgsCiAJCQkJCSAgICB1bnNpZ25lZCBIT1NU X1dJREVfSU5UKTsKZGlmZiAtLWdpdCBhL2djYy90YXJnZXQuZGVmIGIvZ2NjL3RhcmdldC5k ZWYKaW5kZXggMDcwNTlhODdjYWYuLjMyYTg1MjNhZTE2IDEwMDY0NAotLS0gYS9nY2MvdGFy Z2V0LmRlZgorKysgYi9nY2MvdGFyZ2V0LmRlZgpAQCAtNTYxLDYgKzU2MSwxNSBAQCBvdGhl cndpc2UuIiwKICBzZWN0aW9uICosICh0cmVlIGRlY2wpLAogIGRlZmF1bHRfZnVuY3Rpb25f cm9kYXRhX3NlY3Rpb24pCiAKKy8qIFJldHVybiB0aGUgc2VjdGlvbiBvZiBqdW1wIHRhYmxl IGFzc29jaWF0ZWQgd2l0aCBmdW5jdGlvbiBERUNMLiAgKi8KK0RFRkhPT0sKKyhzZWxlY3Rf anVtcHRhYmxlX3NlY3Rpb24sCisgIlJldHVybiB0aGUgc2VjdGlvbiBvZiBqdW1wIHRhYmxl IGFzc29jaWF0ZWQgd2l0aFxuXAorQHNhbXB7REVDTF9TRUNUSU9OX05BTUUgKEB2YXJ7ZGVj bH0pfS5cblwKK1RoZSBkZWZhdWx0IHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBzZWxlY3Rz IHRoZSByb2RhdGEgc2VjdGlvbi4iLAorIHNlY3Rpb24gKiwgKHRyZWUgZGVjbCksCisgZGVm YXVsdF9zZWxlY3RfanVtcHRhYmxlX3NlY3Rpb24pCisKIC8qIE5vbm51bGwgaWYgdGhlIHRh cmdldCB3YW50cyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAiLnJvZGF0YSIgcHJlZml4CiAg ICBmb3IgbWVyZ2VhYmxlIGRhdGEgc2VjdGlvbnMuICAqLwogREVGSE9PS1BPRApkaWZmIC0t Z2l0IGEvZ2NjL3ZhcmFzbS5jIGIvZ2NjL3ZhcmFzbS5jCmluZGV4IDQwNzBmOWMxN2U4Li44 Y2RjZmJjYTRmNSAxMDA2NDQKLS0tIGEvZ2NjL3ZhcmFzbS5jCisrKyBiL2djYy92YXJhc20u YwpAQCAtNzg4LDYgKzc4OCwxNCBAQCBkZWZhdWx0X25vX2Z1bmN0aW9uX3JvZGF0YV9zZWN0 aW9uICh0cmVlIGRlY2wgQVRUUklCVVRFX1VOVVNFRCkKICAgcmV0dXJuIHJlYWRvbmx5X2Rh dGFfc2VjdGlvbjsKIH0KIAorLyogUmV0dXJuIHRhcmdldCBob29rIGZ1bmN0aW9uX3JvdGRh dGFfc2VjdGlvbiBieSBkZWZhdWx0LiAgKi8KKworc2VjdGlvbiAqCitkZWZhdWx0X3NlbGVj dF9qdW1wdGFibGVfc2VjdGlvbiAodHJlZSBkZWNsKQoreworICByZXR1cm4gdGFyZ2V0bS5h c21fb3V0LmZ1bmN0aW9uX3JvZGF0YV9zZWN0aW9uKGRlY2wpOworfQorCiAvKiBBIHN1YnJv dXRpbmUgb2YgbWVyZ2VhYmxlX3N0cmluZ19zZWN0aW9uIGFuZCBtZXJnZWFibGVfY29uc3Rh bnRfc2VjdGlvbi4gICovCiAKIHN0YXRpYyBjb25zdCBjaGFyICoK --------------4E647822FAD795DC9B9F7E46--