From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2048.outbound.protection.outlook.com [40.107.20.48]) by sourceware.org (Postfix) with ESMTPS id 87D853857405 for ; Thu, 5 May 2022 11:07:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 87D853857405 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=V3inQwZ/VEoWIlqagNk4c80w7R8ocH+tCebpZv5zU0b1pcNxogTuZ0OFL5wWSs9b98DrxA/9cb/GUVtzCngvIdjgRux9BOtTDB4TZgYsUH7KkqjdA/UMNRXeiQQ2qc0heYorAyZqlmbPv+O5SFFZ//+KBhQ5NgqCLGiUvncfmGVd6HS9UQwE4u/pXIflzFvB2c5bEeqYlFfRSxjp1qleOuDHfjhSMw9R6HgslSRyPeBypK/eYnDsWIbp/Og1l6WUfYQSi00s8RLuasILE5Y5x5+6FYzoHKXF/769xjSrqjezgmyTGr7Smk/tR1BwiRiNaTGKtiBLYis3dtUoxA5Iqg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TGzyOUONtT1zzoikRYwBlQwdTSSOBkVhHD5eKhaiWjU=; b=dN8liwmct2l0WGTeC8kpcZXlQJ6FAb/QvXzMvuT3tO1FXwLtwUBf4eghNk5mrXplekgSx/Q/HUYS3IHdYfhYHj3wKQ1HDEreHFWsCi3BRMgJRIarfbgc8T3R2C7zVj69xQm7gCdEC28GATqPBq3KLs2BH3xtJv3U3NDHYMfLBb0nE8VoIByeyuecp86CUc2O4CgSfMdGFiQ+CQrBqDcbqhKbNuH9/fVnLabrgFQznScB88vtJyVwdb5I2rWaBdYZU9D+cr5h8fjlxb83M8P0nZ/AexO3PeiyEHTZpdkw6AS/7W9NJetPqfSZ17duH8CYmLSC7yY9sEEG9zZIrEjs1g== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1, 1, smtp.mailfrom=arm.com] dmarc=[1, 1, header.from=arm.com]) Received: from DU2PR04CA0327.eurprd04.prod.outlook.com (2603:10a6:10:2b5::32) by AM0PR08MB4148.eurprd08.prod.outlook.com (2603:10a6:208:131::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.12; Thu, 5 May 2022 11:07:35 +0000 Received: from DB5EUR03FT005.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2b5:cafe::c7) by DU2PR04CA0327.outlook.office365.com (2603:10a6:10:2b5::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.25 via Frontend Transport; Thu, 5 May 2022 11:07:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass 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 DB5EUR03FT005.mail.protection.outlook.com (10.152.20.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5227.15 via Frontend Transport; Thu, 5 May 2022 11:07:35 +0000 Received: ("Tessian outbound ac9bb5dd84f6:v118"); Thu, 05 May 2022 11:07:35 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 3f1f9d59afd4d64b X-CR-MTA-TID: 64aa7808 Received: from bae1dde80546.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B7F8DE37-DB43-455D-9144-801B4BB2ACAC.1; Thu, 05 May 2022 11:07:28 +0000 Received: from EUR03-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bae1dde80546.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 05 May 2022 11:07:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cebWYMWiXY0t9s/LE/CGxKnFbut4EOX1SZ9aEjwRoZkX0aBIqLdHUIPwzJxnYYL/fC1g/QLD9Se/2LS0oCUH9YZS0jAjfH0/CRvLoA5JJE+bT9Ul/XSwTiDfXxDc5qkRJuO9l62sT9ilsF5fyA3nthYJFpxb67LrdasSW2cSbwDnn246mEmNkn8ih7MceciCB2HaXurTStb7LMcFI0NHNq5wnJQyTjOkFvNXyNUBqFJAuWr+vA7pP+RQPZltG62wi+6+VLzjMkZzy3sudqa6yLpv/iF6wEape2WznQtZ7ddQwt888HsPBF+77DJnzwjMuhRJkdHOWVy6NtAs1wL7gg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=TGzyOUONtT1zzoikRYwBlQwdTSSOBkVhHD5eKhaiWjU=; b=T/2yUjjVRSIptPQdRzqId+RJxKvl95Tsz3qbjCqlNi2sMi4HdhdxAEGhUjSl+UhBI0VUvqKsr+4uquyGRiiB7H4T0CvDVFE+6egsAxmomvS6ThjWvvk/rvVLsI96wtkIc/59KYQm5bR3KHipKczxMFu6S6dwyYI9kMI6x6Z3+2SzAGHxshLa90DjuaB4xowyX7DImoNeXxxbvNV9KcbaU7t7WvlmVzw6HsCrvEKwWSCPbov+v++UcUR8+Z+2981fxLq7Q6EsEd5YjUkdm/42MjGKu8t4KNcVdcLNLkFSN28lYcJP5KGKfwH4Ed66EYLGHO95mCFIJ3FESpvglLOsnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none Received: from AM6PR0502CA0042.eurprd05.prod.outlook.com (2603:10a6:20b:56::19) by AS4PR08MB8069.eurprd08.prod.outlook.com (2603:10a6:20b:588::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.24; Thu, 5 May 2022 11:07:26 +0000 Received: from AM5EUR03FT048.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:56:cafe::db) by AM6PR0502CA0042.outlook.office365.com (2603:10a6:20b:56::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.27 via Frontend Transport; Thu, 5 May 2022 11:07:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; Received: from nebula.arm.com (40.67.248.234) by AM5EUR03FT048.mail.protection.outlook.com (10.152.17.177) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.5227.15 via Frontend Transport; Thu, 5 May 2022 11:07:26 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 5 May 2022 11:07:29 +0000 Received: from e120703-lin.cambridge.arm.com (10.2.80.90) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27 via Frontend Transport; Thu, 5 May 2022 11:07:29 +0000 Content-Type: multipart/mixed; boundary="===============0181377887926098461==" MIME-Version: 1.0 From: Srinath Parvathaneni To: CC: , , Subject: [PATCH][Binutils][GAS] arm: Add unwind support for mixed register lists Date: Thu, 5 May 2022 12:07:25 +0100 Message-ID: <828fc7a0-3bf0-4506-985e-7a635a53e117@AZ-NEU-EX04.Arm.com> X-EOPAttributedMessage: 1 X-MS-Office365-Filtering-Correlation-Id: e4b4cadf-cf21-4d27-fc2c-08da2e877576 X-MS-TrafficTypeDiagnostic: AS4PR08MB8069:EE_|DB5EUR03FT005:EE_|AM0PR08MB4148:EE_ X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 62ejz+C1g6bnGEp6dF/M+q3cY6yZRIW3yU9XvR6wu9HmfS2ozhP78VMNIB3d81i1UDcJYWyhbfdZxGbjr34f6trxk2mneobbH601+L1+3EjD+Pda6SQ+LRUrADTrcga6WlCOphDPmOKqZScjn50hh/bJ6mhJQl0qQmIgok0YzI1tZRluMUc5fEMFuGN0zEJu7UeCB3LY9Cu7rou/74dYXNd9gTRSZ2XfMmSVSgTI80L9pK4/Ma4Xfh9O4/7ChSBZGzMOkXVYYcGTY/t1f7V9hRnpxhAS++QxpxhTYofu2XSgUNZ/3dg6hucBdkzPx4RSh5F+5jBtenyMUvYt5WBedQ56734jBBjXNeaIJmqLY7nvqh6kANipmMl7iLvKUiMjA26qlmZFelAHfJaXW6Qj5P4ZuQll04tRkUpP4eWQFcao8LbHAuABpuD3rY4xMLeAUUUE2UNmzV4eY6sodTrbWUB0Q21ddc+wxFH0LybHQITKJ5EvOuxys6kTgOtJYaKevD1wEnC9tHdUGz13jBebVeqsN5ggHFESuxSTCUeIS4V1TZPiWJDvKs/MGdCd/stkLrAOFloXXKx+FliG0Fo+5ypVDq+HngoKVWnpgGJwcuDm9d6jWau4QHkSHGs9DaQZe6DqQAfBqpMTSuAZ6r7cSLkV61VuSUm7S0EKMWVCIJSrw8jSxfmZBnNTcftdomXSq1ro1kdaW/toKMyAdPRorg== X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230001)(4636009)(40470700004)(46966006)(36840700001)(26005)(426003)(336012)(81166007)(47076005)(356005)(31696002)(6916009)(70206006)(31686004)(70586007)(54906003)(4326008)(8676002)(186003)(40460700003)(316002)(44832011)(235185007)(5660300002)(8936002)(33964004)(86362001)(36860700001)(508600001)(2906002)(82310400005)(6666004)(36900700001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8069 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT005.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 79590146-4148-4333-7570-08da2e87703e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Ag5hW2xLbok0RJcSq3x70fG0PGaJLvc1PQxBSq3tiWfT0aE+BnzLyfij8ON/vtgVxtK4cLfIItK5tXuBlKYIE+pNsLTPSjzqHn7dCJcW7k22kOJL64B6+Ot4RjKNonVDPi5YSqhWKZduY+cBUFwY19CgkUAlK5yDEnAYOMca+zCHdmMyncSSH+9895kYx0UKZnhsoBYPld310y5Y4+cHgOAgpTDE9BShd7lJaeegqKVgxG3AHQJd8usj+TM200pSGUgCNkPcL9TbLT4zE125MDkAdBgzuMrpFCrRxxiiiMAO0zckgZvz74OZgXMrhkhEIM0j5DopOQrKoq6skM74cfAINdfCaZFDCc+CpMxC6pSuZaqbQ0/GtsccBRx3me6wwCfYgO/gvK/Y/dxTulXrMTaNSleV5T4v/N7Skjofx1fjHAI5RM9jWne2GW0SCUnfBn/TqAJt73M0+FeaHsYRQbhfquDPu+1rERlGLyYQutys6pMCfTlV8cZJlbWKA8jdDVeD7ycXSZlQ4tU4RxLfCGuvHL0cU7azfzr7bvSsFKotqla5Yhe9B93S33dvT+KlT8ajX70mW9dv8WdecA4QLT78x4yGB5gb0yUDxPd4PVX3vcqjY6Jm4XKz/F+Fu7vOY6bgb+b9EIHe2jAkzpstGeoPbgqrOqKWPYHcjQwRf8+g6pgKqsPIN1dQ6v3JiGEy 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; SFS:(13230001)(4636009)(40470700004)(36840700001)(46966006)(336012)(186003)(33964004)(81166007)(26005)(47076005)(426003)(40460700003)(36860700001)(31696002)(6916009)(44832011)(2906002)(316002)(82310400005)(31686004)(54906003)(8676002)(4326008)(8936002)(70206006)(70586007)(5660300002)(235185007)(508600001)(6666004)(86362001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2022 11:07:35.2384 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e4b4cadf-cf21-4d27-fc2c-08da2e877576 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: DB5EUR03FT005.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4148 X-Spam-Status: No, score=-14.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 May 2022 11:07:49 -0000 --===============0181377887926098461== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Hi, This patch extends support for the encoding of the Return Address Authentication pseudo-register in lists containing other register types - e.g. '.save {r4,ra_auth_code,lr}'. Lists are broken down into sub-lists allowing assembler to emit the correct new pacbti unwind opcode for the RA_AUTH_CODE pseudo register. Tested for arm-none-eabi. Thanks, Victor. gas/Changelog: * testsuite/gas/arm/unwind-pacbti-m.s: Expand test for mixed register type lists. * testsuite/gas/arm/unwind-pacbti-m.d: Likewise. * testsuite/gas/arm/unwind-pacbti-m-readelf.d: Likewise. * config/tc-arm.c (parse_reg_list): Add handling of mixed register types. (reg_names): Enumerate pseudoregister according to mapped physical register number. (s_arm_unwind_save_pseudo): Modify function signature. (s_arm_unwind_save_core): Likewise. (s_arm_unwind_save_mixed): New function. (s_arm_unwind_save): Generate register list mask to pass to nested functions. ############### Attachment also inlined for ease of reply ############### diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index ca4f97b164ae8b0196e1830dc49e4927f8ea2480..8873269d76a482352c69d2d40a248549e7d6ba90 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -1942,6 +1942,22 @@ parse_reg_list (char ** strp, enum reg_list_els etype) rt = REG_TYPE_PSEUDO; reg = arm_reg_parse (&str, rt); + + /* Skip over allowed registers of alternative types in mixed-type + register lists. */ + if (reg == FAIL && rt == REG_TYPE_PSEUDO + && ((reg = arm_reg_parse (&str, REG_TYPE_RN)) != FAIL)) + { + cur_reg = reg; + continue; + } + else if (reg == FAIL && rt == REG_TYPE_RN + && ((reg = arm_reg_parse (&str, REG_TYPE_PSEUDO)) != FAIL)) + { + cur_reg = reg; + continue; + } + if (etype == REGLIST_CLRM) { if (reg == REG_SP || reg == REG_PC) @@ -4281,22 +4297,11 @@ s_arm_unwind_personality (int ignored ATTRIBUTE_UNUSED) /* Parse a directive saving pseudo registers. */ static void -s_arm_unwind_save_pseudo (void) +s_arm_unwind_save_pseudo (long range) { valueT op; - long range; - - range = parse_reg_list (&input_line_pointer, REGLIST_PSEUDO); - if (range == FAIL) - { - as_bad (_("expected pseudo register list")); - ignore_rest_of_line (); - return; - } - - demand_empty_rest_of_line (); - if (range & (1 << 9)) + if (range & (1 << 12)) { /* Opcode for restoring RA_AUTH_CODE. */ op = 0xb4; @@ -4308,22 +4313,11 @@ s_arm_unwind_save_pseudo (void) /* Parse a directive saving core registers. */ static void -s_arm_unwind_save_core (void) +s_arm_unwind_save_core (long range) { valueT op; - long range; int n; - range = parse_reg_list (&input_line_pointer, REGLIST_RN); - if (range == FAIL) - { - as_bad (_("expected register list")); - ignore_rest_of_line (); - return; - } - - demand_empty_rest_of_line (); - /* Turn .unwind_movsp ip followed by .unwind_save {..., ip, ...} into .unwind_save {..., sp...}. We aren't bothered about the value of ip because it is clobbered by calls. */ @@ -4722,6 +4716,40 @@ s_arm_unwind_save_mmxwcg (void) ignore_rest_of_line (); } +static void +s_arm_unwind_save_mixed (long range, long mask_range) +{ + const long roof = ((sizeof (long) * CHAR_BIT) - 1) + - __builtin_clzl (mask_range); + + long subrange = 0; + unsigned lim_lo = 0; + unsigned lim_hi = 0; + + /* Iterate over pseudoregister to establish subrange bounds. */ + for (; lim_hi <= roof; lim_hi++) + { + if (mask_range & (1 << lim_hi)) + { + /* Once we know where to split our range, construct subrange. */ + for (unsigned n = lim_lo; n < lim_hi; n++) + { + if (range & (1 << n)) + subrange |= (1 << n); + } + + s_arm_unwind_save_core (subrange); + s_arm_unwind_save_pseudo (1 << lim_hi); + + subrange = 0; + lim_lo = lim_hi + 1; + } + } + + lim_lo = 0xffff << roof; + subrange = range & lim_lo; + s_arm_unwind_save_core (subrange); +} /* Parse an unwind_save directive. If the argument is non-zero, this is a .vsave directive. */ @@ -4729,7 +4757,8 @@ s_arm_unwind_save_mmxwcg (void) static void s_arm_unwind_save (int arch_v6) { - char *peek; + char *peek, *mask_peek; + long range, mask_range; struct reg_entry *reg; bool had_brace = false; @@ -4737,7 +4766,7 @@ s_arm_unwind_save (int arch_v6) as_bad (MISSING_FNSTART); /* Figure out what sort of save we have. */ - peek = input_line_pointer; + peek = mask_peek = input_line_pointer; if (*peek == '{') { @@ -4767,13 +4796,35 @@ s_arm_unwind_save (int arch_v6) s_arm_unwind_save_fpa (reg->number); return; + case REG_TYPE_PSEUDO: case REG_TYPE_RN: - s_arm_unwind_save_core (); - return; + mask_range = parse_reg_list (&mask_peek, REGLIST_PSEUDO); + range = parse_reg_list (&input_line_pointer, REGLIST_RN); - case REG_TYPE_PSEUDO: - s_arm_unwind_save_pseudo (); - return; + if (range == FAIL || mask_range == FAIL) + { + as_bad (_("expected register list")); + ignore_rest_of_line (); + return; + } + + demand_empty_rest_of_line (); + + if (!mask_range) + { + s_arm_unwind_save_core (range); + return; + } + else if (!range) + { + s_arm_unwind_save_pseudo (mask_range); + return; + } + else + { + s_arm_unwind_save_mixed (range, mask_range); + return; + } case REG_TYPE_VFD: if (arch_v6) @@ -23976,7 +24027,7 @@ static const struct reg_entry reg_names[] = for tc_arm_regname_to_dw2regnum to translate to DWARF reg number using 134 + reg_number should the range 134 to 142 be used for more pseudo regs in the future. This also helps fit RA_AUTH_CODE into a bitmask. */ - REGDEF(ra_auth_code,9,PSEUDO), + REGDEF(ra_auth_code,12,PSEUDO), }; #undef REGDEF #undef REGNUM diff --git a/gas/testsuite/gas/arm/unwind-pacbti-m-readelf.d b/gas/testsuite/gas/arm/unwind-pacbti-m-readelf.d index ba1d76dd18fbe0ca2c391c12ddcb180d1de3b32b..d8d647bb7f0d943ceeec47e2f4fc8d34bb0ea057 100644 --- a/gas/testsuite/gas/arm/unwind-pacbti-m-readelf.d +++ b/gas/testsuite/gas/arm/unwind-pacbti-m-readelf.d @@ -6,11 +6,15 @@ # VxWorks needs a special variant of this file. #skip: *-*-vxworks* -Unwind section '.ARM.exidx' at offset 0x40 contains 1 entry: +Unwind section '.ARM.exidx' at offset 0x60 contains 1 entry: -0x0 : 0x80b4a8b0 - Compact model index: 0 +0x0 : @0x0 + Compact model index: 1 + 0x84 0x00 pop {r14} + 0xb4 pop {ra_auth_code} + 0x84 0x00 pop {r14} + 0xb4 pop {ra_auth_code} + 0xa3 pop {r4, r5, r6, r7} 0xb4 pop {ra_auth_code} 0xa8 pop {r4, r14} 0xb0 finish - diff --git a/gas/testsuite/gas/arm/unwind-pacbti-m.d b/gas/testsuite/gas/arm/unwind-pacbti-m.d index 28021758a7487097689ef4c44cc25546ccac5221..06cb3145e4254b34c2d95616d7ea20506af3a42a 100644 --- a/gas/testsuite/gas/arm/unwind-pacbti-m.d +++ b/gas/testsuite/gas/arm/unwind-pacbti-m.d @@ -8,16 +8,20 @@ .*: file format.* RELOCATION RECORDS FOR \[.ARM.exidx\]: -OFFSET TYPE VALUE +OFFSET TYPE VALUE. 00000000 R_ARM_PREL31 .text -00000000 R_ARM_NONE __aeabi_unwind_cpp_pr0 +00000000 R_ARM_NONE __aeabi_unwind_cpp_pr1 +00000004 R_ARM_PREL31 .ARM.extab Contents of section .text: - 0000 (10b54df8 04cd5df8 04cb10bd|b510f84d cd04f85d cb04bd10) .* + 0000 (10b54df8 04cd5df8 04cb2de9 f050bde8|e8bd50f0 e92dcb04 f85dcd04 f84db510) .* + 0010 (f0502de9 0050bde8 005010bd|bd105000 e8bd5000 e92d50f0) .* +Contents of section .ARM.extab: + 0000 (00840281 b40084b4 b0a8b4a3|a3b4a8b0 b48400b4 81028400) 00000000 .* Contents of section .ARM.exidx: - 0000 00000000 (b0a8b480|80b4a8b0) .* + 0000 00000000 00000000 .* Contents of section .ARM.attributes: 0000 41(290000 00|000000 29)616561 62690001 (1f000000|0000001f) .* 0010 05382e31 2d4d2e4d 41494e00 0615074d .* - 0020 09033202 34024a01 4c01 .* + 0020 09033202 34024a01 4c01 .* diff --git a/gas/testsuite/gas/arm/unwind-pacbti-m.s b/gas/testsuite/gas/arm/unwind-pacbti-m.s index 5a6ea2eec2b8e48dd49963f0a4b93fa29c3c3a49..37202293133e95f7e94490aaa1729afb30a0afe7 100644 --- a/gas/testsuite/gas/arm/unwind-pacbti-m.s +++ b/gas/testsuite/gas/arm/unwind-pacbti-m.s @@ -16,5 +16,11 @@ foo: push {r12} .save {ra_auth_code} pop {r12} + push {r4-r7, ip, lr} + .save {r4-r7, ra_auth_code, lr} + pop {r4-r7, ip, lr} + push {ip, lr} + .save {ra_auth_code, lr} + pop {ip, lr} pop {r4, pc} .fnend --===============0181377887926098461== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rb15673.patch" ZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtYXJtLmMgYi9nYXMvY29uZmlnL3RjLWFybS5jCmlu ZGV4IGNhNGY5N2IxNjRhZThiMDE5NmUxODMwZGM0OWU0OTI3ZjhlYTI0ODAuLjg4NzMyNjlkNzZh NDgyMzUyYzY5ZDJkNDBhMjQ4NTQ5ZTdkNmJhOTAgMTAwNjQ0Ci0tLSBhL2dhcy9jb25maWcvdGMt YXJtLmMKKysrIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwpAQCAtMTk0Miw2ICsxOTQyLDIyIEBAIHBh cnNlX3JlZ19saXN0IChjaGFyICoqIHN0cnAsIGVudW0gcmVnX2xpc3RfZWxzIGV0eXBlKQogCQly dCA9IFJFR19UWVBFX1BTRVVETzsKIAogCSAgICAgIHJlZyA9IGFybV9yZWdfcGFyc2UgKCZzdHIs IHJ0KTsKKworCSAgICAgIC8qIFNraXAgb3ZlciBhbGxvd2VkIHJlZ2lzdGVycyBvZiBhbHRlcm5h dGl2ZSB0eXBlcyBpbiBtaXhlZC10eXBlCisJICAgICAgICAgcmVnaXN0ZXIgbGlzdHMuICAqLwor CSAgICAgIGlmIChyZWcgPT0gRkFJTCAmJiBydCA9PSBSRUdfVFlQRV9QU0VVRE8KKwkJICAmJiAo KHJlZyA9IGFybV9yZWdfcGFyc2UgKCZzdHIsIFJFR19UWVBFX1JOKSkgIT0gRkFJTCkpCisJCXsK KwkJICBjdXJfcmVnID0gcmVnOworCQkgIGNvbnRpbnVlOworCQl9CisJICAgICAgZWxzZSBpZiAo cmVnID09IEZBSUwgJiYgcnQgPT0gUkVHX1RZUEVfUk4KKwkJICAgICAgICYmICgocmVnID0gYXJt X3JlZ19wYXJzZSAoJnN0ciwgUkVHX1RZUEVfUFNFVURPKSkgIT0gRkFJTCkpCisJCXsKKwkJICBj dXJfcmVnID0gcmVnOworCQkgIGNvbnRpbnVlOworCQl9CisKIAkgICAgICBpZiAoZXR5cGUgPT0g UkVHTElTVF9DTFJNKQogCQl7CiAJCSAgaWYgKHJlZyA9PSBSRUdfU1AgfHwgcmVnID09IFJFR19Q QykKQEAgLTQyODEsMjIgKzQyOTcsMTEgQEAgc19hcm1fdW53aW5kX3BlcnNvbmFsaXR5IChpbnQg aWdub3JlZCBBVFRSSUJVVEVfVU5VU0VEKQogLyogUGFyc2UgYSBkaXJlY3RpdmUgc2F2aW5nIHBz ZXVkbyByZWdpc3RlcnMuICAqLwogCiBzdGF0aWMgdm9pZAotc19hcm1fdW53aW5kX3NhdmVfcHNl dWRvICh2b2lkKQorc19hcm1fdW53aW5kX3NhdmVfcHNldWRvIChsb25nIHJhbmdlKQogewogICB2 YWx1ZVQgb3A7Ci0gIGxvbmcgcmFuZ2U7Ci0KLSAgcmFuZ2UgPSBwYXJzZV9yZWdfbGlzdCAoJmlu cHV0X2xpbmVfcG9pbnRlciwgUkVHTElTVF9QU0VVRE8pOwotICBpZiAocmFuZ2UgPT0gRkFJTCkK LSAgICB7Ci0gICAgICBhc19iYWQgKF8oImV4cGVjdGVkIHBzZXVkbyByZWdpc3RlciBsaXN0Iikp OwotICAgICAgaWdub3JlX3Jlc3Rfb2ZfbGluZSAoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0K LSAgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAoKTsKIAotICBpZiAocmFuZ2UgJiAoMSA8PCA5 KSkKKyAgaWYgKHJhbmdlICYgKDEgPDwgMTIpKQogICAgIHsKICAgICAgIC8qIE9wY29kZSBmb3Ig cmVzdG9yaW5nIFJBX0FVVEhfQ09ERS4gICovCiAgICAgICBvcCA9IDB4YjQ7CkBAIC00MzA4LDIy ICs0MzEzLDExIEBAIHNfYXJtX3Vud2luZF9zYXZlX3BzZXVkbyAodm9pZCkKIC8qIFBhcnNlIGEg ZGlyZWN0aXZlIHNhdmluZyBjb3JlIHJlZ2lzdGVycy4gICovCiAKIHN0YXRpYyB2b2lkCi1zX2Fy bV91bndpbmRfc2F2ZV9jb3JlICh2b2lkKQorc19hcm1fdW53aW5kX3NhdmVfY29yZSAobG9uZyBy YW5nZSkKIHsKICAgdmFsdWVUIG9wOwotICBsb25nIHJhbmdlOwogICBpbnQgbjsKIAotICByYW5n ZSA9IHBhcnNlX3JlZ19saXN0ICgmaW5wdXRfbGluZV9wb2ludGVyLCBSRUdMSVNUX1JOKTsKLSAg aWYgKHJhbmdlID09IEZBSUwpCi0gICAgewotICAgICAgYXNfYmFkIChfKCJleHBlY3RlZCByZWdp c3RlciBsaXN0IikpOwotICAgICAgaWdub3JlX3Jlc3Rfb2ZfbGluZSAoKTsKLSAgICAgIHJldHVy bjsKLSAgICB9Ci0KLSAgZGVtYW5kX2VtcHR5X3Jlc3Rfb2ZfbGluZSAoKTsKLQogICAvKiBUdXJu IC51bndpbmRfbW92c3AgaXAgZm9sbG93ZWQgYnkgLnVud2luZF9zYXZlIHsuLi4sIGlwLCAuLi59 CiAgICAgIGludG8gLnVud2luZF9zYXZlIHsuLi4sIHNwLi4ufS4gIFdlIGFyZW4ndCBib3RoZXJl ZCBhYm91dCB0aGUgdmFsdWUgb2YKICAgICAgaXAgYmVjYXVzZSBpdCBpcyBjbG9iYmVyZWQgYnkg Y2FsbHMuICAqLwpAQCAtNDcyMiw2ICs0NzE2LDQwIEBAIHNfYXJtX3Vud2luZF9zYXZlX21teHdj ZyAodm9pZCkKICAgaWdub3JlX3Jlc3Rfb2ZfbGluZSAoKTsKIH0KIAorc3RhdGljIHZvaWQKK3Nf YXJtX3Vud2luZF9zYXZlX21peGVkIChsb25nIHJhbmdlLCBsb25nIG1hc2tfcmFuZ2UpCit7Cisg IGNvbnN0IGxvbmcgcm9vZiA9ICgoc2l6ZW9mIChsb25nKSAqIENIQVJfQklUKSAtIDEpCisgICAg LSBfX2J1aWx0aW5fY2x6bCAobWFza19yYW5nZSk7CisKKyAgbG9uZyBzdWJyYW5nZSA9IDA7Cisg IHVuc2lnbmVkIGxpbV9sbyA9IDA7CisgIHVuc2lnbmVkIGxpbV9oaSA9IDA7CisKKyAgLyogSXRl cmF0ZSBvdmVyIHBzZXVkb3JlZ2lzdGVyIHRvIGVzdGFibGlzaCBzdWJyYW5nZSBib3VuZHMuICAq LworICBmb3IgKDsgbGltX2hpIDw9IHJvb2Y7IGxpbV9oaSsrKQorICAgIHsKKyAgICAgIGlmICht YXNrX3JhbmdlICYgKDEgPDwgbGltX2hpKSkKKwl7CisJICAvKiBPbmNlIHdlIGtub3cgd2hlcmUg dG8gc3BsaXQgb3VyIHJhbmdlLCBjb25zdHJ1Y3Qgc3VicmFuZ2UuICAqLworCSAgZm9yICh1bnNp Z25lZCBuID0gbGltX2xvOyBuIDwgbGltX2hpOyBuKyspCisJICAgIHsKKwkgICAgICBpZiAocmFu Z2UgJiAoMSA8PCBuKSkKKwkJc3VicmFuZ2UgfD0gKDEgPDwgbik7CisJICAgIH0KKworCSAgc19h cm1fdW53aW5kX3NhdmVfY29yZSAoc3VicmFuZ2UpOworCSAgc19hcm1fdW53aW5kX3NhdmVfcHNl dWRvICgxIDw8IGxpbV9oaSk7CisKKwkgIHN1YnJhbmdlID0gMDsKKwkgIGxpbV9sbyA9IGxpbV9o aSArIDE7CisJfQorICAgIH0KKworICBsaW1fbG8gPSAweGZmZmYgPDwgcm9vZjsKKyAgc3VicmFu Z2UgPSByYW5nZSAmIGxpbV9sbzsKKyAgc19hcm1fdW53aW5kX3NhdmVfY29yZSAoc3VicmFuZ2Up OworfQogCiAvKiBQYXJzZSBhbiB1bndpbmRfc2F2ZSBkaXJlY3RpdmUuCiAgICBJZiB0aGUgYXJn dW1lbnQgaXMgbm9uLXplcm8sIHRoaXMgaXMgYSAudnNhdmUgZGlyZWN0aXZlLiAgKi8KQEAgLTQ3 MjksNyArNDc1Nyw4IEBAIHNfYXJtX3Vud2luZF9zYXZlX21teHdjZyAodm9pZCkKIHN0YXRpYyB2 b2lkCiBzX2FybV91bndpbmRfc2F2ZSAoaW50IGFyY2hfdjYpCiB7Ci0gIGNoYXIgKnBlZWs7Cisg IGNoYXIgKnBlZWssICptYXNrX3BlZWs7CisgIGxvbmcgcmFuZ2UsIG1hc2tfcmFuZ2U7CiAgIHN0 cnVjdCByZWdfZW50cnkgKnJlZzsKICAgYm9vbCBoYWRfYnJhY2UgPSBmYWxzZTsKIApAQCAtNDcz Nyw3ICs0NzY2LDcgQEAgc19hcm1fdW53aW5kX3NhdmUgKGludCBhcmNoX3Y2KQogICAgIGFzX2Jh ZCAoTUlTU0lOR19GTlNUQVJUKTsKIAogICAvKiBGaWd1cmUgb3V0IHdoYXQgc29ydCBvZiBzYXZl IHdlIGhhdmUuICAqLwotICBwZWVrID0gaW5wdXRfbGluZV9wb2ludGVyOworICBwZWVrID0gbWFz a19wZWVrID0gaW5wdXRfbGluZV9wb2ludGVyOwogCiAgIGlmICgqcGVlayA9PSAneycpCiAgICAg ewpAQCAtNDc2NywxMyArNDc5NiwzNSBAQCBzX2FybV91bndpbmRfc2F2ZSAoaW50IGFyY2hfdjYp CiAgICAgICBzX2FybV91bndpbmRfc2F2ZV9mcGEgKHJlZy0+bnVtYmVyKTsKICAgICAgIHJldHVy bjsKIAorICAgIGNhc2UgUkVHX1RZUEVfUFNFVURPOgogICAgIGNhc2UgUkVHX1RZUEVfUk46Ci0g ICAgICBzX2FybV91bndpbmRfc2F2ZV9jb3JlICgpOwotICAgICAgcmV0dXJuOworICAgICAgbWFz a19yYW5nZSA9IHBhcnNlX3JlZ19saXN0ICgmbWFza19wZWVrLCBSRUdMSVNUX1BTRVVETyk7Cisg ICAgICByYW5nZSA9IHBhcnNlX3JlZ19saXN0ICgmaW5wdXRfbGluZV9wb2ludGVyLCBSRUdMSVNU X1JOKTsKIAotICAgIGNhc2UgUkVHX1RZUEVfUFNFVURPOgotICAgICAgc19hcm1fdW53aW5kX3Nh dmVfcHNldWRvICgpOwotICAgICAgcmV0dXJuOworICAgICAgaWYgKHJhbmdlID09IEZBSUwgfHwg bWFza19yYW5nZSA9PSBGQUlMKQorCXsKKwkgIGFzX2JhZCAoXygiZXhwZWN0ZWQgcmVnaXN0ZXIg bGlzdCIpKTsKKwkgIGlnbm9yZV9yZXN0X29mX2xpbmUgKCk7CisJICByZXR1cm47CisJfQorCisg ICAgICBkZW1hbmRfZW1wdHlfcmVzdF9vZl9saW5lICgpOworCisgICAgICBpZiAoIW1hc2tfcmFu Z2UpCisJeworCSAgc19hcm1fdW53aW5kX3NhdmVfY29yZSAocmFuZ2UpOworCSAgcmV0dXJuOwor CX0KKyAgICAgIGVsc2UgaWYgKCFyYW5nZSkKKwl7CisJICBzX2FybV91bndpbmRfc2F2ZV9wc2V1 ZG8gKG1hc2tfcmFuZ2UpOworCSAgcmV0dXJuOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBzX2Fy bV91bndpbmRfc2F2ZV9taXhlZCAocmFuZ2UsIG1hc2tfcmFuZ2UpOworCSAgcmV0dXJuOworCX0K IAogICAgIGNhc2UgUkVHX1RZUEVfVkZEOgogICAgICAgaWYgKGFyY2hfdjYpCkBAIC0yMzk3Niw3 ICsyNDAyNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnX2VudHJ5IHJlZ19uYW1lc1tdID0K ICAgICAgZm9yIHRjX2FybV9yZWduYW1lX3RvX2R3MnJlZ251bSB0byB0cmFuc2xhdGUgdG8gRFdB UkYgcmVnIG51bWJlciB1c2luZwogICAgICAxMzQgKyByZWdfbnVtYmVyIHNob3VsZCB0aGUgcmFu Z2UgMTM0IHRvIDE0MiBiZSB1c2VkIGZvciBtb3JlIHBzZXVkbyByZWdzCiAgICAgIGluIHRoZSBm dXR1cmUuICBUaGlzIGFsc28gaGVscHMgZml0IFJBX0FVVEhfQ09ERSBpbnRvIGEgYml0bWFzay4g ICovCi0gIFJFR0RFRihyYV9hdXRoX2NvZGUsOSxQU0VVRE8pLAorICBSRUdERUYocmFfYXV0aF9j b2RlLDEyLFBTRVVETyksCiB9OwogI3VuZGVmIFJFR0RFRgogI3VuZGVmIFJFR05VTQpkaWZmIC0t Z2l0IGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL3Vud2luZC1wYWNidGktbS1yZWFkZWxmLmQgYi9n YXMvdGVzdHN1aXRlL2dhcy9hcm0vdW53aW5kLXBhY2J0aS1tLXJlYWRlbGYuZAppbmRleCBiYTFk NzZkZDE4ZmJlMGNhMmMzOTFjMTJkZGNiMTgwZDFkZTNiMzJiLi5kOGQ2NDdiYjdmMGQ5NDNjZWVl YzQ3ZTJmNGZjOGQzNGJiMGVhMDU3IDEwMDY0NAotLS0gYS9nYXMvdGVzdHN1aXRlL2dhcy9hcm0v dW53aW5kLXBhY2J0aS1tLXJlYWRlbGYuZAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vdW53 aW5kLXBhY2J0aS1tLXJlYWRlbGYuZApAQCAtNiwxMSArNiwxNSBAQAogIyBWeFdvcmtzIG5lZWRz IGEgc3BlY2lhbCB2YXJpYW50IG9mIHRoaXMgZmlsZS4KICNza2lwOiAqLSotdnh3b3JrcyoKIAot VW53aW5kIHNlY3Rpb24gJy5BUk0uZXhpZHgnIGF0IG9mZnNldCAweDQwIGNvbnRhaW5zIDEgZW50 cnk6CitVbndpbmQgc2VjdGlvbiAnLkFSTS5leGlkeCcgYXQgb2Zmc2V0IDB4NjAgY29udGFpbnMg MSBlbnRyeToKIAotMHgwIDxmb28+OiAweDgwYjRhOGIwCi0gIENvbXBhY3QgbW9kZWwgaW5kZXg6 IDAKKzB4MCA8Zm9vPjogQDB4MAorICBDb21wYWN0IG1vZGVsIGluZGV4OiAxCisgIDB4ODQgMHgw MCBwb3Age3IxNH0KKyAgMHhiNCAgICAgIHBvcCB7cmFfYXV0aF9jb2RlfQorICAweDg0IDB4MDAg cG9wIHtyMTR9CisgIDB4YjQgICAgICBwb3Age3JhX2F1dGhfY29kZX0KKyAgMHhhMyAgICAgIHBv cCB7cjQsIHI1LCByNiwgcjd9CiAgIDB4YjQgICAgICBwb3Age3JhX2F1dGhfY29kZX0KICAgMHhh OCAgICAgIHBvcCB7cjQsIHIxNH0KICAgMHhiMCAgICAgIGZpbmlzaAotCmRpZmYgLS1naXQgYS9n YXMvdGVzdHN1aXRlL2dhcy9hcm0vdW53aW5kLXBhY2J0aS1tLmQgYi9nYXMvdGVzdHN1aXRlL2dh cy9hcm0vdW53aW5kLXBhY2J0aS1tLmQKaW5kZXggMjgwMjE3NThhNzQ4NzA5NzY4OWVmNGM0NGNj MjU1NDZjY2FjNTIyMS4uMDZjYjMxNDVlNDI1NGIzNGMyZDk1NjE2ZDdlYTIwNTA2YWYzYTQyYSAx MDA2NDQKLS0tIGEvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL3Vud2luZC1wYWNidGktbS5kCisrKyBi L2dhcy90ZXN0c3VpdGUvZ2FzL2FybS91bndpbmQtcGFjYnRpLW0uZApAQCAtOCwxNiArOCwyMCBA QAogLio6ICAgICBmaWxlIGZvcm1hdC4qCiAKIFJFTE9DQVRJT04gUkVDT1JEUyBGT1IgXFsuQVJN LmV4aWR4XF06Ci1PRkZTRVQgICBUWVBFICAgICAgICAgICAgICBWQUxVRSAKK09GRlNFVCAgIFRZ UEUgICAgICAgICAgICAgIFZBTFVFLgogMDAwMDAwMDAgUl9BUk1fUFJFTDMxICAgICAgLnRleHQK LTAwMDAwMDAwIFJfQVJNX05PTkUgICAgICAgIF9fYWVhYmlfdW53aW5kX2NwcF9wcjAKKzAwMDAw MDAwIFJfQVJNX05PTkUgICAgICAgIF9fYWVhYmlfdW53aW5kX2NwcF9wcjEKKzAwMDAwMDA0IFJf QVJNX1BSRUwzMSAgICAgIC5BUk0uZXh0YWIKIAogCiBDb250ZW50cyBvZiBzZWN0aW9uIC50ZXh0 OgotIDAwMDAgKDEwYjU0ZGY4IDA0Y2Q1ZGY4IDA0Y2IxMGJkfGI1MTBmODRkIGNkMDRmODVkIGNi MDRiZDEwKSAgLioKKyAwMDAwICgxMGI1NGRmOCAwNGNkNWRmOCAwNGNiMmRlOSBmMDUwYmRlOHxl OGJkNTBmMCBlOTJkY2IwNCBmODVkY2QwNCBmODRkYjUxMCkgIC4qCisgMDAxMCAoZjA1MDJkZTkg MDA1MGJkZTggMDA1MDEwYmR8YmQxMDUwMDAgZThiZDUwMDAgZTkyZDUwZjApICAuKgorQ29udGVu dHMgb2Ygc2VjdGlvbiAuQVJNLmV4dGFiOgorIDAwMDAgKDAwODQwMjgxIGI0MDA4NGI0IGIwYThi NGEzfGEzYjRhOGIwIGI0ODQwMGI0IDgxMDI4NDAwKSAwMDAwMDAwMCAgLioKIENvbnRlbnRzIG9m IHNlY3Rpb24gLkFSTS5leGlkeDoKLSAwMDAwIDAwMDAwMDAwIChiMGE4YjQ4MHw4MGI0YThiMCkg IC4qCisgMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAgLioKIENvbnRlbnRzIG9mIHNlY3Rpb24gLkFS TS5hdHRyaWJ1dGVzOgogIDAwMDAgNDEoMjkwMDAwIDAwfDAwMDAwMCAyOSk2MTY1NjEgNjI2OTAw MDEgKDFmMDAwMDAwfDAwMDAwMDFmKSAgLioKICAwMDEwIDA1MzgyZTMxIDJkNGQyZTRkIDQxNDk0 ZTAwIDA2MTUwNzRkICAuKgotIDAwMjAgMDkwMzMyMDIgMzQwMjRhMDEgNGMwMSAgICAgICAgICAg ICAgIC4qCisgMDAyMCAwOTAzMzIwMiAzNDAyNGEwMSA0YzAxICAuKgpkaWZmIC0tZ2l0IGEvZ2Fz L3Rlc3RzdWl0ZS9nYXMvYXJtL3Vud2luZC1wYWNidGktbS5zIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMv YXJtL3Vud2luZC1wYWNidGktbS5zCmluZGV4IDVhNmVhMmVlYzJiOGU0OGRkNDk5NjNmMGE0Yjkz ZmEyOWMzYzNhNDkuLjM3MjAyMjkzMTMzZTk1ZjdlOTQ0OTBhYWExNzI5YWZiMzBhMGFmZTcgMTAw NjQ0Ci0tLSBhL2dhcy90ZXN0c3VpdGUvZ2FzL2FybS91bndpbmQtcGFjYnRpLW0ucworKysgYi9n YXMvdGVzdHN1aXRlL2dhcy9hcm0vdW53aW5kLXBhY2J0aS1tLnMKQEAgLTE2LDUgKzE2LDExIEBA IGZvbzoKIAlwdXNoCXtyMTJ9CiAJLnNhdmUge3JhX2F1dGhfY29kZX0KIAlwb3AJe3IxMn0KKwlw dXNoCXtyNC1yNywgaXAsIGxyfQorCS5zYXZlIHtyNC1yNywgcmFfYXV0aF9jb2RlLCBscn0KKwlw b3AJe3I0LXI3LCBpcCwgbHJ9CisJcHVzaAl7aXAsIGxyfQorCS5zYXZlIHtyYV9hdXRoX2NvZGUs IGxyfQorCXBvcCB7aXAsIGxyfQogCXBvcAl7cjQsIHBjfQogCS5mbmVuZAoK --===============0181377887926098461==--