From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2079.outbound.protection.outlook.com [40.107.22.79]) by sourceware.org (Postfix) with ESMTPS id 6FD21384B0C0 for ; Tue, 21 Jul 2020 15:18:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 6FD21384B0C0 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Matthew.Malcomson@arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KVO/EIWCo256QVZrG8VlME2CISWowk5ogDP+uV9VrUs=; b=TetyDGUPppKCcAs/9IA7N3do62NDc/F1S7QCnuBOiVJY+j9D2TpBV213Lmsm30MpRPV4/18YD7x05ocMKVgD+PCpErw27xqx0DhbC7jy9fLtpJPnGeRTJ5odkmEcOhpTYjla6liXwR40kgKWMm9D7NP9yJI1t4bu2B8J0l+odeo= Received: from DB6PR0202CA0038.eurprd02.prod.outlook.com (2603:10a6:4:a5::24) by AM6PR08MB4424.eurprd08.prod.outlook.com (2603:10a6:20b:73::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.23; Tue, 21 Jul 2020 15:18:14 +0000 Received: from DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:a5:cafe::d0) by DB6PR0202CA0038.outlook.office365.com (2603:10a6:4:a5::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.20 via Frontend Transport; Tue, 21 Jul 2020 15:18:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT017.mail.protection.outlook.com (10.152.20.114) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.18 via Frontend Transport; Tue, 21 Jul 2020 15:18:14 +0000 Received: ("Tessian outbound 8f45de5545d6:v62"); Tue, 21 Jul 2020 15:18:14 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 43fb04563f669545 X-CR-MTA-TID: 64aa7808 Received: from 5724c0939b31.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id C0171484-D122-4B6E-9673-F864BAE1158A.1; Tue, 21 Jul 2020 15:18:07 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 5724c0939b31.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 21 Jul 2020 15:18:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=drWnaEs4jiPk/bzUnZ5gEqNjocOp6DwwPiNHGc1ReIlEvWJO13nws1BlLUYm/Td4KMU8umOeY3hnxPhfKyuB/oUs/xQ0RLHsOuPVYxJzucCQwO2vKEuDh+EQHSYxdYXTFfVSDTQyD/7eYg0rgFPM+eS15YPYDvwgaZCU0a1LIcslN6eVHfKsGi8lb4MoBVUHNP4VZeITx6ZV42Xr2xK5CUMVhL1kq17hrKWL4/RvXRUMppn6orlakeXMHRXFczEPtmVVvOZnnI7k52BNaBoW+FRjGDqmGtGG9NJnDD6E3J4QHNW3/tM4Qb+ixPdxEmqFwQ9tlM+/m2N/YohCPReUPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KVO/EIWCo256QVZrG8VlME2CISWowk5ogDP+uV9VrUs=; b=bQJM7aNntndqdtzjLD0dCQ+pW1EUzC5i1IRIgnyY8N+fNamPULTG67S6nJ4KzpGRMjtORY/VI1ziuWKSLQL406uDjktU2nfMRsiAu1nTFqYq807r22lJ4bdfN/BlJ/Jeq6HinBWOcbMMUMU/MJbwvgXyH31XeLNYwh7IshfMIVa0AL95GVpJGqj2kJQ22PyfNJVAvTIA9Srn28t748TrJwgDm6NiQ15Z7x2ZHuk99z4Zby/47/VcvgEGJNJdUv7oHYtsWpYqCby68n3emnBIpRGHdOK1m62KoUHWtkecAgr0Cd8M08xJFQPxkh0BGIETCnUQRS/m209kn4Xf+fKnZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KVO/EIWCo256QVZrG8VlME2CISWowk5ogDP+uV9VrUs=; b=TetyDGUPppKCcAs/9IA7N3do62NDc/F1S7QCnuBOiVJY+j9D2TpBV213Lmsm30MpRPV4/18YD7x05ocMKVgD+PCpErw27xqx0DhbC7jy9fLtpJPnGeRTJ5odkmEcOhpTYjla6liXwR40kgKWMm9D7NP9yJI1t4bu2B8J0l+odeo= Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; Received: from AM6PR08MB3157.eurprd08.prod.outlook.com (2603:10a6:209:48::24) by AM6PR08MB3288.eurprd08.prod.outlook.com (2603:10a6:209:47::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.23; Tue, 21 Jul 2020 15:18:06 +0000 Received: from AM6PR08MB3157.eurprd08.prod.outlook.com ([fe80::5f9:be56:311a:c1dd]) by AM6PR08MB3157.eurprd08.prod.outlook.com ([fe80::5f9:be56:311a:c1dd%3]) with mapi id 15.20.3195.026; Tue, 21 Jul 2020 15:18:06 +0000 Content-Type: multipart/mixed; boundary="===============5432331164008848153==" From: Matthew Malcomson Date: Tue, 21 Jul 2020 16:15:34 +0100 To: gcc-patches@gcc.gnu.org Cc: Richard.Earnshaw@arm.com, Kyrylo.Tkachov@arm.com, Ross Burton Subject: aarch64: (GCC-9 Backport) New Straight Line Speculation (SLS) mitigation flags In-Reply-To: <159534453451.25601.18119761260522884038.scripted-patch-series@arm.com> References: <159534453451.25601.18119761260522884038.scripted-patch-series@arm.com> X-ClientProxiedBy: LO2P123CA0018.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::30) To AM6PR08MB3157.eurprd08.prod.outlook.com (2603:10a6:209:48::24) Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from e120487-lin.cambridge.arm.com (217.140.106.52) by LO2P123CA0018.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:a6::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.26 via Frontend Transport; Tue, 21 Jul 2020 15:18:06 +0000 X-Originating-IP: [217.140.106.52] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 86f7a2dc-07dc-4383-9051-08d82d894995 X-MS-TrafficTypeDiagnostic: AM6PR08MB3288:|AM6PR08MB4424: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:454;OLM:454; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: wGqqb6zDoKUzDlEJjW0wC8YuMRnEj/cewg077UIlBBHS1PXh83RKfhAVWYEyRhhs9mJ8+6DMv+FBsODxzKW1ltVXt8F+qqzzM3R+mAYmPbHdfnMEBAf7JDvStMJmqYusYDGI8Ef3yURTmNpDFGwenP3Sk90IGdM66VE0iNvCz/oBL6MXDyx57HtkM8V08aHPqD4+S1IQwINrUiLhomhO3I8kOojNOg9w3kXVBkk30ZtHWuoXZGnDMoPCQMTljRX44cj/fips00RXqtxzNPDyzCc+w1Drf61adCJof6aHRBROpBLm3OuC5qh2+g9lTmefNSvCOjyjoFfdSSZu7NlL3w== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB3157.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(136003)(396003)(346002)(39860400002)(376002)(366004)(186003)(44832011)(235185007)(52116002)(33964004)(2906002)(5660300002)(956004)(86362001)(8936002)(66476007)(6666004)(66556008)(66946007)(6486002)(8676002)(16526019)(26005)(52536014)(6512007)(9686003)(66616009)(478600001)(33656002)(6916009)(83380400001)(4326008)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: UxliqLOjKKe/sMsOv4KiIkp5dTJQcRViAB3D25R0hSAaPbbKc+/ly2pzLWrFHSQnHkyf3kIdQdYpgK2Ae7gZ40zJO5oGqE0cIr6OLn0IHhTpac5qzHLoneiecvILQ1+hzjyZHklGkpNVBoKl+rk7LOKeqcfF/Thk4lmnbJ1j2n7q/nj709lE78sHGA4bZwyi5RAkGCJo1ZfVz44Nj7aqkgG26shlYKQmk1XHSssHmnrYfhURd0e2SBDl6xFIzkqMDuAEMS6hInm7sZo2gKJ82ORExAq1nlLt8Pac8hHyWlsaY+0RjZX+x3AQE/g+Z+ttM33IIgzhjdroZuW4LX5QA/8TQMuuoFhsgo/mxnnhi9Vg52OmkjmKzEUYu6ju5U5qOGG8nk0T13sr4CaP+aDCtNrmpNmx+L6qT2L4bbrDoQOEHMDi3ArgaeiDiShePBk+YBO+86fSkdTHZ2O/U7QKx7t3x8/6RT9fY8nYNtVGdKg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB3288 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:; SFS:(4636009)(136003)(39860400002)(376002)(346002)(396003)(46966005)(6916009)(70206006)(5660300002)(66616009)(82310400002)(235185007)(356005)(8936002)(316002)(9686003)(6512007)(83380400001)(81166007)(8676002)(2906002)(70586007)(478600001)(4326008)(52536014)(33964004)(33656002)(6666004)(86362001)(186003)(26005)(16526019)(44832011)(956004)(336012)(82740400003)(6486002)(47076004); DIR:OUT; SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: ba8a5b9f-6f73-4e11-f1b0-08d82d8944e6 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JMHxmAfkm+PbhD7HWQCtBxUug2a5TK1moUtGeV2grbc6iqzqWb3MUrRQSfa80BBt7vlmKndF3fJPyObe0rwWchJT9yS2DiMOuF+rrm7i8LUys+dDZ3pcnBhi+3AG+PGPVaJxqo6VE1Dq8KRqZxqb0JiNV8sjPQSpBZpVCWSusqCK/kzJpO+n6CC5eF1hUYsyITKb6NG4AGy6IilfstlhegHeBo6HmgU2VsecYpd0yLyB3Gmsvw0ipiz2OhhzbTitowaTAuKyS8aa2aiOhRtdTjpa6M6NWg8zIYOeS0DGG9Pi3JykTOGZc2tsz9OzIP9VpM7h1fVRCVUlrtofGnzXA+0ZxDec3IEsKClAwHerFDJcLf4sHDZ9mTcegzedNWQ3IaX+AQfoHSfKAc6zGybahA== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2020 15:18:14.1153 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 86f7a2dc-07dc-4383-9051-08d82d894995 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT017.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4424 X-Spam-Status: No, score=-16.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY 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, 21 Jul 2020 15:18:19 -0000 --===============5432331164008848153== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Here we introduce the flags that will be used for straight line speculation. The new flag introduced is `-mharden-sls=`. This flag can take arguments of `none`, `all`, or a comma seperated list of one or more of `retbr` or `blr`. `none` indicates no special mitigation of the straight line speculation vulnerability. `all` requests all mitigations currently implemented. `retbr` requests that the RET and BR instructions have a speculation barrier inserted after them. `blr` requests that BLR instructions are replaced by a BL to a function stub using a BR with a speculation barrier after it. Setting this on a per-function basis using attributes or the like is not enabled, but may be in the future. gcc/ChangeLog: * config/aarch64/aarch64-protos.h (aarch64_harden_sls_retbr_p): New. (aarch64_harden_sls_blr_p): New. * config/aarch64/aarch64.c (enum aarch64_sls_hardening_type): New. (aarch64_harden_sls_retbr_p): New. (aarch64_harden_sls_blr_p): New. (aarch64_validate_sls_mitigation): New. (aarch64_override_options): Parse options for SLS mitigation. * config/aarch64/aarch64.opt (-mharden-sls): New option. * doc/invoke.texi: Document new option. (cherry picked from commit a9ba2a9b77bec7eacaf066801f22d1c366a2bc86) ############### Attachment also inlined for ease of reply ############### diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index af2a17f0bf3b50a306b14d8c0aa431269f54ef2e..db5a6a3a1813abbbeeaaa7009466ac58595e12bc 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -658,4 +658,7 @@ extern const atomic_ool_names aarch64_ool_ldset_names; extern const atomic_ool_names aarch64_ool_ldclr_names; extern const atomic_ool_names aarch64_ool_ldeor_names; +extern bool aarch64_harden_sls_retbr_p (void); +extern bool aarch64_harden_sls_blr_p (void); + #endif /* GCC_AARCH64_PROTOS_H */ diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 1b6e67ccd53da05c88b13cac8b524ba2b8cfe43f..0903370b6128e19016f97cb6b0fd44e6b51e569e 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -11791,6 +11791,79 @@ aarch64_validate_mcpu (const char *str, const struct processor **res, return false; } +/* Straight line speculation indicators. */ +enum aarch64_sls_hardening_type +{ + SLS_NONE = 0, + SLS_RETBR = 1, + SLS_BLR = 2, + SLS_ALL = 3, +}; +static enum aarch64_sls_hardening_type aarch64_sls_hardening; + +/* Return whether we should mitigatate Straight Line Speculation for the RET + and BR instructions. */ +bool +aarch64_harden_sls_retbr_p (void) +{ + return aarch64_sls_hardening & SLS_RETBR; +} + +/* Return whether we should mitigatate Straight Line Speculation for the BLR + instruction. */ +bool +aarch64_harden_sls_blr_p (void) +{ + return aarch64_sls_hardening & SLS_BLR; +} + +/* As of yet we only allow setting these options globally, in the future we may + allow setting them per function. */ +static void +aarch64_validate_sls_mitigation (const char *const_str) +{ + char *token_save = NULL; + char *str = NULL; + + if (strcmp (const_str, "none") == 0) + { + aarch64_sls_hardening = SLS_NONE; + return; + } + if (strcmp (const_str, "all") == 0) + { + aarch64_sls_hardening = SLS_ALL; + return; + } + + char *str_root = xstrdup (const_str); + str = strtok_r (str_root, ",", &token_save); + if (!str) + error ("invalid argument given to %<-mharden-sls=%>"); + + int temp = SLS_NONE; + while (str) + { + if (strcmp (str, "blr") == 0) + temp |= SLS_BLR; + else if (strcmp (str, "retbr") == 0) + temp |= SLS_RETBR; + else if (strcmp (str, "none") == 0 || strcmp (str, "all") == 0) + { + error ("%<%s%> must be by itself for %<-mharden-sls=%>", str); + break; + } + else + { + error ("invalid argument %<%s%> for %<-mharden-sls=%>", str); + break; + } + str = strtok_r (NULL, ",", &token_save); + } + aarch64_sls_hardening = (aarch64_sls_hardening_type) temp; + free (str_root); +} + /* Parses CONST_STR for branch protection features specified in aarch64_branch_protect_types, and set any global variables required. Returns the parsing result and assigns LAST_STR to the last processed token from @@ -12029,6 +12102,9 @@ aarch64_override_options (void) selected_arch = NULL; selected_tune = NULL; + if (aarch64_harden_sls_string) + aarch64_validate_sls_mitigation (aarch64_harden_sls_string); + if (aarch64_branch_protection_string) aarch64_validate_mbranch_protection (aarch64_branch_protection_string); diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt index f474a28eb9234cf87b22492c4396d5a31857cd39..4beb2d3d243c4ca36e7604c02ab5d9e80955f55a 100644 --- a/gcc/config/aarch64/aarch64.opt +++ b/gcc/config/aarch64/aarch64.opt @@ -71,6 +71,10 @@ mgeneral-regs-only Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save Generate code which uses only the general registers. +mharden-sls= +Target RejectNegative Joined Var(aarch64_harden_sls_string) +Generate code to mitigate against straight line speculation. + mfix-cortex-a53-835769 Target Report Var(aarch64_fix_a53_err835769) Init(2) Save Workaround for ARM Cortex-A53 Erratum number 835769. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 0f3f093a80d5084474203ccdae986b4eca2e122b..1612ee75ce34b288ecdeb35be41b79a8bc77f845 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -634,6 +634,7 @@ Objective-C and Objective-C++ Dialects}. -mpc-relative-literal-loads @gol -msign-return-address=@var{scope} @gol -mbranch-protection=@var{none}|@var{standard}|@var{pac-ret}[+@var{leaf}]|@var{bti} @gol +-mharden-sls=@var{opts} @gol -march=@var{name} -mcpu=@var{name} -mtune=@var{name} @gol -moverride=@var{string} -mverbose-cost-dump @gol -mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{sysreg} @gol @@ -15940,6 +15941,17 @@ argument @samp{leaf} can be used to extend the signing to include leaf functions. @samp{bti} turns on branch target identification mechanism. +@item -mharden-sls=@var{opts} +@opindex mharden-sls +Enable compiler hardening against straight line speculation (SLS). +@var{opts} is a comma-separated list of the following options: +@table @samp +@item retbr +@item blr +@end table +In addition, @samp{-mharden-sls=all} enables all SLS hardening while +@samp{-mharden-sls=none} disables all SLS hardening. + @item -msve-vector-bits=@var{bits} @opindex msve-vector-bits Specify the number of bits in an SVE vector register. This option only has --===============5432331164008848153== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sls-backport-gcc90.patch" ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXByb3Rvcy5oIGIvZ2NjL2Nv bmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKaW5kZXggYWYyYTE3ZjBiZjNiNTBhMzA2YjE0 ZDhjMGFhNDMxMjY5ZjU0ZWYyZS4uZGI1YTZhM2ExODEzYWJiYmVlYWFhNzAwOTQ2NmFjNTg1OTVl MTJiYyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKKysr IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtcHJvdG9zLmgKQEAgLTY1OCw0ICs2NTgsNyBA QCBleHRlcm4gY29uc3QgYXRvbWljX29vbF9uYW1lcyBhYXJjaDY0X29vbF9sZHNldF9uYW1lczsK IGV4dGVybiBjb25zdCBhdG9taWNfb29sX25hbWVzIGFhcmNoNjRfb29sX2xkY2xyX25hbWVzOwog ZXh0ZXJuIGNvbnN0IGF0b21pY19vb2xfbmFtZXMgYWFyY2g2NF9vb2xfbGRlb3JfbmFtZXM7CiAK K2V4dGVybiBib29sIGFhcmNoNjRfaGFyZGVuX3Nsc19yZXRicl9wICh2b2lkKTsKK2V4dGVybiBi b29sIGFhcmNoNjRfaGFyZGVuX3Nsc19ibHJfcCAodm9pZCk7CisKICNlbmRpZiAvKiBHQ0NfQUFS Q0g2NF9QUk9UT1NfSCAqLwpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQu YyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LmMKaW5kZXggMWI2ZTY3Y2NkNTNkYTA1Yzg4 YjEzY2FjOGI1MjRiYTJiOGNmZTQzZi4uMDkwMzM3MGI2MTI4ZTE5MDE2Zjk3Y2I2YjBmZDQ0ZTZi NTFlNTY5ZSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQuYworKysgYi9n Y2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5jCkBAIC0xMTc5MSw2ICsxMTc5MSw3OSBAQCBhYXJj aDY0X3ZhbGlkYXRlX21jcHUgKGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IHByb2Nlc3Nv ciAqKnJlcywKICAgcmV0dXJuIGZhbHNlOwogfQogCisvKiBTdHJhaWdodCBsaW5lIHNwZWN1bGF0 aW9uIGluZGljYXRvcnMuICAqLworZW51bSBhYXJjaDY0X3Nsc19oYXJkZW5pbmdfdHlwZQorewor ICBTTFNfTk9ORSA9IDAsCisgIFNMU19SRVRCUiA9IDEsCisgIFNMU19CTFIgPSAyLAorICBTTFNf QUxMID0gMywKK307CitzdGF0aWMgZW51bSBhYXJjaDY0X3Nsc19oYXJkZW5pbmdfdHlwZSBhYXJj aDY0X3Nsc19oYXJkZW5pbmc7CisKKy8qIFJldHVybiB3aGV0aGVyIHdlIHNob3VsZCBtaXRpZ2F0 YXRlIFN0cmFpZ2h0IExpbmUgU3BlY3VsYXRpb24gZm9yIHRoZSBSRVQKKyAgIGFuZCBCUiBpbnN0 cnVjdGlvbnMuICAqLworYm9vbAorYWFyY2g2NF9oYXJkZW5fc2xzX3JldGJyX3AgKHZvaWQpCit7 CisgIHJldHVybiBhYXJjaDY0X3Nsc19oYXJkZW5pbmcgJiBTTFNfUkVUQlI7Cit9CisKKy8qIFJl dHVybiB3aGV0aGVyIHdlIHNob3VsZCBtaXRpZ2F0YXRlIFN0cmFpZ2h0IExpbmUgU3BlY3VsYXRp b24gZm9yIHRoZSBCTFIKKyAgIGluc3RydWN0aW9uLiAgKi8KK2Jvb2wKK2FhcmNoNjRfaGFyZGVu X3Nsc19ibHJfcCAodm9pZCkKK3sKKyAgcmV0dXJuIGFhcmNoNjRfc2xzX2hhcmRlbmluZyAmIFNM U19CTFI7Cit9CisKKy8qIEFzIG9mIHlldCB3ZSBvbmx5IGFsbG93IHNldHRpbmcgdGhlc2Ugb3B0 aW9ucyBnbG9iYWxseSwgaW4gdGhlIGZ1dHVyZSB3ZSBtYXkKKyAgIGFsbG93IHNldHRpbmcgdGhl bSBwZXIgZnVuY3Rpb24uICAqLworc3RhdGljIHZvaWQKK2FhcmNoNjRfdmFsaWRhdGVfc2xzX21p dGlnYXRpb24gKGNvbnN0IGNoYXIgKmNvbnN0X3N0cikKK3sKKyAgY2hhciAqdG9rZW5fc2F2ZSA9 IE5VTEw7CisgIGNoYXIgKnN0ciA9IE5VTEw7CisKKyAgaWYgKHN0cmNtcCAoY29uc3Rfc3RyLCAi bm9uZSIpID09IDApCisgICAgeworICAgICAgYWFyY2g2NF9zbHNfaGFyZGVuaW5nID0gU0xTX05P TkU7CisgICAgICByZXR1cm47CisgICAgfQorICBpZiAoc3RyY21wIChjb25zdF9zdHIsICJhbGwi KSA9PSAwKQorICAgIHsKKyAgICAgIGFhcmNoNjRfc2xzX2hhcmRlbmluZyA9IFNMU19BTEw7Cisg ICAgICByZXR1cm47CisgICAgfQorCisgIGNoYXIgKnN0cl9yb290ID0geHN0cmR1cCAoY29uc3Rf c3RyKTsKKyAgc3RyID0gc3RydG9rX3IgKHN0cl9yb290LCAiLCIsICZ0b2tlbl9zYXZlKTsKKyAg aWYgKCFzdHIpCisgICAgZXJyb3IgKCJpbnZhbGlkIGFyZ3VtZW50IGdpdmVuIHRvICU8LW1oYXJk ZW4tc2xzPSU+Iik7CisKKyAgaW50IHRlbXAgPSBTTFNfTk9ORTsKKyAgd2hpbGUgKHN0cikKKyAg ICB7CisgICAgICBpZiAoc3RyY21wIChzdHIsICJibHIiKSA9PSAwKQorCXRlbXAgfD0gU0xTX0JM UjsKKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAoc3RyLCAicmV0YnIiKSA9PSAwKQorCXRlbXAgfD0g U0xTX1JFVEJSOworICAgICAgZWxzZSBpZiAoc3RyY21wIChzdHIsICJub25lIikgPT0gMCB8fCBz dHJjbXAgKHN0ciwgImFsbCIpID09IDApCisJeworCSAgZXJyb3IgKCIlPCVzJT4gbXVzdCBiZSBi eSBpdHNlbGYgZm9yICU8LW1oYXJkZW4tc2xzPSU+Iiwgc3RyKTsKKwkgIGJyZWFrOworCX0KKyAg ICAgIGVsc2UKKwl7CisJICBlcnJvciAoImludmFsaWQgYXJndW1lbnQgJTwlcyU+IGZvciAlPC1t aGFyZGVuLXNscz0lPiIsIHN0cik7CisJICBicmVhazsKKwl9CisgICAgICBzdHIgPSBzdHJ0b2tf ciAoTlVMTCwgIiwiLCAmdG9rZW5fc2F2ZSk7CisgICAgfQorICBhYXJjaDY0X3Nsc19oYXJkZW5p bmcgPSAoYWFyY2g2NF9zbHNfaGFyZGVuaW5nX3R5cGUpIHRlbXA7CisgIGZyZWUgKHN0cl9yb290 KTsKK30KKwogLyogUGFyc2VzIENPTlNUX1NUUiBmb3IgYnJhbmNoIHByb3RlY3Rpb24gZmVhdHVy ZXMgc3BlY2lmaWVkIGluCiAgICBhYXJjaDY0X2JyYW5jaF9wcm90ZWN0X3R5cGVzLCBhbmQgc2V0 IGFueSBnbG9iYWwgdmFyaWFibGVzIHJlcXVpcmVkLiAgUmV0dXJucwogICAgdGhlIHBhcnNpbmcg cmVzdWx0IGFuZCBhc3NpZ25zIExBU1RfU1RSIHRvIHRoZSBsYXN0IHByb2Nlc3NlZCB0b2tlbiBm cm9tCkBAIC0xMjAyOSw2ICsxMjEwMiw5IEBAIGFhcmNoNjRfb3ZlcnJpZGVfb3B0aW9ucyAodm9p ZCkKICAgc2VsZWN0ZWRfYXJjaCA9IE5VTEw7CiAgIHNlbGVjdGVkX3R1bmUgPSBOVUxMOwogCisg IGlmIChhYXJjaDY0X2hhcmRlbl9zbHNfc3RyaW5nKQorICAgIGFhcmNoNjRfdmFsaWRhdGVfc2xz X21pdGlnYXRpb24gKGFhcmNoNjRfaGFyZGVuX3Nsc19zdHJpbmcpOworCiAgIGlmIChhYXJjaDY0 X2JyYW5jaF9wcm90ZWN0aW9uX3N0cmluZykKICAgICBhYXJjaDY0X3ZhbGlkYXRlX21icmFuY2hf cHJvdGVjdGlvbiAoYWFyY2g2NF9icmFuY2hfcHJvdGVjdGlvbl9zdHJpbmcpOwogCmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC5vcHQgYi9nY2MvY29uZmlnL2FhcmNoNjQv YWFyY2g2NC5vcHQKaW5kZXggZjQ3NGEyOGViOTIzNGNmODdiMjI0OTJjNDM5NmQ1YTMxODU3Y2Qz OS4uNGJlYjJkM2QyNDNjNGNhMzZlNzYwNGMwMmFiNWQ5ZTgwOTU1ZjU1YSAxMDA2NDQKLS0tIGEv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQub3B0CisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9h YXJjaDY0Lm9wdApAQCAtNzEsNiArNzEsMTAgQEAgbWdlbmVyYWwtcmVncy1vbmx5CiBUYXJnZXQg UmVwb3J0IFJlamVjdE5lZ2F0aXZlIE1hc2soR0VORVJBTF9SRUdTX09OTFkpIFNhdmUKIEdlbmVy YXRlIGNvZGUgd2hpY2ggdXNlcyBvbmx5IHRoZSBnZW5lcmFsIHJlZ2lzdGVycy4KIAorbWhhcmRl bi1zbHM9CitUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkIFZhcihhYXJjaDY0X2hhcmRlbl9z bHNfc3RyaW5nKQorR2VuZXJhdGUgY29kZSB0byBtaXRpZ2F0ZSBhZ2FpbnN0IHN0cmFpZ2h0IGxp bmUgc3BlY3VsYXRpb24uCisKIG1maXgtY29ydGV4LWE1My04MzU3NjkKIFRhcmdldCBSZXBvcnQg VmFyKGFhcmNoNjRfZml4X2E1M19lcnI4MzU3NjkpIEluaXQoMikgU2F2ZQogV29ya2Fyb3VuZCBm b3IgQVJNIENvcnRleC1BNTMgRXJyYXR1bSBudW1iZXIgODM1NzY5LgpkaWZmIC0tZ2l0IGEvZ2Nj L2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKaW5kZXggMGYzZjA5M2E4MGQ1 MDg0NDc0MjAzY2NkYWU5ODZiNGVjYTJlMTIyYi4uMTYxMmVlNzVjZTM0YjI4OGVjZGViMzViZTQx Yjc5YThiYzc3Zjg0NSAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysgYi9nY2Mv ZG9jL2ludm9rZS50ZXhpCkBAIC02MzQsNiArNjM0LDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVj dGl2ZS1DKysgRGlhbGVjdHN9LgogLW1wYy1yZWxhdGl2ZS1saXRlcmFsLWxvYWRzIEBnb2wKIC1t c2lnbi1yZXR1cm4tYWRkcmVzcz1AdmFye3Njb3BlfSBAZ29sCiAtbWJyYW5jaC1wcm90ZWN0aW9u PUB2YXJ7bm9uZX18QHZhcntzdGFuZGFyZH18QHZhcntwYWMtcmV0fVsrQHZhcntsZWFmfV18QHZh cntidGl9IEBnb2wKKy1taGFyZGVuLXNscz1AdmFye29wdHN9IEBnb2wKIC1tYXJjaD1AdmFye25h bWV9ICAtbWNwdT1AdmFye25hbWV9ICAtbXR1bmU9QHZhcntuYW1lfSAgQGdvbAogLW1vdmVycmlk ZT1AdmFye3N0cmluZ30gIC1tdmVyYm9zZS1jb3N0LWR1bXAgQGdvbAogLW1zdGFjay1wcm90ZWN0 b3ItZ3VhcmQ9QHZhcntndWFyZH0gLW1zdGFjay1wcm90ZWN0b3ItZ3VhcmQtcmVnPUB2YXJ7c3lz cmVnfSBAZ29sCkBAIC0xNTk0MCw2ICsxNTk0MSwxNyBAQCBhcmd1bWVudCBAc2FtcHtsZWFmfSBj YW4gYmUgdXNlZCB0byBleHRlbmQgdGhlIHNpZ25pbmcgdG8gaW5jbHVkZSBsZWFmCiBmdW5jdGlv bnMuCiBAc2FtcHtidGl9IHR1cm5zIG9uIGJyYW5jaCB0YXJnZXQgaWRlbnRpZmljYXRpb24gbWVj aGFuaXNtLgogCitAaXRlbSAtbWhhcmRlbi1zbHM9QHZhcntvcHRzfQorQG9waW5kZXggbWhhcmRl bi1zbHMKK0VuYWJsZSBjb21waWxlciBoYXJkZW5pbmcgYWdhaW5zdCBzdHJhaWdodCBsaW5lIHNw ZWN1bGF0aW9uIChTTFMpLgorQHZhcntvcHRzfSBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m IHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKK0B0YWJsZSBAc2FtcAorQGl0ZW0gcmV0YnIKK0BpdGVt IGJscgorQGVuZCB0YWJsZQorSW4gYWRkaXRpb24sIEBzYW1wey1taGFyZGVuLXNscz1hbGx9IGVu YWJsZXMgYWxsIFNMUyBoYXJkZW5pbmcgd2hpbGUKK0BzYW1wey1taGFyZGVuLXNscz1ub25lfSBk aXNhYmxlcyBhbGwgU0xTIGhhcmRlbmluZy4KKwogQGl0ZW0gLW1zdmUtdmVjdG9yLWJpdHM9QHZh cntiaXRzfQogQG9waW5kZXggbXN2ZS12ZWN0b3ItYml0cwogU3BlY2lmeSB0aGUgbnVtYmVyIG9m IGJpdHMgaW4gYW4gU1ZFIHZlY3RvciByZWdpc3Rlci4gIFRoaXMgb3B0aW9uIG9ubHkgaGFzCgo= --===============5432331164008848153==--