From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 92615 invoked by alias); 23 Oct 2019 14:31:02 -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 92471 invoked by uid 89); 23 Oct 2019 14:31:00 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-19.0 required=5.0 tests=AWL,BAYES_00,DATE_IN_PAST_03_06,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LOTSOFHASH,MISSING_MID autolearn=ham version=3.3.1 spammy=armv8a, armv8-a, fpu, Neon X-HELO: foss.arm.com Received: from Unknown (HELO foss.arm.com) (217.140.110.172) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 23 Oct 2019 14:30:56 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 306DC3E8; Wed, 23 Oct 2019 07:30:48 -0700 (PDT) Received: from e121093-lin.cambridge.arm.com (e121093-lin.cambridge.arm.com [10.2.206.226]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 995BA3F71F; Wed, 23 Oct 2019 07:30:47 -0700 (PDT) Content-Type: multipart/mixed; boundary="===============5455046248308794988==" MIME-Version: 1.0 From: Mihail Ionescu Date: Wed, 23 Oct 2019 14:31:00 -0000 To: gcc-patches@gcc.gnu.org Cc: , Subject: [PATCH, GCC/ARM, 2/10] Add command line support for Armv8.1-M Mainline In-Reply-To: <157182277387.27853.13331885863813614565.scripted-patch-series@arm.com> References: <157182277387.27853.13331885863813614565.scripted-patch-series@arm.com> X-IsSubscribed: yes X-SW-Source: 2019-10/txt/msg01659.txt.bz2 Message-ID: <20191023143100.R2l6GRwe6jLhpfyUmgirSXM1oC4YoxugvW7c9rs2uOY@z> --===============5455046248308794988== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-length: 9240 [PATCH, GCC/ARM, 2/10] Add command line support Hi, === Context === This patch is part of a patch series to add support for Armv8.1-M Mainline Security Extensions architecture. Its purpose is to add command-line support for that new architecture. === Patch description === Besides the expected enabling of the new value for the -march command-line option (-march=armv8.1-m.main) and its extensions (see below), this patch disables support of the Security Extensions for this newly added architecture. This is done both by not including the cmse bit in the architecture description and by throwing an error message when user request Armv8.1-M Mainline Security Extensions. Note that Armv8-M Baseline and Mainline Security Extensions are still enabled. Only extensions for already supported instructions are implemented in this patch. Other extensions (MVE integer and float) will be added in separate patches. The following configurations are allowed for Armv8.1-M Mainline with regards to FPU and implemented in this patch: + no FPU (+nofp) + single precision VFPv5 with FP16 (+fp) + double precision VFPv5 with FP16 (+fp.dp) ChangeLog entry are as follow: *** gcc/ChangeLog *** 2019-10-23 Mihail-Calin Ionescu 2019-10-23 Thomas Preud'homme * config/arm/arm-cpus.in (armv8_1m_main): New feature. (ARMv4, ARMv4t, ARMv5t, ARMv5te, ARMv5tej, ARMv6, ARMv6j, ARMv6k, ARMv6z, ARMv6kz, ARMv6zk, ARMv6t2, ARMv6m, ARMv7, ARMv7a, ARMv7ve, ARMv7r, ARMv7m, ARMv7em, ARMv8a, ARMv8_1a, ARMv8_2a, ARMv8_3a, ARMv8_4a, ARMv8_5a, ARMv8m_base, ARMv8m_main, ARMv8r): Reindent. (ARMv8_1m_main): New feature group. (armv8.1-m.main): New architecture. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm.c (arm_arch8_1m_main): Define and default initialize. (arm_option_reconfigure_globals): Initialize arm_arch8_1m_main. (arm_options_perform_arch_sanity_checks): Error out when targeting Armv8.1-M Mainline Security Extensions. * config/arm/arm.h (arm_arch8_1m_main): Declare. *** gcc/testsuite/ChangeLog *** 2019-10-23 Mihail-Calin Ionescu 2019-10-23 Thomas Preud'homme * lib/target-supports.exp (check_effective_target_arm_arch_v8_1m_main_ok): Define. (add_options_for_arm_arch_v8_1m_main): Likewise. (check_effective_target_arm_arch_v8_1m_main_multilib): Likewise. Testing: bootstrapped on arm-linux-gnueabihf and arm-none-eabi; testsuite shows no regression. Is this ok for trunk? Best regards, Mihail ############### Attachment also inlined for ease of reply ############### diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in index f8a3b3db67a537163bfe787d78c8f2edc4253ab3..652f2a4be9388fd7a74f0ec4615a292fd1cfcd36 100644 --- a/gcc/config/arm/arm-cpus.in +++ b/gcc/config/arm/arm-cpus.in @@ -126,6 +126,9 @@ define feature armv8_5 # M-Profile security extensions. define feature cmse +# Architecture rel 8.1-M. +define feature armv8_1m_main + # Floating point and Neon extensions. # VFPv1 is not supported in GCC. @@ -223,21 +226,21 @@ define fgroup ALL_FPU_INTERNAL vfpv2 vfpv3 vfpv4 fpv5 fp16conv fp_dbl ALL_SIMD_I # -mfpu support. define fgroup ALL_FP fp16 ALL_FPU_INTERNAL -define fgroup ARMv4 armv4 notm -define fgroup ARMv4t ARMv4 thumb -define fgroup ARMv5t ARMv4t armv5t -define fgroup ARMv5te ARMv5t armv5te -define fgroup ARMv5tej ARMv5te -define fgroup ARMv6 ARMv5te armv6 be8 -define fgroup ARMv6j ARMv6 -define fgroup ARMv6k ARMv6 armv6k -define fgroup ARMv6z ARMv6 -define fgroup ARMv6kz ARMv6k quirk_armv6kz -define fgroup ARMv6zk ARMv6k -define fgroup ARMv6t2 ARMv6 thumb2 +define fgroup ARMv4 armv4 notm +define fgroup ARMv4t ARMv4 thumb +define fgroup ARMv5t ARMv4t armv5t +define fgroup ARMv5te ARMv5t armv5te +define fgroup ARMv5tej ARMv5te +define fgroup ARMv6 ARMv5te armv6 be8 +define fgroup ARMv6j ARMv6 +define fgroup ARMv6k ARMv6 armv6k +define fgroup ARMv6z ARMv6 +define fgroup ARMv6kz ARMv6k quirk_armv6kz +define fgroup ARMv6zk ARMv6k +define fgroup ARMv6t2 ARMv6 thumb2 # This is suspect. ARMv6-m doesn't really pull in any useful features # from ARMv5* or ARMv6. -define fgroup ARMv6m armv4 thumb armv5t armv5te armv6 be8 +define fgroup ARMv6m armv4 thumb armv5t armv5te armv6 be8 # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and # integer SIMD instructions that are in ARMv6T2. */ define fgroup ARMv7 ARMv6m thumb2 armv7 @@ -256,6 +259,10 @@ define fgroup ARMv8_5a ARMv8_4a armv8_5 sb predres define fgroup ARMv8m_base ARMv6m armv8 cmse tdiv define fgroup ARMv8m_main ARMv7m armv8 cmse define fgroup ARMv8r ARMv8a +# Feature cmse is omitted to disable Security Extensions support while secure +# code compiled by GCC does not preserve FP context as allowed by Armv8.1-M +# Mainline. +define fgroup ARMv8_1m_main ARMv7m armv8 armv8_1m_main # Useful combinations. define fgroup VFPv2 vfpv2 @@ -644,6 +651,17 @@ begin arch armv8-r option nofp remove ALL_FP end arch armv8-r +begin arch armv8.1-m.main + tune for cortex-m7 + tune flags CO_PROC + base 8M_MAIN + isa ARMv8_1m_main +# fp => FPv5-sp-d16; fp.dp => FPv5-d16 + option fp add FPv5 fp16 + option fp.dp add FPv5 FP_DBL fp16 + option nofp remove ALL_FP +end arch armv8.1-m.main + begin arch iwmmxt tune for iwmmxt tune flags LDSCHED STRONG XSCALE diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index aeb5b3fbf629e5cfae4d5f6d4d5f1a9c7752a511..d059969904cb39fbe583487e4fbb23d4f9838718 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -353,10 +353,13 @@ EnumValue Enum(arm_arch) String(armv8-r) Value(28) EnumValue -Enum(arm_arch) String(iwmmxt) Value(29) +Enum(arm_arch) String(armv8.1-m.main) Value(29) EnumValue -Enum(arm_arch) String(iwmmxt2) Value(30) +Enum(arm_arch) String(iwmmxt) Value(30) + +EnumValue +Enum(arm_arch) String(iwmmxt2) Value(31) Enum Name(arm_fpu) Type(enum fpu_type) diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 8b67c9c3657b312be223ab60c01969958baa9ed3..307f1b59ba4456c901c8cb842d9961a740b6bb8d 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -456,6 +456,10 @@ extern int arm_arch8_3; /* Nonzero if this chip supports the ARM Architecture 8.4 extensions. */ extern int arm_arch8_4; +/* Nonzero if this chip supports the ARM Architecture 8.1-M Mainline + extensions. */ +extern int arm_arch8_1m_main; + /* Nonzero if this chip supports the FP16 instructions extension of ARM Architecture 8.2. */ extern int arm_fp16_inst; diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 9f0975dc0710626ef46abecaa3a205e993821118..9aca9484a9cdc26d6afee25e81f06b4047df2174 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -903,6 +903,9 @@ int arm_arch8_3 = 0; /* Nonzero if this chip supports the ARM Architecture 8.4 extensions. */ int arm_arch8_4 = 0; +/* Nonzero if this chip supports the ARM Architecture 8.1-M Mainline + extensions. */ +int arm_arch8_1m_main = 0; /* Nonzero if this chip supports the FP16 instructions extension of ARM Architecture 8.2. */ @@ -3642,6 +3645,8 @@ arm_option_reconfigure_globals (void) arm_arch8_2 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv8_2); arm_arch8_3 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv8_3); arm_arch8_4 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv8_4); + arm_arch8_1m_main = bitmap_bit_p (arm_active_target.isa, + isa_bit_armv8_1m_main); arm_arch_thumb1 = bitmap_bit_p (arm_active_target.isa, isa_bit_thumb); arm_arch_thumb2 = bitmap_bit_p (arm_active_target.isa, isa_bit_thumb2); arm_arch_xscale = bitmap_bit_p (arm_active_target.isa, isa_bit_xscale); @@ -3727,6 +3732,9 @@ arm_options_perform_arch_sanity_checks (void) if (!arm_arch4 && arm_fp16_format != ARM_FP16_FORMAT_NONE) sorry ("__fp16 and no ldrh"); + if (use_cmse && arm_arch8_1m_main) + error ("ARMv8.1-M Mainline Security Extensions are unsupported"); + if (use_cmse && !arm_arch_cmse) error ("target CPU does not support ARMv8-M Security Extensions"); diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 6a1aaca9691b7fe9ae5e0e5b1874c7af34a3a6e3..5688aa7a6b7e8dad28aa553755b657464071a982 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -4242,10 +4242,11 @@ foreach { armfunc armflag armdefs } { v8a "-march=armv8-a" __ARM_ARCH_8A__ v8_1a "-march=armv8.1-a" __ARM_ARCH_8A__ v8_2a "-march=armv8.2-a" __ARM_ARCH_8A__ + v8r "-march=armv8-r" __ARM_ARCH_8R__ v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" __ARM_ARCH_8M_BASE__ v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ - v8r "-march=armv8-r" __ARM_ARCH_8R__ } { + v8_1m_main "-march=armv8.1-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } { eval [string map [list FUNC $armfunc FLAG $armflag DEFS $armdefs ] { proc check_effective_target_arm_arch_FUNC_ok { } { return [check_no_compiler_messages arm_arch_FUNC_ok assembly { --===============5455046248308794988== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Disposition: attachment; filename="diff01.patch" Content-Transfer-Encoding: base64 Content-length: 8972 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS1jcHVzLmluIGIvZ2Nj L2NvbmZpZy9hcm0vYXJtLWNwdXMuaW4KaW5kZXggZjhhM2IzZGI2N2E1Mzcx NjNiZmU3ODdkNzhjOGYyZWRjNDI1M2FiMy4uNjUyZjJhNGJlOTM4OGZkN2E3 NGYwZWM0NjE1YTI5MmZkMWNmY2QzNiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9hcm0vYXJtLWNwdXMuaW4KKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLWNw dXMuaW4KQEAgLTEyNiw2ICsxMjYsOSBAQCBkZWZpbmUgZmVhdHVyZSBhcm12 OF81CiAjIE0tUHJvZmlsZSBzZWN1cml0eSBleHRlbnNpb25zLgogZGVmaW5l IGZlYXR1cmUgY21zZQogCisjIEFyY2hpdGVjdHVyZSByZWwgOC4xLU0uCitk ZWZpbmUgZmVhdHVyZSBhcm12OF8xbV9tYWluCisKICMgRmxvYXRpbmcgcG9p bnQgYW5kIE5lb24gZXh0ZW5zaW9ucy4KICMgVkZQdjEgaXMgbm90IHN1cHBv cnRlZCBpbiBHQ0MuCiAKQEAgLTIyMywyMSArMjI2LDIxIEBAIGRlZmluZSBm Z3JvdXAgQUxMX0ZQVV9JTlRFUk5BTAl2ZnB2MiB2ZnB2MyB2ZnB2NCBmcHY1 IGZwMTZjb252IGZwX2RibCBBTExfU0lNRF9JCiAjIC1tZnB1IHN1cHBvcnQu CiBkZWZpbmUgZmdyb3VwIEFMTF9GUAlmcDE2IEFMTF9GUFVfSU5URVJOQUwK IAotZGVmaW5lIGZncm91cCBBUk12NCAgICAgICBhcm12NCBub3RtCi1kZWZp bmUgZmdyb3VwIEFSTXY0dCAgICAgIEFSTXY0IHRodW1iCi1kZWZpbmUgZmdy b3VwIEFSTXY1dCAgICAgIEFSTXY0dCBhcm12NXQKLWRlZmluZSBmZ3JvdXAg QVJNdjV0ZSAgICAgQVJNdjV0IGFybXY1dGUKLWRlZmluZSBmZ3JvdXAgQVJN djV0ZWogICAgQVJNdjV0ZQotZGVmaW5lIGZncm91cCBBUk12NiAgICAgICBB Uk12NXRlIGFybXY2IGJlOAotZGVmaW5lIGZncm91cCBBUk12NmogICAgICBB Uk12NgotZGVmaW5lIGZncm91cCBBUk12NmsgICAgICBBUk12NiBhcm12NmsK LWRlZmluZSBmZ3JvdXAgQVJNdjZ6ICAgICAgQVJNdjYKLWRlZmluZSBmZ3Jv dXAgQVJNdjZreiAgICAgQVJNdjZrIHF1aXJrX2FybXY2a3oKLWRlZmluZSBm Z3JvdXAgQVJNdjZ6ayAgICAgQVJNdjZrCi1kZWZpbmUgZmdyb3VwIEFSTXY2 dDIgICAgIEFSTXY2IHRodW1iMgorZGVmaW5lIGZncm91cCBBUk12NCAgICAg ICAgIGFybXY0IG5vdG0KK2RlZmluZSBmZ3JvdXAgQVJNdjR0ICAgICAgICBB Uk12NCB0aHVtYgorZGVmaW5lIGZncm91cCBBUk12NXQgICAgICAgIEFSTXY0 dCBhcm12NXQKK2RlZmluZSBmZ3JvdXAgQVJNdjV0ZSAgICAgICBBUk12NXQg YXJtdjV0ZQorZGVmaW5lIGZncm91cCBBUk12NXRlaiAgICAgIEFSTXY1dGUK K2RlZmluZSBmZ3JvdXAgQVJNdjYgICAgICAgICBBUk12NXRlIGFybXY2IGJl OAorZGVmaW5lIGZncm91cCBBUk12NmogICAgICAgIEFSTXY2CitkZWZpbmUg Zmdyb3VwIEFSTXY2ayAgICAgICAgQVJNdjYgYXJtdjZrCitkZWZpbmUgZmdy b3VwIEFSTXY2eiAgICAgICAgQVJNdjYKK2RlZmluZSBmZ3JvdXAgQVJNdjZr eiAgICAgICBBUk12NmsgcXVpcmtfYXJtdjZregorZGVmaW5lIGZncm91cCBB Uk12NnprICAgICAgIEFSTXY2aworZGVmaW5lIGZncm91cCBBUk12NnQyICAg ICAgIEFSTXY2IHRodW1iMgogIyBUaGlzIGlzIHN1c3BlY3QuICBBUk12Ni1t IGRvZXNuJ3QgcmVhbGx5IHB1bGwgaW4gYW55IHVzZWZ1bCBmZWF0dXJlcwog IyBmcm9tIEFSTXY1KiBvciBBUk12Ni4KLWRlZmluZSBmZ3JvdXAgQVJNdjZt ICAgICAgYXJtdjQgdGh1bWIgYXJtdjV0IGFybXY1dGUgYXJtdjYgYmU4Citk ZWZpbmUgZmdyb3VwIEFSTXY2bSAgICAgICAgYXJtdjQgdGh1bWIgYXJtdjV0 IGFybXY1dGUgYXJtdjYgYmU4CiAjIFRoaXMgaXMgc3VzcGVjdCwgdGhlICdj b21tb24nIEFSTXY3IHN1YnNldCBleGNsdWRlcyB0aGUgdGh1bWIyICdEU1An IGFuZAogIyBpbnRlZ2VyIFNJTUQgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGlu IEFSTXY2VDIuICAqLwogZGVmaW5lIGZncm91cCBBUk12NyAgICAgICBBUk12 Nm0gdGh1bWIyIGFybXY3CkBAIC0yNTYsNiArMjU5LDEwIEBAIGRlZmluZSBm Z3JvdXAgQVJNdjhfNWEgICAgQVJNdjhfNGEgYXJtdjhfNSBzYiBwcmVkcmVz CiBkZWZpbmUgZmdyb3VwIEFSTXY4bV9iYXNlIEFSTXY2bSBhcm12OCBjbXNl IHRkaXYKIGRlZmluZSBmZ3JvdXAgQVJNdjhtX21haW4gQVJNdjdtIGFybXY4 IGNtc2UKIGRlZmluZSBmZ3JvdXAgQVJNdjhyICAgICAgQVJNdjhhCisjIEZl YXR1cmUgY21zZSBpcyBvbWl0dGVkIHRvIGRpc2FibGUgU2VjdXJpdHkgRXh0 ZW5zaW9ucyBzdXBwb3J0IHdoaWxlIHNlY3VyZQorIyBjb2RlIGNvbXBpbGVk IGJ5IEdDQyBkb2VzIG5vdCBwcmVzZXJ2ZSBGUCBjb250ZXh0IGFzIGFsbG93 ZWQgYnkgQXJtdjguMS1NCisjIE1haW5saW5lLgorZGVmaW5lIGZncm91cCBB Uk12OF8xbV9tYWluIEFSTXY3bSBhcm12OCBhcm12OF8xbV9tYWluCiAKICMg VXNlZnVsIGNvbWJpbmF0aW9ucy4KIGRlZmluZSBmZ3JvdXAgVkZQdjIJdmZw djIKQEAgLTY0NCw2ICs2NTEsMTcgQEAgYmVnaW4gYXJjaCBhcm12OC1yCiAg b3B0aW9uIG5vZnAgcmVtb3ZlIEFMTF9GUAogZW5kIGFyY2ggYXJtdjgtcgog CitiZWdpbiBhcmNoIGFybXY4LjEtbS5tYWluCisgdHVuZSBmb3IgY29ydGV4 LW03CisgdHVuZSBmbGFncyBDT19QUk9DCisgYmFzZSA4TV9NQUlOCisgaXNh IEFSTXY4XzFtX21haW4KKyMgZnAgPT4gRlB2NS1zcC1kMTY7IGZwLmRwID0+ IEZQdjUtZDE2Cisgb3B0aW9uIGZwIGFkZCBGUHY1IGZwMTYKKyBvcHRpb24g ZnAuZHAgYWRkIEZQdjUgRlBfREJMIGZwMTYKKyBvcHRpb24gbm9mcCByZW1v dmUgQUxMX0ZQCitlbmQgYXJjaCBhcm12OC4xLW0ubWFpbgorCiBiZWdpbiBh cmNoIGl3bW14dAogIHR1bmUgZm9yIGl3bW14dAogIHR1bmUgZmxhZ3MgTERT Q0hFRCBTVFJPTkcgWFNDQUxFCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2Fy bS9hcm0tdGFibGVzLm9wdCBiL2djYy9jb25maWcvYXJtL2FybS10YWJsZXMu b3B0CmluZGV4IGFlYjViM2ZiZjYyOWU1Y2ZhZTRkNWY2ZDRkNWYxYTljNzc1 MmE1MTEuLmQwNTk5Njk5MDRjYjM5ZmJlNTgzNDg3ZTRmYmIyM2Q0Zjk4Mzg3 MTggMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYXJtL2FybS10YWJsZXMub3B0 CisrKyBiL2djYy9jb25maWcvYXJtL2FybS10YWJsZXMub3B0CkBAIC0zNTMs MTAgKzM1MywxMyBAQCBFbnVtVmFsdWUKIEVudW0oYXJtX2FyY2gpIFN0cmlu Zyhhcm12OC1yKSBWYWx1ZSgyOCkKIAogRW51bVZhbHVlCi1FbnVtKGFybV9h cmNoKSBTdHJpbmcoaXdtbXh0KSBWYWx1ZSgyOSkKK0VudW0oYXJtX2FyY2gp IFN0cmluZyhhcm12OC4xLW0ubWFpbikgVmFsdWUoMjkpCiAKIEVudW1WYWx1 ZQotRW51bShhcm1fYXJjaCkgU3RyaW5nKGl3bW14dDIpIFZhbHVlKDMwKQor RW51bShhcm1fYXJjaCkgU3RyaW5nKGl3bW14dCkgVmFsdWUoMzApCisKK0Vu dW1WYWx1ZQorRW51bShhcm1fYXJjaCkgU3RyaW5nKGl3bW14dDIpIFZhbHVl KDMxKQogCiBFbnVtCiBOYW1lKGFybV9mcHUpIFR5cGUoZW51bSBmcHVfdHlw ZSkKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS5oIGIvZ2NjL2Nv bmZpZy9hcm0vYXJtLmgKaW5kZXggOGI2N2M5YzM2NTdiMzEyYmUyMjNhYjYw YzAxOTY5OTU4YmFhOWVkMy4uMzA3ZjFiNTliYTQ0NTZjOTAxYzhjYjg0MmQ5 OTYxYTc0MGI2YmI4ZCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJt LmgKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmgKQEAgLTQ1Niw2ICs0NTYs MTAgQEAgZXh0ZXJuIGludCBhcm1fYXJjaDhfMzsKIC8qIE5vbnplcm8gaWYg dGhpcyBjaGlwIHN1cHBvcnRzIHRoZSBBUk0gQXJjaGl0ZWN0dXJlIDguNCBl eHRlbnNpb25zLiAgKi8KIGV4dGVybiBpbnQgYXJtX2FyY2g4XzQ7CiAKKy8q IE5vbnplcm8gaWYgdGhpcyBjaGlwIHN1cHBvcnRzIHRoZSBBUk0gQXJjaGl0 ZWN0dXJlIDguMS1NIE1haW5saW5lCisgICBleHRlbnNpb25zLiAgKi8KK2V4 dGVybiBpbnQgYXJtX2FyY2g4XzFtX21haW47CisKIC8qIE5vbnplcm8gaWYg dGhpcyBjaGlwIHN1cHBvcnRzIHRoZSBGUDE2IGluc3RydWN0aW9ucyBleHRl bnNpb24gb2YgQVJNCiAgICBBcmNoaXRlY3R1cmUgOC4yLiAgKi8KIGV4dGVy biBpbnQgYXJtX2ZwMTZfaW5zdDsKZGlmZiAtLWdpdCBhL2djYy9jb25maWcv YXJtL2FybS5jIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKaW5kZXggOWYwOTc1 ZGMwNzEwNjI2ZWY0NmFiZWNhYTNhMjA1ZTk5MzgyMTExOC4uOWFjYTk0ODRh OWNkYzI2ZDZhZmVlMjVlODFmMDZiNDA0N2RmMjE3NCAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9hcm0vYXJtLmMKKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJt LmMKQEAgLTkwMyw2ICs5MDMsOSBAQCBpbnQgYXJtX2FyY2g4XzMgPSAwOwog CiAvKiBOb256ZXJvIGlmIHRoaXMgY2hpcCBzdXBwb3J0cyB0aGUgQVJNIEFy Y2hpdGVjdHVyZSA4LjQgZXh0ZW5zaW9ucy4gICovCiBpbnQgYXJtX2FyY2g4 XzQgPSAwOworLyogTm9uemVybyBpZiB0aGlzIGNoaXAgc3VwcG9ydHMgdGhl IEFSTSBBcmNoaXRlY3R1cmUgOC4xLU0gTWFpbmxpbmUKKyAgIGV4dGVuc2lv bnMuICAqLworaW50IGFybV9hcmNoOF8xbV9tYWluID0gMDsKIAogLyogTm9u emVybyBpZiB0aGlzIGNoaXAgc3VwcG9ydHMgdGhlIEZQMTYgaW5zdHJ1Y3Rp b25zIGV4dGVuc2lvbiBvZiBBUk0KICAgIEFyY2hpdGVjdHVyZSA4LjIuICAq LwpAQCAtMzY0Miw2ICszNjQ1LDggQEAgYXJtX29wdGlvbl9yZWNvbmZpZ3Vy ZV9nbG9iYWxzICh2b2lkKQogICBhcm1fYXJjaDhfMiA9IGJpdG1hcF9iaXRf cCAoYXJtX2FjdGl2ZV90YXJnZXQuaXNhLCBpc2FfYml0X2FybXY4XzIpOwog ICBhcm1fYXJjaDhfMyA9IGJpdG1hcF9iaXRfcCAoYXJtX2FjdGl2ZV90YXJn ZXQuaXNhLCBpc2FfYml0X2FybXY4XzMpOwogICBhcm1fYXJjaDhfNCA9IGJp dG1hcF9iaXRfcCAoYXJtX2FjdGl2ZV90YXJnZXQuaXNhLCBpc2FfYml0X2Fy bXY4XzQpOworICBhcm1fYXJjaDhfMW1fbWFpbiA9IGJpdG1hcF9iaXRfcCAo YXJtX2FjdGl2ZV90YXJnZXQuaXNhLAorCQkJCSAgICBpc2FfYml0X2FybXY4 XzFtX21haW4pOwogICBhcm1fYXJjaF90aHVtYjEgPSBiaXRtYXBfYml0X3Ag KGFybV9hY3RpdmVfdGFyZ2V0LmlzYSwgaXNhX2JpdF90aHVtYik7CiAgIGFy bV9hcmNoX3RodW1iMiA9IGJpdG1hcF9iaXRfcCAoYXJtX2FjdGl2ZV90YXJn ZXQuaXNhLCBpc2FfYml0X3RodW1iMik7CiAgIGFybV9hcmNoX3hzY2FsZSA9 IGJpdG1hcF9iaXRfcCAoYXJtX2FjdGl2ZV90YXJnZXQuaXNhLCBpc2FfYml0 X3hzY2FsZSk7CkBAIC0zNzI3LDYgKzM3MzIsOSBAQCBhcm1fb3B0aW9uc19w ZXJmb3JtX2FyY2hfc2FuaXR5X2NoZWNrcyAodm9pZCkKICAgaWYgKCFhcm1f YXJjaDQgJiYgYXJtX2ZwMTZfZm9ybWF0ICE9IEFSTV9GUDE2X0ZPUk1BVF9O T05FKQogICAgIHNvcnJ5ICgiX19mcDE2IGFuZCBubyBsZHJoIik7CiAKKyAg aWYgKHVzZV9jbXNlICYmIGFybV9hcmNoOF8xbV9tYWluKQorICAgIGVycm9y ICgiQVJNdjguMS1NIE1haW5saW5lIFNlY3VyaXR5IEV4dGVuc2lvbnMgYXJl IHVuc3VwcG9ydGVkIik7CisKICAgaWYgKHVzZV9jbXNlICYmICFhcm1fYXJj aF9jbXNlKQogICAgIGVycm9yICgidGFyZ2V0IENQVSBkb2VzIG5vdCBzdXBw b3J0IEFSTXY4LU0gU2VjdXJpdHkgRXh0ZW5zaW9ucyIpOwogCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQtc3VwcG9ydHMuZXhwIGIv Z2NjL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LXN1cHBvcnRzLmV4cAppbmRleCA2 YTFhYWNhOTY5MWI3ZmU5YWU1ZTBlNWIxODc0YzdhZjM0YTNhNmUzLi41Njg4 YWE3YTZiN2U4ZGFkMjhhYTU1Mzc1NWI2NTc0NjQwNzFhOTgyIDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2xpYi90YXJnZXQtc3VwcG9ydHMuZXhwCisr KyBiL2djYy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHAKQEAg LTQyNDIsMTAgKzQyNDIsMTEgQEAgZm9yZWFjaCB7IGFybWZ1bmMgYXJtZmxh ZyBhcm1kZWZzIH0gewogCXY4YSAiLW1hcmNoPWFybXY4LWEiIF9fQVJNX0FS Q0hfOEFfXwogCXY4XzFhICItbWFyY2g9YXJtdjguMS1hIiBfX0FSTV9BUkNI XzhBX18KIAl2OF8yYSAiLW1hcmNoPWFybXY4LjItYSIgX19BUk1fQVJDSF84 QV9fCisJdjhyICItbWFyY2g9YXJtdjgtciIgX19BUk1fQVJDSF84Ul9fCiAJ djhtX2Jhc2UgIi1tYXJjaD1hcm12OC1tLmJhc2UgLW10aHVtYiAtbWZsb2F0 LWFiaT1zb2Z0IgogCQlfX0FSTV9BUkNIXzhNX0JBU0VfXwogCXY4bV9tYWlu ICItbWFyY2g9YXJtdjgtbS5tYWluIC1tdGh1bWIiIF9fQVJNX0FSQ0hfOE1f TUFJTl9fCi0JdjhyICItbWFyY2g9YXJtdjgtciIgX19BUk1fQVJDSF84Ul9f IH0geworCXY4XzFtX21haW4gIi1tYXJjaD1hcm12OC4xLW0ubWFpbiAtbXRo dW1iIiBfX0FSTV9BUkNIXzhNX01BSU5fXyB9IHsKICAgICBldmFsIFtzdHJp bmcgbWFwIFtsaXN0IEZVTkMgJGFybWZ1bmMgRkxBRyAkYXJtZmxhZyBERUZT ICRhcm1kZWZzIF0gewogCXByb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9h cm1fYXJjaF9GVU5DX29rIHsgfSB7CiAJICAgIHJldHVybiBbY2hlY2tfbm9f Y29tcGlsZXJfbWVzc2FnZXMgYXJtX2FyY2hfRlVOQ19vayBhc3NlbWJseSB7 Cgo= --===============5455046248308794988==--