From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 75319 invoked by alias); 4 Sep 2019 20:03:41 -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 75297 invoked by uid 89); 4 Sep 2019 20:03:40 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-16.1 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= X-HELO: mail-lf1-f51.google.com Received: from mail-lf1-f51.google.com (HELO mail-lf1-f51.google.com) (209.85.167.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 04 Sep 2019 20:03:37 +0000 Received: by mail-lf1-f51.google.com with SMTP id u29so13626lfk.7 for ; Wed, 04 Sep 2019 13:03:36 -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=0rD+cbOUzAR2sVtvNKoa3ZhFH7ccw+1aHIrU/NmSbsA=; b=WH24nGcxRTu9Olwx5dYSqNVaWgnWdz+I00e9+R+az4INT+VFWgur5zLIbwXOzfRG+Z 4SJp+haZJJpt7Fn6s6Iq9/xFLCN1ia7K5j8dvBNeZTAVukbZUL2Uy3i/9ykEtQDO9MSA nTyZHxeuS33irZz36NPmK7msW1PCUAIpweguFoTuB+gUD6dePmlCSjAg3zmFGPoRw1Xc AewAv9KGNNPhMNmIXusHSZybCYdkKIEOnZwPgx6mtiWhKZnLdvqH6ep6iQ22BHtlU4t0 /zJuOatUSAos8JQlcDQ2zXViYlVMB0xgxwZEu/ronEa6hluDeUgiv4Fb2JczW5HfkEFa oBqQ== 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: <2e3ad9a4-edf4-d513-ddba-1dae0da305cc@foss.arm.com> From: Christophe Lyon Date: Wed, 04 Sep 2019 20:03: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="00000000000031cbc70591bfb30d" X-IsSubscribed: yes X-SW-Source: 2019-09/txt/msg00218.txt.bz2 --00000000000031cbc70591bfb30d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Content-length: 8557 On Wed, 4 Sep 2019 at 16:16, Kyrill Tkachov w= rote: > > 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_FDP= IC); > > + 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. > > 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_FD= PIC); > > + 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), 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)= ); > > + 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 > > --00000000000031cbc70591bfb30d 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_k05ovizu0 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 X0dOVTJfVExTKQogCXsKKwkgIGdjY19hc3NlcnQgKFRBUkdFVF9GRFBJQyk7 CisKIAkgIHJlZyA9IGFybV90bHNfZGVzY3NlcV9hZGRyICh4LCByZWcpOwog CiAJICB0cCA9IGFybV9sb2FkX3RwIChOVUxMX1JUWCk7CkBAIC04ODE2LDcg Kzg4MzMsMTAgQEAgbGVnaXRpbWl6ZV90bHNfYWRkcmVzcyAocnR4IHgsIHJ0 eCByZWcpCiAgICAgICBlbHNlCiAJewogCSAgLyogT3JpZ2luYWwgc2NoZW1l ICovCi0JICBpbnNucyA9IGFybV9jYWxsX3Rsc19nZXRfYWRkciAoeCwgcmVn LCAmcmV0LCBUTFNfR0QzMik7CisJICBpZiAoVEFSR0VUX0ZEUElDKQorCSAg ICBpbnNucyA9IGFybV9jYWxsX3Rsc19nZXRfYWRkciAoeCwgcmVnLCAmcmV0 LCBUTFNfR0QzMl9GRFBJQyk7CisJICBlbHNlCisJICAgIGluc25zID0gYXJt X2NhbGxfdGxzX2dldF9hZGRyICh4LCByZWcsICZyZXQsIFRMU19HRDMyKTsK IAkgIGRlc3QgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwogCSAgZW1pdF9saWJj YWxsX2Jsb2NrIChpbnNucywgZGVzdCwgcmV0LCB4KTsKIAl9CkBAIC04ODI1 LDYgKzg4NDUsOCBAQCBsZWdpdGltaXplX3Rsc19hZGRyZXNzIChydHggeCwg cnR4IHJlZykKICAgICBjYXNlIFRMU19NT0RFTF9MT0NBTF9EWU5BTUlDOgog ICAgICAgaWYgKFRBUkdFVF9HTlUyX1RMUykKIAl7CisJICBnY2NfYXNzZXJ0 IChUQVJHRVRfRkRQSUMpOworCiAJICByZWcgPSBhcm1fdGxzX2Rlc2NzZXFf YWRkciAoeCwgcmVnKTsKIAogCSAgdHAgPSBhcm1fbG9hZF90cCAoTlVMTF9S VFgpOwpAQCAtODgzMyw3ICs4ODU1LDEwIEBAIGxlZ2l0aW1pemVfdGxzX2Fk ZHJlc3MgKHJ0eCB4LCBydHggcmVnKQogCX0KICAgICAgIGVsc2UKIAl7Ci0J ICBpbnNucyA9IGFybV9jYWxsX3Rsc19nZXRfYWRkciAoeCwgcmVnLCAmcmV0 LCBUTFNfTERNMzIpOworCSAgaWYgKFRBUkdFVF9GRFBJQykKKwkgICAgaW5z bnMgPSBhcm1fY2FsbF90bHNfZ2V0X2FkZHIgKHgsIHJlZywgJnJldCwgVExT X0xETTMyX0ZEUElDKTsKKwkgIGVsc2UKKwkgICAgaW5zbnMgPSBhcm1fY2Fs bF90bHNfZ2V0X2FkZHIgKHgsIHJlZywgJnJldCwgVExTX0xETTMyKTsKIAog CSAgLyogQXR0YWNoIGEgdW5pcXVlIFJFR19FUVVJViwgdG8gYWxsb3cgdGhl IFJUTCBvcHRpbWl6ZXJzIHRvCiAJICAgICBzaGFyZSB0aGUgTERNIHJlc3Vs dCB3aXRoIG90aGVyIExEIG1vZGVsIGFjY2Vzc2VzLiAgKi8KQEAgLTg4NTIs MjMgKzg4NzcsMzUgQEAgbGVnaXRpbWl6ZV90bHNfYWRkcmVzcyAocnR4IHgs IHJ0eCByZWcpCiAgICAgICByZXR1cm4gZGVzdDsKIAogICAgIGNhc2UgVExT X01PREVMX0lOSVRJQUxfRVhFQzoKLSAgICAgIGxhYmVsbm8gPSBHRU5fSU5U IChwaWNfbGFiZWxubysrKTsKLSAgICAgIGxhYmVsID0gZ2VuX3J0eF9VTlNQ RUMgKFBtb2RlLCBnZW5fcnR2ZWMgKDEsIGxhYmVsbm8pLCBVTlNQRUNfUElD X0xBQkVMKTsKLSAgICAgIGxhYmVsID0gZ2VuX3J0eF9DT05TVCAoVk9JRG1v ZGUsIGxhYmVsKTsKLSAgICAgIHN1bSA9IGdlbl9ydHhfVU5TUEVDIChQbW9k ZSwKLQkJCSAgICBnZW5fcnR2ZWMgKDQsIHgsIEdFTl9JTlQgKFRMU19JRTMy KSwgbGFiZWwsCi0JCQkJICAgICAgIEdFTl9JTlQgKFRBUkdFVF9BUk0gPyA4 IDogNCkpLAotCQkJICAgIFVOU1BFQ19UTFMpOwotICAgICAgcmVnID0gbG9h ZF90bHNfb3BlcmFuZCAoc3VtLCByZWcpOwotCi0gICAgICBpZiAoVEFSR0VU X0FSTSkKLQllbWl0X2luc24gKGdlbl90bHNfbG9hZF9kb3RfcGx1c19laWdo dCAocmVnLCByZWcsIGxhYmVsbm8pKTsKLSAgICAgIGVsc2UgaWYgKFRBUkdF VF9USFVNQjIpCi0JZW1pdF9pbnNuIChnZW5fdGxzX2xvYWRfZG90X3BsdXNf Zm91ciAocmVnLCBOVUxMLCByZWcsIGxhYmVsbm8pKTsKKyAgICAgIGlmIChU QVJHRVRfRkRQSUMpCisJeworCSAgc3VtID0gZ2VuX3J0eF9VTlNQRUMgKFBt b2RlLAorCQkJCWdlbl9ydHZlYyAoMiwgeCwgR0VOX0lOVCAoVExTX0lFMzJf RkRQSUMpKSwKKwkJCQlVTlNQRUNfVExTKTsKKwkgIHJlZyA9IGxvYWRfdGxz X29wZXJhbmQgKHN1bSwgcmVnKTsKKwkgIGVtaXRfaW5zbiAoZ2VuX2FkZHNp MyAocmVnLCByZWcsIGdlbl9ydHhfUkVHIChQbW9kZSwgRkRQSUNfUkVHTlVN KSkpOworCSAgZW1pdF9tb3ZlX2luc24gKHJlZywgZ2VuX3J0eF9NRU0gKFBt b2RlLCByZWcpKTsKKwl9CiAgICAgICBlbHNlCiAJewotCSAgZW1pdF9pbnNu IChnZW5fcGljX2FkZF9kb3RfcGx1c19mb3VyIChyZWcsIHJlZywgbGFiZWxu bykpOwotCSAgZW1pdF9tb3ZlX2luc24gKHJlZywgZ2VuX2NvbnN0X21lbSAo U0ltb2RlLCByZWcpKTsKKwkgIGxhYmVsbm8gPSBHRU5fSU5UIChwaWNfbGFi ZWxubysrKTsKKwkgIGxhYmVsID0gZ2VuX3J0eF9VTlNQRUMgKFBtb2RlLCBn ZW5fcnR2ZWMgKDEsIGxhYmVsbm8pLCBVTlNQRUNfUElDX0xBQkVMKTsKKwkg IGxhYmVsID0gZ2VuX3J0eF9DT05TVCAoVk9JRG1vZGUsIGxhYmVsKTsKKwkg IHN1bSA9IGdlbl9ydHhfVU5TUEVDIChQbW9kZSwKKwkJCQlnZW5fcnR2ZWMg KDQsIHgsIEdFTl9JTlQgKFRMU19JRTMyKSwgbGFiZWwsCisJCQkJCSAgIEdF Tl9JTlQgKFRBUkdFVF9BUk0gPyA4IDogNCkpLAorCQkJCVVOU1BFQ19UTFMp OworCSAgcmVnID0gbG9hZF90bHNfb3BlcmFuZCAoc3VtLCByZWcpOworCisJ ICBpZiAoVEFSR0VUX0FSTSkKKwkgICAgZW1pdF9pbnNuIChnZW5fdGxzX2xv YWRfZG90X3BsdXNfZWlnaHQgKHJlZywgcmVnLCBsYWJlbG5vKSk7CisJICBl bHNlIGlmIChUQVJHRVRfVEhVTUIyKQorCSAgICBlbWl0X2luc24gKGdlbl90 bHNfbG9hZF9kb3RfcGx1c19mb3VyIChyZWcsIE5VTEwsIHJlZywgbGFiZWxu bykpOworCSAgZWxzZQorCSAgICB7CisJICAgICAgZW1pdF9pbnNuIChnZW5f cGljX2FkZF9kb3RfcGx1c19mb3VyIChyZWcsIHJlZywgbGFiZWxubykpOwor CSAgICAgIGVtaXRfbW92ZV9pbnNuIChyZWcsIGdlbl9jb25zdF9tZW0gKFNJ bW9kZSwgcmVnKSk7CisJICAgIH0KIAl9CiAKICAgICAgIHRwID0gYXJtX2xv YWRfdHAgKE5VTExfUlRYKTsKQEAgLTI4MjA1LDE1ICsyODI0MiwyNCBAQCBh cm1fZW1pdF90bHNfZGVjb3JhdGlvbiAoRklMRSAqZnAsIHJ0eCB4KQogICAg IGNhc2UgVExTX0dEMzI6CiAgICAgICBmcHV0cyAoIih0bHNnZCkiLCBmcCk7 CiAgICAgICBicmVhazsKKyAgICBjYXNlIFRMU19HRDMyX0ZEUElDOgorICAg ICAgZnB1dHMgKCIodGxzZ2RfZmRwaWMpIiwgZnApOworICAgICAgYnJlYWs7 CiAgICAgY2FzZSBUTFNfTERNMzI6CiAgICAgICBmcHV0cyAoIih0bHNsZG0p IiwgZnApOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBUTFNfTERNMzJfRkRQ SUM6CisgICAgICBmcHV0cyAoIih0bHNsZG1fZmRwaWMpIiwgZnApOworICAg ICAgYnJlYWs7CiAgICAgY2FzZSBUTFNfTERPMzI6CiAgICAgICBmcHV0cyAo Iih0bHNsZG8pIiwgZnApOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBUTFNf SUUzMjoKICAgICAgIGZwdXRzICgiKGdvdHRwb2ZmKSIsIGZwKTsKICAgICAg IGJyZWFrOworICAgIGNhc2UgVExTX0lFMzJfRkRQSUM6CisgICAgICBmcHV0 cyAoIihnb3R0cG9mZl9mZHBpYykiLCBmcCk7CisgICAgICBicmVhazsKICAg ICBjYXNlIFRMU19MRTMyOgogICAgICAgZnB1dHMgKCIodHBvZmYpIiwgZnAp OwogICAgICAgYnJlYWs7Cg== --00000000000031cbc70591bfb30d--