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 A9F083858D37 for ; Mon, 17 Aug 2020 02:21:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A9F083858D37 Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 07H21FQA161525; Sun, 16 Aug 2020 22:21:07 -0400 Received: from ppma05fra.de.ibm.com (6c.4a.5195.ip4.static.sl-reverse.com [149.81.74.108]) by mx0b-001b2d01.pphosted.com with ESMTP id 32y7tp9kaf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 16 Aug 2020 22:21:06 -0400 Received: from pps.filterd (ppma05fra.de.ibm.com [127.0.0.1]) by ppma05fra.de.ibm.com (8.16.0.42/8.16.0.42) with SMTP id 07H2KXpS006802; Mon, 17 Aug 2020 02:21:05 GMT Received: from b06cxnps4076.portsmouth.uk.ibm.com (d06relay13.portsmouth.uk.ibm.com [9.149.109.198]) by ppma05fra.de.ibm.com with ESMTP id 32x7b811pp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 17 Aug 2020 02:21:05 +0000 Received: from b06wcsmtp001.portsmouth.uk.ibm.com (b06wcsmtp001.portsmouth.uk.ibm.com [9.149.105.160]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 07H2L2F725166174 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 17 Aug 2020 02:21:02 GMT Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3EF22A4054; Mon, 17 Aug 2020 02:21:02 +0000 (GMT) Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 04952A405B; Mon, 17 Aug 2020 02:21:01 +0000 (GMT) Received: from [9.200.54.97] (unknown [9.200.54.97]) by b06wcsmtp001.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 17 Aug 2020 02:21:00 +0000 (GMT) Subject: Re: [PATCH] Add support for putting jump table into relocation read-only section To: Segher Boessenkool Cc: gcc-patches , wschmidt@linux.ibm.com References: <5b8f4979-bc2d-2ace-b28e-08e6bde0bb3f@linux.ibm.com> <20200814233901.GQ6753@gate.crashing.org> From: HAO CHEN GUI Message-ID: Date: Mon, 17 Aug 2020 10:20:57 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <20200814233901.GQ6753@gate.crashing.org> Content-Type: multipart/mixed; boundary="------------FFE0349397210A7ADC6C8230" 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-08-16_12:2020-08-14, 2020-08-16 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 clxscore=1015 adultscore=0 priorityscore=1501 malwarescore=0 impostorscore=0 mlxlogscore=999 lowpriorityscore=0 phishscore=0 bulkscore=0 suspectscore=9 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2006250000 definitions=main-2008170011 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP 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: Mon, 17 Aug 2020 02:21:09 -0000 This is a multi-part message in MIME format. --------------FFE0349397210A7ADC6C8230 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Segher, Seems I sent the wrong diff file. Now the attachments should be correct ones. Sorry for that. For the reloc,  my understanding is the jump table needs to be relocated if it's a non-relative jump table and PIC flag is set at the same time. //stmt.c  if (CASE_VECTOR_PC_RELATIVE           || (flag_pic && targetm.asm_out.generate_pic_addr_diff_vec ()))     emit_jump_table_data (gen_rtx_ADDR_DIFF_VEC (CASE_VECTOR_MODE,                                                  gen_rtx_LABEL_REF (Pmode, table_label),                                                  gen_rtvec_v (ncases, labelvec),                                                  const0_rtx, const0_rtx));   else     emit_jump_table_data (gen_rtx_ADDR_VEC (CASE_VECTOR_MODE,                                             gen_rtvec_v (ncases, labelvec))); According to the slice of code in stmt.c,  the non-relative jump table is created with PIC flag set when CASE_VECTOR_PC_RELATIVE is false, flag_pic is true and targetm.asm_out.generate_pic_addr_diff_vec is false. So I set the reloc to reloc = (! CASE_VECTOR_PC_RELATIVE && flag_pic &&            ! targetm.asm_out.generate_pic_addr_diff_vec ()) ? 1 : 0; The funcation_rodata_section is not only for jump tables. It's no relro in other cases. I am not sure if it's suitable to put selecting relro section in it. Of course, I can create a separate function for section selection of jump table and send its output to funcation_rodata_section. Please advice. Thanks a lot. On 15/8/2020 上午 7:39, Segher Boessenkool wrote: > Hi! > > On Fri, Aug 14, 2020 at 03:20:03PM +0800, HAO CHEN GUI wrote: >> section * >> select_jump_table_section (tree decl) >> { >>   int reloc; >>   bool section_reloc; >> >>   reloc = (! CASE_VECTOR_PC_RELATIVE && flag_pic && >>            ! targetm.asm_out.generate_pic_addr_diff_vec ()) ? 1 : >> 0; > (Modern style is no space after "!", and your mailer wrapped the code). > >>   section_reloc = (reloc & targetm.asm_out.reloc_rw_mask ()); > (No space after & either). > >>   return targetm.asm_out.function_rodata_section (decl, section_reloc); > So you are saying it should not go into relro if either there is no pic > flag, the targets are pc relative, or pic uses some address diff? > > This seems too complicated, and/or not the right abstraction. > > >> diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in >> index 3be984bbd5c..0ac1488c837 100644 >> --- a/gcc/doc/tm.texi.in >> +++ b/gcc/doc/tm.texi.in >> @@ -5007,6 +5007,8 @@ it is unlikely to be called. >> >> @hook TARGET_ASM_FUNCTION_RODATA_SECTION >> >> +@hook TARGET_ASM_FUNCTION_RELRO_SECTION > I would expect people to just use TARGET_ASM_FUNCTION_RODATA_SECTION to > get the .data.rel.ro? With another argument then. > >> +section * >> +select_jump_table_section (tree decl) >> +{ >> + int relco; > "reloc"? > >> + relco = JUMP_TABLES_IN_RELRO; > Just put that on the same line as the declaration? > >> + if (relco & targetm.asm_out.reloc_rw_mask ()) >> + return targetm.asm_out.function_relro_section (decl); >> + else >> + return targetm.asm_out.function_rodata_section (decl); >> +} > (trailing spaces btw) > >> @@ -2492,7 +2513,7 @@ final_scan_insn_1 (rtx_insn *insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, >> { >> int log_align; >> >> - switch_to_section (targetm.asm_out.function_rodata_section >> + switch_to_section (select_jump_table_section >> (current_function_decl)); > section *section > = select_jump_table_section (current_function_decl)); > switch_to_section (section); > > (but it would be better if we didn't indent so deeply here). > > > I think this should be split into a function just selecting the relro > section (either directly, or from the rodata selection function), and > then separately the jumptable section thing. > > There is a lot of stuff here that seems confused, and a lot of that > already was there :-( > > > Segher --------------FFE0349397210A7ADC6C8230 Content-Type: text/plain; charset=UTF-8; name="patch-0.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch-0.diff" ZGlmZiAtLWdpdCBhL2djYy9kb2MvdG0udGV4aSBiL2djYy9kb2MvdG0udGV4aQ0KaW5kZXgg NmU3ZDlkYzU0YTkuLjNmZjc1MjdmMmNjIDEwMDY0NA0KLS0tIGEvZ2NjL2RvYy90bS50ZXhp DQorKysgYi9nY2MvZG9jL3RtLnRleGkNCkBAIC03NzEyLDYgKzc3MTIsMTUgQEAgaWYgZnVu Y3Rpb24gaXMgaW4gQGNvZGV7LnRleHQubmFtZX0sIGFuZCB0aGUgbm9ybWFsIHJlYWRvbmx5 LWRhdGEgc2VjdGlvbg0KIG90aGVyd2lzZS4NCiBAZW5kIGRlZnR5cGVmbg0KIA0KK0BkZWZ0 eXBlZm4ge1RhcmdldCBIb29rfSB7c2VjdGlvbiAqfSBUQVJHRVRfQVNNX0ZVTkNUSU9OX1JF TFJPX1NFQ1RJT04gKHRyZWUgQHZhcntkZWNsfSkNCitSZXR1cm4gdGhlIHJlbHJvIHNlY3Rp b24gYXNzb2NpYXRlZCB3aXRoDQorQHNhbXB7REVDTF9TRUNUSU9OX05BTUUgKEB2YXJ7ZGVj bH0pfS4NCitUaGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gc2VsZWN0cyBA Y29kZXsuZ251LmxpbmtvbmNlLnIubmFtZX0gaWYNCit0aGUgZnVuY3Rpb24ncyBzZWN0aW9u IGlzIEBjb2Rley5nbnUubGlua29uY2UudC5uYW1lfSwgDQorQGNvZGV7LmRhdGEucmVsLnJv Lm5hbWV9IGlmIGZ1bmN0aW9uIGlzIGluIEBjb2Rley50ZXh0Lm5hbWV9LCANCithbmQgdGhl IG5vcm1hbCBkYXRhIHJlbHJvIHNlY3Rpb24gb3RoZXJ3aXNlLg0KK0BlbmQgZGVmdHlwZWZu DQorDQogQGRlZnR5cGV2ciB7VGFyZ2V0IEhvb2t9IHtjb25zdCBjaGFyICp9IFRBUkdFVF9B U01fTUVSR0VBQkxFX1JPREFUQV9QUkVGSVgNCiBVc3VhbGx5LCB0aGUgY29tcGlsZXIgdXNl cyB0aGUgcHJlZml4IEBjb2RleyIucm9kYXRhIn0gdG8gY29uc3RydWN0DQogc2VjdGlvbiBu YW1lcyBmb3IgbWVyZ2VhYmxlIGNvbnN0YW50IGRhdGEuICBEZWZpbmUgdGhpcyBtYWNybyB0 byBvdmVycmlkZQ0KZGlmZiAtLWdpdCBhL2djYy9kb2MvdG0udGV4aS5pbiBiL2djYy9kb2Mv dG0udGV4aS5pbg0KaW5kZXggM2JlOTg0YmJkNWMuLjBhYzE0ODhjODM3IDEwMDY0NA0KLS0t IGEvZ2NjL2RvYy90bS50ZXhpLmluDQorKysgYi9nY2MvZG9jL3RtLnRleGkuaW4NCkBAIC01 MDA3LDYgKzUwMDcsOCBAQCBpdCBpcyB1bmxpa2VseSB0byBiZSBjYWxsZWQuDQogDQogQGhv b2sgVEFSR0VUX0FTTV9GVU5DVElPTl9ST0RBVEFfU0VDVElPTg0KIA0KK0Bob29rIFRBUkdF VF9BU01fRlVOQ1RJT05fUkVMUk9fU0VDVElPTg0KKw0KIEBob29rIFRBUkdFVF9BU01fTUVS R0VBQkxFX1JPREFUQV9QUkVGSVgNCiANCiBAaG9vayBUQVJHRVRfQVNNX1RNX0NMT05FX1RB QkxFX1NFQ1RJT04NCmRpZmYgLS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jDQpp bmRleCBhMzYwMTk2NGE4ZC4uYmExOTgxODI2NjMgMTAwNjQ0DQotLS0gYS9nY2MvZmluYWwu Yw0KKysrIGIvZ2NjL2ZpbmFsLmMNCkBAIC0xMDcsNiArMTA3LDEwIEBAIGFsb25nIHdpdGgg R0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlDQogI2RlZmluZSBKVU1Q X1RBQkxFU19JTl9URVhUX1NFQ1RJT04gMA0KICNlbmRpZg0KIA0KKyNpZm5kZWYgSlVNUF9U QUJMRVNfSU5fUkVMUk8NCisjZGVmaW5lIEpVTVBfVEFCTEVTX0lOX1JFTFJPIDANCisjZW5k aWYNCisNCiAvKiBCaXRmbGFncyB1c2VkIGJ5IGZpbmFsX3NjYW5faW5zbi4gICovDQogI2Rl ZmluZSBTRUVOX05PVEUJMQ0KICNkZWZpbmUgU0VFTl9FTUlUVEVECTINCkBAIC0yMTU0LDYg KzIxNTgsMjMgQEAgYXNtX3Nob3dfc291cmNlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50 IGxpbmVudW0pDQogICBmcHV0YyAoJ1xuJywgYXNtX291dF9maWxlKTsNCiB9DQogDQorLyog U2VsZWN0IHNlY3Rpb25zIGZvciBqdW1wIHRhYmxlLg0KKyAgIElmIHRoZSBqdW1wIHRhYmxl IG5lZWQgdG8gYmUgcmVsb2NhdGVkLCANCisgICBzZWxlY3QgcmVscm8gc2VjdGlvbnMuIE90 aGVyd2lzZSBpbiByZWFkb25seSBzZWN0aW9uICovDQorDQorc2VjdGlvbiAqDQorc2VsZWN0 X2p1bXBfdGFibGVfc2VjdGlvbiAodHJlZSBkZWNsKQ0KK3sNCisgIGludCByZWxjbzsNCisN CisgIHJlbGNvID0gSlVNUF9UQUJMRVNfSU5fUkVMUk87DQorDQorICBpZiAocmVsY28gJiB0 YXJnZXRtLmFzbV9vdXQucmVsb2NfcndfbWFzayAoKSkNCisgICAgcmV0dXJuIHRhcmdldG0u YXNtX291dC5mdW5jdGlvbl9yZWxyb19zZWN0aW9uIChkZWNsKTsNCisgIGVsc2UgDQorICAg IHJldHVybiB0YXJnZXRtLmFzbV9vdXQuZnVuY3Rpb25fcm9kYXRhX3NlY3Rpb24gKGRlY2wp Ow0KK30NCisNCiAvKiBUaGUgZmluYWwgc2NhbiBmb3Igb25lIGluc24sIElOU04uDQogICAg QXJncyBhcmUgc2FtZSBhcyBpbiBgZmluYWwnLCBleGNlcHQgdGhhdCBJTlNODQogICAgaXMg dGhlIGluc24gYmVpbmcgc2Nhbm5lZC4NCkBAIC0yNDkyLDcgKzI1MTMsNyBAQCBmaW5hbF9z Y2FuX2luc25fMSAocnR4X2luc24gKmluc24sIEZJTEUgKmZpbGUsIGludCBvcHRpbWl6ZV9w IEFUVFJJQlVURV9VTlVTRUQsDQogCSAgICB7DQogCSAgICAgIGludCBsb2dfYWxpZ247DQog DQotCSAgICAgIHN3aXRjaF90b19zZWN0aW9uICh0YXJnZXRtLmFzbV9vdXQuZnVuY3Rpb25f cm9kYXRhX3NlY3Rpb24NCisJICAgICAgc3dpdGNoX3RvX3NlY3Rpb24gKHNlbGVjdF9qdW1w X3RhYmxlX3NlY3Rpb24NCiAJCQkJIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpKTsNCiANCiAj aWZkZWYgQUREUl9WRUNfQUxJR04NCkBAIC0yNTcxLDcgKzI1OTIsNyBAQCBmaW5hbF9zY2Fu X2luc25fMSAocnR4X2luc24gKmluc24sIEZJTEUgKmZpbGUsIGludCBvcHRpbWl6ZV9wIEFU VFJJQlVURV9VTlVTRUQsDQogI2VuZGlmDQogDQogCSAgICBpZiAoISBKVU1QX1RBQkxFU19J Tl9URVhUX1NFQ1RJT04pDQotCSAgICAgIHN3aXRjaF90b19zZWN0aW9uICh0YXJnZXRtLmFz bV9vdXQuZnVuY3Rpb25fcm9kYXRhX3NlY3Rpb24NCisJICAgICAgc3dpdGNoX3RvX3NlY3Rp b24gKHNlbGVjdF9qdW1wX3RhYmxlX3NlY3Rpb24NCiAJCQkJIChjdXJyZW50X2Z1bmN0aW9u X2RlY2wpKTsNCiAJICAgIGVsc2UNCiAJICAgICAgc3dpdGNoX3RvX3NlY3Rpb24gKGN1cnJl bnRfZnVuY3Rpb25fc2VjdGlvbiAoKSk7DQpkaWZmIC0tZ2l0IGEvZ2NjL291dHB1dC5oIGIv Z2NjL291dHB1dC5oDQppbmRleCBlYjI1M2M1MDMyOS4uOWE0NjNjNDI5NTUgMTAwNjQ0DQot LS0gYS9nY2Mvb3V0cHV0LmgNCisrKyBiL2djYy9vdXRwdXQuaA0KQEAgLTU3Myw2ICs1NzMs NyBAQCBleHRlcm4gc2VjdGlvbiAqZGVmYXVsdF9lbGZfc2VsZWN0X3NlY3Rpb24gKHRyZWUs IGludCwgdW5zaWduZWQgSE9TVF9XSURFX0lOVCk7DQogZXh0ZXJuIHZvaWQgZGVmYXVsdF91 bmlxdWVfc2VjdGlvbiAodHJlZSwgaW50KTsNCiBleHRlcm4gc2VjdGlvbiAqZGVmYXVsdF9m dW5jdGlvbl9yb2RhdGFfc2VjdGlvbiAodHJlZSk7DQogZXh0ZXJuIHNlY3Rpb24gKmRlZmF1 bHRfbm9fZnVuY3Rpb25fcm9kYXRhX3NlY3Rpb24gKHRyZWUpOw0KK2V4dGVybiBzZWN0aW9u ICpkZWZhdWx0X2Z1bmN0aW9uX3JlbHJvX3NlY3Rpb24gKHRyZWUpOw0KIGV4dGVybiBzZWN0 aW9uICpkZWZhdWx0X2Nsb25lX3RhYmxlX3NlY3Rpb24gKHZvaWQpOw0KIGV4dGVybiBzZWN0 aW9uICpkZWZhdWx0X3NlbGVjdF9ydHhfc2VjdGlvbiAobWFjaGluZV9tb2RlLCBydHgsDQog CQkJCQkgICAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCk7DQpkaWZmIC0tZ2l0IGEvZ2NjL3Rh cmdldC5kZWYgYi9nY2MvdGFyZ2V0LmRlZg0KaW5kZXggMDcwNTlhODdjYWYuLjliZDYxYjRl MDE4IDEwMDY0NA0KLS0tIGEvZ2NjL3RhcmdldC5kZWYNCisrKyBiL2djYy90YXJnZXQuZGVm DQpAQCAtNTYxLDYgKzU2MSwxOCBAQCBvdGhlcndpc2UuIiwNCiAgc2VjdGlvbiAqLCAodHJl ZSBkZWNsKSwNCiAgZGVmYXVsdF9mdW5jdGlvbl9yb2RhdGFfc2VjdGlvbikNCiANCisvKiBS ZXR1cm4gdGhlIHJlbHJvIHNlY3Rpb24gYXNzb2NpYXRlZCB3aXRoIGZ1bmN0aW9uIERFQ0wu ICAqLw0KK0RFRkhPT0sNCisoZnVuY3Rpb25fcmVscm9fc2VjdGlvbiwNCisgIlJldHVybiB0 aGUgcmVscm8gc2VjdGlvbiBhc3NvY2lhdGVkIHdpdGhcblwNCitAc2FtcHtERUNMX1NFQ1RJ T05fTkFNRSAoQHZhcntkZWNsfSl9LlxuXA0KK1RoZSBkZWZhdWx0IHZlcnNpb24gb2YgdGhp cyBmdW5jdGlvbiBzZWxlY3RzIEBjb2Rley5nbnUubGlua29uY2Uuci5uYW1lfSBpZlxuXA0K K3RoZSBmdW5jdGlvbidzIHNlY3Rpb24gaXMgQGNvZGV7LmdudS5saW5rb25jZS50Lm5hbWV9 LCBcblwNCitAY29kZXsuZGF0YS5yZWwucm8ubmFtZX0gaWYgZnVuY3Rpb24gaXMgaW4gQGNv ZGV7LnRleHQubmFtZX0sIFxuXA0KK2FuZCB0aGUgbm9ybWFsIGRhdGEgcmVscm8gc2VjdGlv biBvdGhlcndpc2UuIiwNCisgc2VjdGlvbiAqLCAodHJlZSBkZWNsKSwNCisgZGVmYXVsdF9m dW5jdGlvbl9yZWxyb19zZWN0aW9uKQ0KKw0KIC8qIE5vbm51bGwgaWYgdGhlIHRhcmdldCB3 YW50cyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAiLnJvZGF0YSIgcHJlZml4DQogICAgZm9y IG1lcmdlYWJsZSBkYXRhIHNlY3Rpb25zLiAgKi8NCiBERUZIT09LUE9EDQpkaWZmIC0tZ2l0 IGEvZ2NjL3ZhcmFzbS5jIGIvZ2NjL3ZhcmFzbS5j --------------FFE0349397210A7ADC6C8230 Content-Type: text/plain; charset=UTF-8; name="ChangeLog-0" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ChangeLog-0" ICAgICAgICAqIGZpbmFsLmMgKHNlbGVjdF9qdW1wX3RhYmxlX3NlY3Rpb24pOiBJbXBsZW1l bnQgYSBmdW5jdGlvbiB0byBzZWxlY3QgDQoJCXRoZSBzZWN0aW9uIG9mIGp1bXAgdGFibGVz IGJ5IHJlbG9jX3J3X21hc2sgYW5kIG90aGVyIGZsYWdzLg0KCQkqIG91dHB1dC5oIChkZWZh dWx0X2Z1bmN0aW9uX3JvZGF0YV9zZWN0aW9uLCBkZWZhdWx0X25vX2Z1bmN0aW9uX3JvZGF0 YV9zZWN0aW9uKToNCgkJQWRkIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gdGhlIGRlY2xhcmF0 aW9ucy4NCiAgICAgICAgKiB0YXJnZXQuZGVmIChmdW5jdGlvbl9yb2RhdGFfc2VjdGlvbik6 IENoYW5nZSB0aGUgZG9jIGFuZCBhZGQgdGhlIHNlY29uZCBhcmd1bWVudC4NCgkJKiBkb2Mv dG0udGV4aTogUmVnZW5lcmF0ZS4NCiAgICAgICAgKiB2YXJhc20uYyAoZGVmYXVsdF9mdW5j dGlvbl9yb2RhdGFfc2VjdGlvbiwgZGVmYXVsdF9ub19mdW5jdGlvbl9yb2RhdGFfc2VjdGlv biwgDQoJCWZ1bmN0aW9uX21lcmdlYWJsZV9yb2RhdGFfcHJlZml4KTogQWRkIHRoZSBzZWNv bmQgYXJndW1lbnQgaW4gZGVmYXVsdF9mdW5jdGlvbl9yb2RhdGFfc2VjdGlvbi4NCgkJSXQg aW5kaWNhdGVzIHRoZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHkgb3IgcmVsb2NhdGlv biByZWFkLW9ubHkuDQoJCUFkZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGluIGRlZmF1bHRfZnVu Y3Rpb25fcm9kYXRhX3NlY3Rpb24uIFNldCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvDQoJCWZh bHNlIHdoZW4gZGVmYXVsdF9mdW5jdGlvbl9yb2RhdGFfc2VjdGlvbiBjYWxscyBmdW5jdGlv bl9yb2RhdGFfc2VjdGlvbi4NCgkJKiBjb25maWcvbWlwcy9taXBzLmMgKG1pcHNfZnVuY3Rp b25fcm9kYXRhX3NlY3Rpb24pOiBBZGQgdGhlIHNlY29uZCBhcnVnbWVudCBhbmQgc2V0IGl0 DQoJCXRvIGZhbHNlIHdoZW4gaXQgY2FsbHMgZnVuY3Rpb25fcm9kYXRhX3NlY3Rpb24uDQoJ CSogY29uZmlnL3MzOTAvczM5MC5jICh0YXJnZXRtLmFzbV9vdXQuZnVuY3Rpb25fcm9kYXRh X3NlY3Rpb24pOiANCgkJU2V0IHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gZmFsc2UuDQoJCSog Y29uZmlnL3MzOTAvczM5MC5tZCBMaWtld2lzZS4= --------------FFE0349397210A7ADC6C8230--