From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 101714 invoked by alias); 9 Sep 2019 08:54:45 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 101705 invoked by uid 89); 9 Sep 2019 08:54:44 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-16.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=NULL_RTX, null_rtx, sk:legitim X-HELO: mail-lj1-f176.google.com Received: from mail-lj1-f176.google.com (HELO mail-lj1-f176.google.com) (209.85.208.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 09 Sep 2019 08:54:41 +0000 Received: by mail-lj1-f176.google.com with SMTP id a22so11956931ljd.0 for ; Mon, 09 Sep 2019 01:54:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=8Q/6GU3prKS8oIlA1K5rXJAMih8jNZo3yf+PeS0wBpE=; b=iirYZEy0jSulUHObBqVFfhWmaOeWcNi7x96c3HvAM9bdxNWUMrGptJRG9j5L3bKs7q mguvorQ2z4ZAOw5IeR1rUJQZDjERl+vR8BBDoqxRmTw5VCkyC4NOZ/CHFeylx9UwUnUm KznUdB7O4ip0gLBWOKCPVJeXg0AFJVZ+ZX1LKsTtwtC4P8R+vSTyM1TwfMeHqwh/Cvmm R5UBqTeWfJhdZx+Pfo8ojX2jAMJMFB4KHR9m1HViuJeyo9M111s/GE/AsIYpPbC5/miD ksIDnN2a8sourGNroNkWcOVpvNqBlB/88/j7D0buC9BYnyYYE5GgL51kFsSKhPfGiNoS LJ1Q== MIME-Version: 1.0 References: <20190515124006.25840-1-christophe.lyon@st.com> <20190515124006.25840-11-christophe.lyon@st.com> <2e3ad9a4-edf4-d513-ddba-1dae0da305cc@foss.arm.com> In-Reply-To: From: Christophe Lyon Date: Mon, 09 Sep 2019 08:54:00 -0000 Message-ID: Subject: Re: [ARM/FDPIC v5 10/21] [ARM] FDPIC: Implement TLS support. To: Kyrill Tkachov Cc: Christophe Lyon , "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="000000000000182c4a05921af00e" X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg00469.txt.bz2 --000000000000182c4a05921af00e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 9288 On Wed, 4 Sep 2019 at 22:03, Christophe Lyon w= rote: > > On Wed, 4 Sep 2019 at 16:16, Kyrill Tkachov = wrote: > > > > Hi Christophe, > > > > On 5/15/19 1:39 PM, Christophe Lyon wrote: > > > Support additional relocations: TLS_GD32_FDPIC, TLS_LDM32_FDPIC, and > > > TLS_IE32_FDPIC. > > > > > > We do not support the GNU2 TLS dialect. > > > > > > 2019-XX-XX Christophe Lyon > > > Micka=C3=ABl Gu=C3=AAn=C3=A9 > > > > > > gcc/ > > > * config/arm/arm.c (tls_reloc): Add TLS_GD32_FDPIC, > > > TLS_LDM32_FDPIC and TLS_IE32_FDPIC. > > > (arm_call_tls_get_addr): Add FDPIC support. > > > (legitimize_tls_address): Likewise. > > > (arm_emit_tls_decoration): Likewise. > > > > > > Change-Id: I4ea5034ff654540c4658d0a79fb92f70550cdf4a > > > > > > diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c > > > index 99d13bf..5fc7a20 100644 > > > --- a/gcc/config/arm/arm.c > > > +++ b/gcc/config/arm/arm.c > > > @@ -2379,9 +2379,12 @@ char arm_arch_name[] =3D "__ARM_ARCH_PROFILE__= "; > > > > > > enum tls_reloc { > > > TLS_GD32, > > > + TLS_GD32_FDPIC, > > > TLS_LDM32, > > > + TLS_LDM32_FDPIC, > > > TLS_LDO32, > > > TLS_IE32, > > > + TLS_IE32_FDPIC, > > > TLS_LE32, > > > TLS_DESCSEQ /* GNU scheme */ > > > }; > > > @@ -8760,20 +8763,34 @@ arm_call_tls_get_addr (rtx x, rtx reg, rtx > > > *valuep, int reloc) > > > gcc_assert (reloc !=3D TLS_DESCSEQ); > > > start_sequence (); > > > > > > - labelno =3D GEN_INT (pic_labelno++); > > > - label =3D gen_rtx_UNSPEC (Pmode, gen_rtvec (1, labelno), > > > UNSPEC_PIC_LABEL); > > > - label =3D gen_rtx_CONST (VOIDmode, label); > > > + if (TARGET_FDPIC) > > > + { > > > + sum =3D gen_rtx_UNSPEC (Pmode, > > > + gen_rtvec (2, x, GEN_INT (reloc)), > > > + UNSPEC_TLS); > > > + } > > > + else > > > + { > > > + labelno =3D GEN_INT (pic_labelno++); > > > + label =3D gen_rtx_UNSPEC (Pmode, gen_rtvec (1, labelno), > > > UNSPEC_PIC_LABEL); > > > + label =3D gen_rtx_CONST (VOIDmode, label); > > > > > > - sum =3D gen_rtx_UNSPEC (Pmode, > > > - gen_rtvec (4, x, GEN_INT (reloc), label, > > > - GEN_INT (TARGET_ARM ? 8 : 4)), > > > - UNSPEC_TLS); > > > + sum =3D gen_rtx_UNSPEC (Pmode, > > > + gen_rtvec (4, x, GEN_INT (reloc), label, > > > + GEN_INT (TARGET_ARM ? 8 : 4)), > > > + UNSPEC_TLS); > > > + } > > > reg =3D load_tls_operand (sum, reg); > > > > > > - if (TARGET_ARM) > > > - emit_insn (gen_pic_add_dot_plus_eight (reg, reg, labelno)); > > > + if (TARGET_FDPIC) > > > + { > > > + emit_insn (gen_addsi3 (reg, reg, gen_rtx_REG (Pmode, > > > FDPIC_REGNUM))); > > > + } > > > > No {} around single statement. > > > > > else > > > - emit_insn (gen_pic_add_dot_plus_four (reg, reg, labelno)); > > > + if (TARGET_ARM) > > > + emit_insn (gen_pic_add_dot_plus_eight (reg, reg, labelno)); > > > > > > Merge that "if" with the "else" in an "else if" > > > > > + else > > > + emit_insn (gen_pic_add_dot_plus_four (reg, reg, labelno)); > > > > > > *valuep =3D emit_library_call_value (get_tls_get_addr (), NULL_RTX, > > > LCT_PURE, /* LCT_CONST? */ > > > @@ -8808,6 +8825,7 @@ arm_tls_descseq_addr (rtx x, rtx reg) > > > return reg; > > > } > > > > > > + > > > rtx > > > legitimize_tls_address (rtx x, rtx reg) > > > { > > > @@ -8820,6 +8838,9 @@ legitimize_tls_address (rtx x, rtx reg) > > > case TLS_MODEL_GLOBAL_DYNAMIC: > > > if (TARGET_GNU2_TLS) > > > { > > > + if (TARGET_FDPIC) > > > + gcc_unreachable(); > > > + > > > > Use gcc_assert (TARGET_FDPIC) > > > > > > > reg =3D arm_tls_descseq_addr (x, reg); > > > > > > tp =3D arm_load_tp (NULL_RTX); > > > @@ -8829,7 +8850,10 @@ legitimize_tls_address (rtx x, rtx reg) > > > else > > > { > > > /* Original scheme */ > > > - insns =3D arm_call_tls_get_addr (x, reg, &ret, TLS_GD32); > > > + if (TARGET_FDPIC) > > > + insns =3D arm_call_tls_get_addr (x, reg, &ret, TLS_GD32_F= DPIC); > > > + else > > > + insns =3D arm_call_tls_get_addr (x, reg, &ret, TLS_GD32); > > > dest =3D gen_reg_rtx (Pmode); > > > emit_libcall_block (insns, dest, ret, x); > > > } > > > @@ -8838,6 +8862,9 @@ legitimize_tls_address (rtx x, rtx reg) > > > case TLS_MODEL_LOCAL_DYNAMIC: > > > if (TARGET_GNU2_TLS) > > > { > > > + if (TARGET_FDPIC) > > > + gcc_unreachable(); > > > + > > > > Likewise. > > > > Ok with those changes. > > Thanks, here is the updated version, with the initialization of labelno in > call_tls_get_addr moved from patch 4/21. > There was an obvious mistake in the previous update: the attached version inverts the assert condition to: gcc_assert (!TARGET_FDPIC); > > > > > Thanks, > > > > Kyrill > > > > > > > reg =3D arm_tls_descseq_addr (x, reg); > > > > > > tp =3D arm_load_tp (NULL_RTX); > > > @@ -8846,7 +8873,10 @@ legitimize_tls_address (rtx x, rtx reg) > > > } > > > else > > > { > > > - insns =3D arm_call_tls_get_addr (x, reg, &ret, TLS_LDM32); > > > + if (TARGET_FDPIC) > > > + insns =3D arm_call_tls_get_addr (x, reg, &ret, TLS_LDM32_= FDPIC); > > > + else > > > + insns =3D arm_call_tls_get_addr (x, reg, &ret, TLS_LDM32); > > > > > > /* Attach a unique REG_EQUIV, to allow the RTL optimizers = to > > > share the LDM result with other LD model accesses. */ > > > @@ -8865,23 +8895,35 @@ legitimize_tls_address (rtx x, rtx reg) > > > return dest; > > > > > > case TLS_MODEL_INITIAL_EXEC: > > > - labelno =3D GEN_INT (pic_labelno++); > > > - label =3D gen_rtx_UNSPEC (Pmode, gen_rtvec (1, labelno), > > > UNSPEC_PIC_LABEL); > > > - label =3D gen_rtx_CONST (VOIDmode, label); > > > - sum =3D gen_rtx_UNSPEC (Pmode, > > > - gen_rtvec (4, x, GEN_INT (TLS_IE32), labe= l, > > > - GEN_INT (TARGET_ARM ? 8 : 4)), > > > - UNSPEC_TLS); > > > - reg =3D load_tls_operand (sum, reg); > > > - > > > - if (TARGET_ARM) > > > - emit_insn (gen_tls_load_dot_plus_eight (reg, reg, labelno)); > > > - else if (TARGET_THUMB2) > > > - emit_insn (gen_tls_load_dot_plus_four (reg, NULL, reg, labeln= o)); > > > + if (TARGET_FDPIC) > > > + { > > > + sum =3D gen_rtx_UNSPEC (Pmode, > > > + gen_rtvec (2, x, GEN_INT > > > (TLS_IE32_FDPIC)), > > > + UNSPEC_TLS); > > > + reg =3D load_tls_operand (sum, reg); > > > + emit_insn (gen_addsi3 (reg, reg, gen_rtx_REG (Pmode, > > > FDPIC_REGNUM))); > > > + emit_move_insn (reg, gen_rtx_MEM (Pmode, reg)); > > > + } > > > else > > > { > > > - emit_insn (gen_pic_add_dot_plus_four (reg, reg, labelno)); > > > - emit_move_insn (reg, gen_const_mem (SImode, reg)); > > > + labelno =3D GEN_INT (pic_labelno++); > > > + label =3D gen_rtx_UNSPEC (Pmode, gen_rtvec (1, labelno), > > > UNSPEC_PIC_LABEL); > > > + label =3D gen_rtx_CONST (VOIDmode, label); > > > + sum =3D gen_rtx_UNSPEC (Pmode, > > > + gen_rtvec (4, x, GEN_INT (TLS_IE32), > > > label, > > > + GEN_INT (TARGET_ARM ? 8 : = 4)), > > > + UNSPEC_TLS); > > > + reg =3D load_tls_operand (sum, reg); > > > + > > > + if (TARGET_ARM) > > > + emit_insn (gen_tls_load_dot_plus_eight (reg, reg, labelno= )); > > > + else if (TARGET_THUMB2) > > > + emit_insn (gen_tls_load_dot_plus_four (reg, NULL, reg, > > > labelno)); > > > + else > > > + { > > > + emit_insn (gen_pic_add_dot_plus_four (reg, reg, labelno= )); > > > + emit_move_insn (reg, gen_const_mem (SImode, reg)); > > > + } > > > } > > > > > > tp =3D arm_load_tp (NULL_RTX); > > > @@ -28218,15 +28260,24 @@ arm_emit_tls_decoration (FILE *fp, rtx x) > > > case TLS_GD32: > > > fputs ("(tlsgd)", fp); > > > break; > > > + case TLS_GD32_FDPIC: > > > + fputs ("(tlsgd_fdpic)", fp); > > > + break; > > > case TLS_LDM32: > > > fputs ("(tlsldm)", fp); > > > break; > > > + case TLS_LDM32_FDPIC: > > > + fputs ("(tlsldm_fdpic)", fp); > > > + break; > > > case TLS_LDO32: > > > fputs ("(tlsldo)", fp); > > > break; > > > case TLS_IE32: > > > fputs ("(gottpoff)", fp); > > > break; > > > + case TLS_IE32_FDPIC: > > > + fputs ("(gottpoff_fdpic)", fp); > > > + break; > > > case TLS_LE32: > > > fputs ("(tpoff)", fp); > > > break; > > > -- > > > 2.6.3 > > > --000000000000182c4a05921af00e Content-Type: text/x-patch; charset="UTF-8"; name="10-ARM-FDPIC-Implement-TLS-support.patch" Content-Disposition: attachment; filename="10-ARM-FDPIC-Implement-TLS-support.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k0c64y8l0 Content-length: 8687 Y29tbWl0IDQ4MWQ0MTYxYTZjZGY4ODA5MWNkMmZlZjdlZTdmZTZiOGE4MzZk MTgKQXV0aG9yOiBDaHJpc3RvcGhlIEx5b24gPGNocmlzdG9waGUubHlvbkBs aW5hcm8ub3JnPgpEYXRlOiAgIFRodSBGZWIgOCAxNDo0MjowNSAyMDE4ICsw MTAwCgogICAgW0FSTV0gRkRQSUM6IEltcGxlbWVudCBUTFMgc3VwcG9ydC4K ICAgIAogICAgU3VwcG9ydCBhZGRpdGlvbmFsIHJlbG9jYXRpb25zOiBUTFNf R0QzMl9GRFBJQywgVExTX0xETTMyX0ZEUElDLCBhbmQKICAgIFRMU19JRTMy X0ZEUElDLgogICAgCiAgICBXZSBkbyBub3Qgc3VwcG9ydCB0aGUgR05VMiBU TFMgZGlhbGVjdC4KICAgIAogICAgMjAxOS1YWC1YWCAgQ2hyaXN0b3BoZSBM eW9uICA8Y2hyaXN0b3BoZS5seW9uQHN0LmNvbT4KICAgIAlNaWNrYcOrbCBH dcOqbsOpIDxtaWNrYWVsLmd1ZW5lQHN0LmNvbT4KICAgIAogICAgCWdjYy8K ICAgIAkqIGNvbmZpZy9hcm0vYXJtLmMgKHRsc19yZWxvYyk6IEFkZCBUTFNf R0QzMl9GRFBJQywKICAgIAlUTFNfTERNMzJfRkRQSUMgYW5kIFRMU19JRTMy X0ZEUElDLgogICAgCShhcm1fY2FsbF90bHNfZ2V0X2FkZHIpOiBBZGQgRkRQ SUMgc3VwcG9ydC4KICAgIAkobGVnaXRpbWl6ZV90bHNfYWRkcmVzcyk6IExp a2V3aXNlLgogICAgCShhcm1fZW1pdF90bHNfZGVjb3JhdGlvbik6IExpa2V3 aXNlLgogICAgCiAgICBDaGFuZ2UtSWQ6IEk0ZWE1MDM0ZmY2NTQ1NDBjNDY1 OGQwYTc5ZmI5MmY3MDU1MGNkZjRhCgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZp Zy9hcm0vYXJtLmMgYi9nY2MvY29uZmlnL2FybS9hcm0uYwppbmRleCA4OTMw ZmYyLi43MjRlZGVhIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL2FybS9hcm0u YworKysgYi9nY2MvY29uZmlnL2FybS9hcm0uYwpAQCAtMjM3OSw5ICsyMzc5 LDEyIEBAIGNoYXIgYXJtX2FyY2hfbmFtZVtdID0gIl9fQVJNX0FSQ0hfUFJP RklMRV9fIjsKIAogZW51bSB0bHNfcmVsb2MgewogICBUTFNfR0QzMiwKKyAg VExTX0dEMzJfRkRQSUMsCiAgIFRMU19MRE0zMiwKKyAgVExTX0xETTMyX0ZE UElDLAogICBUTFNfTERPMzIsCiAgIFRMU19JRTMyLAorICBUTFNfSUUzMl9G RFBJQywKICAgVExTX0xFMzIsCiAgIFRMU19ERVNDU0VRCS8qIEdOVSBzY2hl bWUgKi8KIH07CkBAIC04NzQyLDIyICs4NzQ1LDMzIEBAIGxvYWRfdGxzX29w ZXJhbmQgKHJ0eCB4LCBydHggcmVnKQogc3RhdGljIHJ0eF9pbnNuICoKIGFy bV9jYWxsX3Rsc19nZXRfYWRkciAocnR4IHgsIHJ0eCByZWcsIHJ0eCAqdmFs dWVwLCBpbnQgcmVsb2MpCiB7Ci0gIHJ0eCBsYWJlbCwgbGFiZWxubywgc3Vt OworICBydHggbGFiZWwsIGxhYmVsbm8gPSBOVUxMX1JUWCwgc3VtOwogCiAg IGdjY19hc3NlcnQgKHJlbG9jICE9IFRMU19ERVNDU0VRKTsKICAgc3RhcnRf c2VxdWVuY2UgKCk7CiAKLSAgbGFiZWxubyA9IEdFTl9JTlQgKHBpY19sYWJl bG5vKyspOwotICBsYWJlbCA9IGdlbl9ydHhfVU5TUEVDIChQbW9kZSwgZ2Vu X3J0dmVjICgxLCBsYWJlbG5vKSwgVU5TUEVDX1BJQ19MQUJFTCk7Ci0gIGxh YmVsID0gZ2VuX3J0eF9DT05TVCAoVk9JRG1vZGUsIGxhYmVsKTsKKyAgaWYg KFRBUkdFVF9GRFBJQykKKyAgICB7CisgICAgICBzdW0gPSBnZW5fcnR4X1VO U1BFQyAoUG1vZGUsCisJCQkgICAgZ2VuX3J0dmVjICgyLCB4LCBHRU5fSU5U IChyZWxvYykpLAorCQkJICAgIFVOU1BFQ19UTFMpOworICAgIH0KKyAgZWxz ZQorICAgIHsKKyAgICAgIGxhYmVsbm8gPSBHRU5fSU5UIChwaWNfbGFiZWxu bysrKTsKKyAgICAgIGxhYmVsID0gZ2VuX3J0eF9VTlNQRUMgKFBtb2RlLCBn ZW5fcnR2ZWMgKDEsIGxhYmVsbm8pLCBVTlNQRUNfUElDX0xBQkVMKTsKKyAg ICAgIGxhYmVsID0gZ2VuX3J0eF9DT05TVCAoVk9JRG1vZGUsIGxhYmVsKTsK IAotICBzdW0gPSBnZW5fcnR4X1VOU1BFQyAoUG1vZGUsCi0JCQlnZW5fcnR2 ZWMgKDQsIHgsIEdFTl9JTlQgKHJlbG9jKSwgbGFiZWwsCi0JCQkJICAgR0VO X0lOVCAoVEFSR0VUX0FSTSA/IDggOiA0KSksCi0JCQlVTlNQRUNfVExTKTsK KyAgICAgIHN1bSA9IGdlbl9ydHhfVU5TUEVDIChQbW9kZSwKKwkJCSAgICBn ZW5fcnR2ZWMgKDQsIHgsIEdFTl9JTlQgKHJlbG9jKSwgbGFiZWwsCisJCQkJ ICAgICAgIEdFTl9JTlQgKFRBUkdFVF9BUk0gPyA4IDogNCkpLAorCQkJICAg IFVOU1BFQ19UTFMpOworICAgIH0KICAgcmVnID0gbG9hZF90bHNfb3BlcmFu ZCAoc3VtLCByZWcpOwogCi0gIGlmIChUQVJHRVRfQVJNKQorICBpZiAoVEFS R0VUX0ZEUElDKQorICAgICAgZW1pdF9pbnNuIChnZW5fYWRkc2kzIChyZWcs IHJlZywgZ2VuX3J0eF9SRUcgKFBtb2RlLCBGRFBJQ19SRUdOVU0pKSk7Cisg IGVsc2UgaWYgKFRBUkdFVF9BUk0pCiAgICAgZW1pdF9pbnNuIChnZW5fcGlj X2FkZF9kb3RfcGx1c19laWdodCAocmVnLCByZWcsIGxhYmVsbm8pKTsKICAg ZWxzZQogICAgIGVtaXRfaW5zbiAoZ2VuX3BpY19hZGRfZG90X3BsdXNfZm91 ciAocmVnLCByZWcsIGxhYmVsbm8pKTsKQEAgLTg3OTUsNiArODgwOSw3IEBA IGFybV90bHNfZGVzY3NlcV9hZGRyIChydHggeCwgcnR4IHJlZykKICAgcmV0 dXJuIHJlZzsKIH0KIAorCiBydHgKIGxlZ2l0aW1pemVfdGxzX2FkZHJlc3Mg KHJ0eCB4LCBydHggcmVnKQogewpAQCAtODgwNyw2ICs4ODIyLDggQEAgbGVn aXRpbWl6ZV90bHNfYWRkcmVzcyAocnR4IHgsIHJ0eCByZWcpCiAgICAgY2Fz ZSBUTFNfTU9ERUxfR0xPQkFMX0RZTkFNSUM6CiAgICAgICBpZiAoVEFSR0VU X0dOVTJfVExTKQogCXsKKwkgIGdjY19hc3NlcnQgKCFUQVJHRVRfRkRQSUMp OworCiAJICByZWcgPSBhcm1fdGxzX2Rlc2NzZXFfYWRkciAoeCwgcmVnKTsK IAogCSAgdHAgPSBhcm1fbG9hZF90cCAoTlVMTF9SVFgpOwpAQCAtODgxNiw3 ICs4ODMzLDEwIEBAIGxlZ2l0aW1pemVfdGxzX2FkZHJlc3MgKHJ0eCB4LCBy dHggcmVnKQogICAgICAgZWxzZQogCXsKIAkgIC8qIE9yaWdpbmFsIHNjaGVt ZSAqLwotCSAgaW5zbnMgPSBhcm1fY2FsbF90bHNfZ2V0X2FkZHIgKHgsIHJl ZywgJnJldCwgVExTX0dEMzIpOworCSAgaWYgKFRBUkdFVF9GRFBJQykKKwkg ICAgaW5zbnMgPSBhcm1fY2FsbF90bHNfZ2V0X2FkZHIgKHgsIHJlZywgJnJl dCwgVExTX0dEMzJfRkRQSUMpOworCSAgZWxzZQorCSAgICBpbnNucyA9IGFy bV9jYWxsX3Rsc19nZXRfYWRkciAoeCwgcmVnLCAmcmV0LCBUTFNfR0QzMik7 CiAJICBkZXN0ID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKIAkgIGVtaXRfbGli Y2FsbF9ibG9jayAoaW5zbnMsIGRlc3QsIHJldCwgeCk7CiAJfQpAQCAtODgy NSw2ICs4ODQ1LDggQEAgbGVnaXRpbWl6ZV90bHNfYWRkcmVzcyAocnR4IHgs IHJ0eCByZWcpCiAgICAgY2FzZSBUTFNfTU9ERUxfTE9DQUxfRFlOQU1JQzoK ICAgICAgIGlmIChUQVJHRVRfR05VMl9UTFMpCiAJeworCSAgZ2NjX2Fzc2Vy dCAoIVRBUkdFVF9GRFBJQyk7CisKIAkgIHJlZyA9IGFybV90bHNfZGVzY3Nl cV9hZGRyICh4LCByZWcpOwogCiAJICB0cCA9IGFybV9sb2FkX3RwIChOVUxM X1JUWCk7CkBAIC04ODMzLDcgKzg4NTUsMTAgQEAgbGVnaXRpbWl6ZV90bHNf YWRkcmVzcyAocnR4IHgsIHJ0eCByZWcpCiAJfQogICAgICAgZWxzZQogCXsK LQkgIGluc25zID0gYXJtX2NhbGxfdGxzX2dldF9hZGRyICh4LCByZWcsICZy ZXQsIFRMU19MRE0zMik7CisJICBpZiAoVEFSR0VUX0ZEUElDKQorCSAgICBp bnNucyA9IGFybV9jYWxsX3Rsc19nZXRfYWRkciAoeCwgcmVnLCAmcmV0LCBU TFNfTERNMzJfRkRQSUMpOworCSAgZWxzZQorCSAgICBpbnNucyA9IGFybV9j YWxsX3Rsc19nZXRfYWRkciAoeCwgcmVnLCAmcmV0LCBUTFNfTERNMzIpOwog CiAJICAvKiBBdHRhY2ggYSB1bmlxdWUgUkVHX0VRVUlWLCB0byBhbGxvdyB0 aGUgUlRMIG9wdGltaXplcnMgdG8KIAkgICAgIHNoYXJlIHRoZSBMRE0gcmVz dWx0IHdpdGggb3RoZXIgTEQgbW9kZWwgYWNjZXNzZXMuICAqLwpAQCAtODg1 MiwyMyArODg3NywzNSBAQCBsZWdpdGltaXplX3Rsc19hZGRyZXNzIChydHgg eCwgcnR4IHJlZykKICAgICAgIHJldHVybiBkZXN0OwogCiAgICAgY2FzZSBU TFNfTU9ERUxfSU5JVElBTF9FWEVDOgotICAgICAgbGFiZWxubyA9IEdFTl9J TlQgKHBpY19sYWJlbG5vKyspOwotICAgICAgbGFiZWwgPSBnZW5fcnR4X1VO U1BFQyAoUG1vZGUsIGdlbl9ydHZlYyAoMSwgbGFiZWxubyksIFVOU1BFQ19Q SUNfTEFCRUwpOwotICAgICAgbGFiZWwgPSBnZW5fcnR4X0NPTlNUIChWT0lE bW9kZSwgbGFiZWwpOwotICAgICAgc3VtID0gZ2VuX3J0eF9VTlNQRUMgKFBt b2RlLAotCQkJICAgIGdlbl9ydHZlYyAoNCwgeCwgR0VOX0lOVCAoVExTX0lF MzIpLCBsYWJlbCwKLQkJCQkgICAgICAgR0VOX0lOVCAoVEFSR0VUX0FSTSA/ IDggOiA0KSksCi0JCQkgICAgVU5TUEVDX1RMUyk7Ci0gICAgICByZWcgPSBs b2FkX3Rsc19vcGVyYW5kIChzdW0sIHJlZyk7Ci0KLSAgICAgIGlmIChUQVJH RVRfQVJNKQotCWVtaXRfaW5zbiAoZ2VuX3Rsc19sb2FkX2RvdF9wbHVzX2Vp Z2h0IChyZWcsIHJlZywgbGFiZWxubykpOwotICAgICAgZWxzZSBpZiAoVEFS R0VUX1RIVU1CMikKLQllbWl0X2luc24gKGdlbl90bHNfbG9hZF9kb3RfcGx1 c19mb3VyIChyZWcsIE5VTEwsIHJlZywgbGFiZWxubykpOworICAgICAgaWYg KFRBUkdFVF9GRFBJQykKKwl7CisJICBzdW0gPSBnZW5fcnR4X1VOU1BFQyAo UG1vZGUsCisJCQkJZ2VuX3J0dmVjICgyLCB4LCBHRU5fSU5UIChUTFNfSUUz Ml9GRFBJQykpLAorCQkJCVVOU1BFQ19UTFMpOworCSAgcmVnID0gbG9hZF90 bHNfb3BlcmFuZCAoc3VtLCByZWcpOworCSAgZW1pdF9pbnNuIChnZW5fYWRk c2kzIChyZWcsIHJlZywgZ2VuX3J0eF9SRUcgKFBtb2RlLCBGRFBJQ19SRUdO VU0pKSk7CisJICBlbWl0X21vdmVfaW5zbiAocmVnLCBnZW5fcnR4X01FTSAo UG1vZGUsIHJlZykpOworCX0KICAgICAgIGVsc2UKIAl7Ci0JICBlbWl0X2lu c24gKGdlbl9waWNfYWRkX2RvdF9wbHVzX2ZvdXIgKHJlZywgcmVnLCBsYWJl bG5vKSk7Ci0JICBlbWl0X21vdmVfaW5zbiAocmVnLCBnZW5fY29uc3RfbWVt IChTSW1vZGUsIHJlZykpOworCSAgbGFiZWxubyA9IEdFTl9JTlQgKHBpY19s YWJlbG5vKyspOworCSAgbGFiZWwgPSBnZW5fcnR4X1VOU1BFQyAoUG1vZGUs IGdlbl9ydHZlYyAoMSwgbGFiZWxubyksIFVOU1BFQ19QSUNfTEFCRUwpOwor CSAgbGFiZWwgPSBnZW5fcnR4X0NPTlNUIChWT0lEbW9kZSwgbGFiZWwpOwor CSAgc3VtID0gZ2VuX3J0eF9VTlNQRUMgKFBtb2RlLAorCQkJCWdlbl9ydHZl YyAoNCwgeCwgR0VOX0lOVCAoVExTX0lFMzIpLCBsYWJlbCwKKwkJCQkJICAg R0VOX0lOVCAoVEFSR0VUX0FSTSA/IDggOiA0KSksCisJCQkJVU5TUEVDX1RM Uyk7CisJICByZWcgPSBsb2FkX3Rsc19vcGVyYW5kIChzdW0sIHJlZyk7CisK KwkgIGlmIChUQVJHRVRfQVJNKQorCSAgICBlbWl0X2luc24gKGdlbl90bHNf bG9hZF9kb3RfcGx1c19laWdodCAocmVnLCByZWcsIGxhYmVsbm8pKTsKKwkg IGVsc2UgaWYgKFRBUkdFVF9USFVNQjIpCisJICAgIGVtaXRfaW5zbiAoZ2Vu X3Rsc19sb2FkX2RvdF9wbHVzX2ZvdXIgKHJlZywgTlVMTCwgcmVnLCBsYWJl bG5vKSk7CisJICBlbHNlCisJICAgIHsKKwkgICAgICBlbWl0X2luc24gKGdl bl9waWNfYWRkX2RvdF9wbHVzX2ZvdXIgKHJlZywgcmVnLCBsYWJlbG5vKSk7 CisJICAgICAgZW1pdF9tb3ZlX2luc24gKHJlZywgZ2VuX2NvbnN0X21lbSAo U0ltb2RlLCByZWcpKTsKKwkgICAgfQogCX0KIAogICAgICAgdHAgPSBhcm1f bG9hZF90cCAoTlVMTF9SVFgpOwpAQCAtMjgyMDUsMTUgKzI4MjQyLDI0IEBA IGFybV9lbWl0X3Rsc19kZWNvcmF0aW9uIChGSUxFICpmcCwgcnR4IHgpCiAg ICAgY2FzZSBUTFNfR0QzMjoKICAgICAgIGZwdXRzICgiKHRsc2dkKSIsIGZw KTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgVExTX0dEMzJfRkRQSUM6Cisg ICAgICBmcHV0cyAoIih0bHNnZF9mZHBpYykiLCBmcCk7CisgICAgICBicmVh azsKICAgICBjYXNlIFRMU19MRE0zMjoKICAgICAgIGZwdXRzICgiKHRsc2xk bSkiLCBmcCk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFRMU19MRE0zMl9G RFBJQzoKKyAgICAgIGZwdXRzICgiKHRsc2xkbV9mZHBpYykiLCBmcCk7Cisg ICAgICBicmVhazsKICAgICBjYXNlIFRMU19MRE8zMjoKICAgICAgIGZwdXRz ICgiKHRsc2xkbykiLCBmcCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFRM U19JRTMyOgogICAgICAgZnB1dHMgKCIoZ290dHBvZmYpIiwgZnApOwogICAg ICAgYnJlYWs7CisgICAgY2FzZSBUTFNfSUUzMl9GRFBJQzoKKyAgICAgIGZw dXRzICgiKGdvdHRwb2ZmX2ZkcGljKSIsIGZwKTsKKyAgICAgIGJyZWFrOwog ICAgIGNhc2UgVExTX0xFMzI6CiAgICAgICBmcHV0cyAoIih0cG9mZikiLCBm cCk7CiAgICAgICBicmVhazsK --000000000000182c4a05921af00e--