From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2062.outbound.protection.outlook.com [40.107.20.62]) by sourceware.org (Postfix) with ESMTPS id B47883858CDB for ; Fri, 3 Mar 2023 13:52:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B47883858CDB Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b9lL8tl/Vou1hzmJrx0IQb7bjGWpsrUq8bZyDBkIqDCb3aqOY/+plIEQq6GngynCWi3HtmQbo1c/9HBzG0vNCGzmdWOdW7xzXdNoDxx8LYTpUAcpvB/KZS71N33Hwbxh6X/vNCH7q5aN35UrzLXCni+Og4pSK0g5CGSe8woYIto6szGWqnLoo5sNUioQCfGlpJewi5xKpq9gVpXHxs+DOw309ntUCE0Wj6gnrGsABHl8JmVD/i6B1OyLrdXF8Pb/CDK/Q0nhRNImNqvTCipq9umny7sVRmK1gxuIbqi1k/y2Lf/BqoFQIU3Ks7MKEcv+Rts6Q4rTHMBsIol06OaXDw== 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=IM7srodDF9pXC6BUXIF8RHnLeb6nQEuvBvXVR8n4GB4=; b=VdkJmgMNZX4lJ0fMVwv0MySI+gFxJGRu/78ZUUv+DaqHWp9Dicfc19o5/JCu0PXc+eGFdJlVEesnyGdiu8MgcoCC4Okf6/kKTbpK3eV3Ua/wlRlb2kJNXNMe7+12qoSiM9pnF+r1IlTLqd2HdKAPg5cl70thNEH333W6VrUeDdLuwIwpH3k/ma1O6pfhWiMqwHghcOY/QM+30YUS4MQ0mHH3v4BE9OrpG5CTcmbF9VvGBBH8XoS9sU+QcjPQXKRW34frp5mZsiOVor206tlL5TRi8AE8W0KwTzIX99SLIq0DNZhU4/J5yZHJugg56ft9Ydt7r5NTW3DKcZbgLC8Qxw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IM7srodDF9pXC6BUXIF8RHnLeb6nQEuvBvXVR8n4GB4=; b=eychTsjDGs7+Vx1buDmZZBn4Qyx++84DTa/2KBLunWd8aEhtZmOOiN7vBC6iqkjqt4014Esn7g6Hi75H3lJ2A0/IJ/Mc96zLurveyu7KApwdzq52K5mML10mcizaaHhcbCp2mbI9GP5iRK7iWNjHUmxEnYxziDUou4ix/l0DXo9iocMMBd5ptkiJh+aGvDHLxdMMu1N0j6AwDMkZbxnFK9VEZjdrYZUE+Cx9Mh7BQ+4z0WZv67+WODrBqU1LJLvaISyefNHwQAUrKw0CqghsKCqm6pZG8Ihwr59DpkVlyDIkUWBFYfmlNo8ZyJCjp7N5ReInvNFgN+XNtfRKX2uiCA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AS8PR04MB8403.eurprd04.prod.outlook.com (2603:10a6:20b:3f7::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.21; Fri, 3 Mar 2023 13:52:52 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::154e:166d:ec25:531b%7]) with mapi id 15.20.6156.019; Fri, 3 Mar 2023 13:52:52 +0000 Content-Type: multipart/mixed; boundary="------------HLg2ZSucKcrUIIIHYbLiT2ut" Message-ID: <574b6c36-7e00-ea69-0fdf-6c41d425b771@suse.com> Date: Fri, 3 Mar 2023 14:52:50 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH 2/2] RISC-V: adjust logic to avoid register name symbols Content-Language: en-US To: Nelson Chu Cc: Binutils , Palmer Dabbelt , Andrew Waterman , Jim Wilson References: <2df3478a-3cd9-d7b5-670e-60683ae3066e@suse.com> <3bb126f6-5bf1-dab0-f540-25c386b9507e@suse.com> From: Jan Beulich In-Reply-To: X-ClientProxiedBy: FR2P281CA0095.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:9b::17) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB8403:EE_ X-MS-Office365-Filtering-Correlation-Id: e59722f2-6b57-43f5-0d3e-08db1bee9529 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KpxRWlv15TN6jk428HEtDh6okzUEGCzjHlBJBOJE+m3CY9n3PSA3NxWbCuf6R5ME3SdSfySbPWOch9FzL1p7RzLrB7jaZ/KlrTIL1YpF2l+hfOfVoW+Fh1guSZlM77NufO1IKuI5IqaSoB8P6Ko1xc5ZOViCAXrAxzjxd+TSSnhrpiTsgekv/Fwmo3qJC6+wdekmWtvp8752UOsN+kueaF5PvHpVLuaAK1qNmUrzmQp5zgLz8vNYyzP4YBGRJwenHODSOykeuBnJQ/xvVw7xnAgF0XV1qCsEbZh38suTMfUN4MDy7WCgb/yezcGXHC++qZvIS8vgiBj6HWSrMWxF73Lbjd4FNUa9nKfYG/dSrU6v/D+EjIeJEVaBNe3AJEdFMZI1iTzcdcVVescNQJypzvUeSwGSmId2oo+mXExGc6wT1/E8fMRkf+NbrdJvWYOIUeZB5oA7SXV5Z6Sg2x7WkKNv9aYVoS0nWbKZqZzflA4Z4nnnKotSLfE9z4Qn7rjg4d5qd1fuRhwEpTZjK/srJEB7pptAwl2hKXeOdkbPGO7HxAcGve0Wvg9dRMnp5W/usWiNEV0rFdrmRaykfV2MC4OBXBnj6qn4qStfWl9H+kcDOfXMWgOZhTy91di/YzFoTs6zSz17G3i8H4nzsd8FAGwmoB5Bl04cW6TmN5ajt90DJHuojwp8EGVRYgZoyqXnzYfXIslSuYhrMBoqildxfQumC/rn2RLcuD4asypnDKo= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(346002)(39860400002)(376002)(136003)(396003)(366004)(451199018)(83380400001)(8936002)(31686004)(31696002)(36756003)(53546011)(38100700002)(5660300002)(86362001)(235185007)(478600001)(66946007)(2616005)(186003)(26005)(6506007)(33964004)(6486002)(6512007)(66556008)(66476007)(8676002)(2906002)(6916009)(316002)(41300700001)(4326008)(54906003)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eXBHMEFvUzllTjEyc0thMGh1ZE9weGJvUkhJWFFuNXZ0M05SdEVsb3V0ck1h?= =?utf-8?B?TkxHTFQxZ2ZWSndGbi9Kd1BlTHZLQkNSYkw1T1FLeDIrdVFPUlJ3bnhuQm9R?= =?utf-8?B?eVI4OFF5YUQ4WkpaSkxOeVMwSVpuNmpvUXE3M2lZaWt1VjVJcVA4TTVRYk8y?= =?utf-8?B?UE5QQ08reDdsMm1LUTVTaTJMTTAweVdDTHhRcDltMitxOURFSDJHdklwMTVN?= =?utf-8?B?dSsyeUNlUVNiSnlhNDVhVXFuMkRsSTFLR3pOK2xQanJsNm93eGxRY3BORmNj?= =?utf-8?B?RE92blREL3h2c3JiYUkwNUowYzNmUitmRC9PQnZsamUwYzBTVmYvOGZXb3Nu?= =?utf-8?B?S1FUWDhUNmpmaDBDVjUwZlpTL3NWNzI3L28zQ0pVVEZJejdUNUNCMytLQWln?= =?utf-8?B?eGh1b2JhMnlNdllGalo0dnJMME1RMStCNXJDWmdwd2I3M01nRlVsUjhzUlJJ?= =?utf-8?B?S2hEWUlxcFJpaWZ3Qlo5V1VxQk9RdmlTcVI4UGsrbmJHb09iKy9PYzBDOVhq?= =?utf-8?B?Z2pQNGtJV3hQNTNCU0RyUCtHaDYxbC9QbVl1aFBwYmVTaU9yL2xKOVhvN2Ur?= =?utf-8?B?ZjRyTlJYY0Mya0ZScnVqTHVvRWljZEJHdW44YTFrM0xyK01UamJaT283a3cz?= =?utf-8?B?clpnVnZiMTlFdlRvMHJ5eWVzVUpveUZDTVJOaDVGNWltMG5zbnF5cm16VVRL?= =?utf-8?B?enFYOE5VQkpJTHNPTE5BNFhXMHdFeUhFcVFhQVVpdlo1ZDBpb1YyeEpkYnRR?= =?utf-8?B?TDZrejEyb01ybURZMVpBdG52STdmNnpBT21zMGorSWY1ZmtsOXMrcXc4Zk13?= =?utf-8?B?dXhYSStha0Fkd1QrcHA3eG9xeWhnQ0ZHMXZIQWJhTHplTzk2L0dLSFBuam0z?= =?utf-8?B?eXlsM0lKMFVsMzBuM2g2Nk5DWm1HR1c1QjBaa3FYaEJYUklPMEFDNGdobDN6?= =?utf-8?B?RTFXVEZvUXdTei95ZEgzZ0o1Si95aW5MalM5dWV5My8vY0VOUGNyMDQyODNJ?= =?utf-8?B?U3dxN2xiL0pPSFNOZTJMeWg4M25nK3h4c1pKb2tNd0J5c2lyOVNXcnlhaU16?= =?utf-8?B?LzRGMWUyT3lXbnNMYXJmcldpdHdhcEdackRLR1A2aGt1bzkvdVkvcWRiaVdx?= =?utf-8?B?c2VOQW5lUFVBSFQ0a1YweHAwL28vMmM2RnpBN2xYam12MzlYNzNRN3BuSmhG?= =?utf-8?B?bUlrdUdQeUpIRmJFT0RWOWkrdkg1ZzZ5RkgwdU5VL1pUSlBSODMrTys4a1kr?= =?utf-8?B?bVpvb3ZJRHMvZWZ2bFFDZlozSnpOMkZ5c1JxT2t5QzNiWWtKN0huTE1jT3F1?= =?utf-8?B?RjYvK3hnUFE2SHJpSDZDZGpDNDZvMGZzbGluaFJrZkNGRXdYVmtpbWZILy81?= =?utf-8?B?Mnl3bHlNQ1hzczdreWgyc21zaGlReE0wdXk4YmZRd0cyWE1lai9kb29GU1Jp?= =?utf-8?B?RUJuaTgxYitGbHV6RG9KNjgxbWVnRXJHZjQ2aUdKWG5xZEN5amdpRkMyekYz?= =?utf-8?B?VjRVTll4NXZydDVGUXRZK1RtU2lXdlNMdSs2Y3FFQmR4WFk2dkFkblN5NGp4?= =?utf-8?B?RXJuOHNVUmRWNTNEUlVkaHRHK2xqbGVqaXhNRThMZU5hTnRSOWRSd0RDR2JG?= =?utf-8?B?cFBCTXQzSmhqaDM1QVJMVFJMVk05cGVjR3Z3R1c0QkdibHp3dnhONjRrbGgx?= =?utf-8?B?Vkl1OGZYbkhkekg0VU5XVFB1ZHZDNHdXRUxhU0l6clF2UUx3QVdTbCs4UDdo?= =?utf-8?B?T2dvVmFaSno5c1F4b1NqKzlOMmNENnlQRFdNQVJSR2NVeFkwMWwzWjJReFJE?= =?utf-8?B?Nkh4LzBCZmZaTmZlZ250TUtMN0pwc2c3aFl5cW5mTy9uU3p2eExUQ3VMb0l2?= =?utf-8?B?a2lMaGlGOUZQUG80WXNUZzRrb254ZjFiUzdnZUtHTnZiWi9TaW04cUljTHRZ?= =?utf-8?B?RW9pUDNpWnhqVUZhT3ExYTU1WFZmbm9QWXVydWF1Z3pzOG5jUXNCSCs0WHVW?= =?utf-8?B?MUphNEFhVDBqZFdLSWpNSG5QYUxvaTkwTFZSSXpTUERRUlBBcE5yZkJTV1N3?= =?utf-8?B?SW1WN0lGTlhyVks2NmduWmsrMEc1cVJxMkg0WWtnd2lCcUhydXY5eWNlOVBB?= =?utf-8?Q?tc6e3cwH1KAal5JFXKzomE2uw?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: e59722f2-6b57-43f5-0d3e-08db1bee9529 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2023 13:52:52.5468 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: xFSLrnT7k8iHw5mLo/LV4vGCY4tjnQpYeykYdfoqJGAJMKazd+aPhD++5jRq6PdZFEdzGasKn08iZ9Y1cPnSkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8403 X-Spam-Status: No, score=-3028.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --------------HLg2ZSucKcrUIIIHYbLiT2ut Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 16.02.2023 10:36, Nelson Chu wrote: > Yeah the logs are too big, so not sure where can be uploaded these > kind of huge files. However, we should get the same result if we just > run the gcc upstream testsuites. Seems many errors but a quick > review, most of them are, > > *Assembler messages: > *Error: register value used as expression > ... Below the tentative updated patch. I haven't got around to seeing whether I can sensibly run gcc's testsuite yet, though. My past experience with doing so for cross builds was quite poor (but that has been quite a while back) ... Attached also the corresponding extended testcase (subject of patch 1 of the series), which I expect is good to have in any event. Jan RISC-V: adjust logic to avoid register name symbols Special casing GPR names in my_getSmallExpression() leads to a number of inconsistencies. Generalize this by utilizing the md_parse_name() hook, limited to when instruction operands are being parsed (really: probed). Then both the GPR lookup there and the yet more ad hoc workaround for PR/gas 29940 can be removed (including its extension needed for making the compressed form JAL work again). --- When a floating point extension (but not [hfdq]inx) is enabled, floating point registers would perhaps better be recognized by riscv_parse_name() as well. Same for vector registers and likely also CSRs. Otherwise inconsistent behavior may (continue to) result when equates come into play, afaict. Considering equates, the new behavior isn't the only sensible one: We could also omit the symbol_find() call, thus never honoring equates. Then, however, even with the "i" insn suffix (or sometimes infix) explicitly specified, equates with names matching a GPR name (or, see above, potentially also other register names) wouldn't be accepted anymore. I guess the primary question here is what the intended (and consistent) behavior is to be. Overall the uses of my_getSmallExpression() vs my_getExpression() look pretty random to me: Is there any underlying principle when which of the two is expected to be used? --- v2: Re-work to not break things like %hi(). --- a/gas/config/tc-riscv.c +++ b/gas/config/tc-riscv.c @@ -171,6 +171,8 @@ static enum float_abi float_abi = FLOAT_ static unsigned elf_flags = 0; +static bool probing_insn_operands; + /* Set the default_isa_spec. Return 0 if the spec isn't supported. Otherwise, return 1. */ @@ -2228,21 +2230,10 @@ my_getSmallExpression (expressionS *ep, char *str, const struct percent_op_match *percent_op) { size_t reloc_index; - unsigned crux_depth, str_depth, regno; + unsigned crux_depth, str_depth; + bool orig_probing = probing_insn_operands; char *crux; - /* First, check for integer registers. No callers can accept a reg, but - we need to avoid accidentally creating a useless undefined symbol below, - if this is an instruction pattern that can't match. A glibc build fails - if this is removed. */ - if (reg_lookup (&str, RCLASS_GPR, ®no)) - { - ep->X_op = O_register; - ep->X_add_number = regno; - expr_parse_end = str; - return 0; - } - /* Search for the start of the main expression. End the loop with CRUX pointing to the start of the main expression and @@ -2265,9 +2256,16 @@ my_getSmallExpression (expressionS *ep, && reloc_index < 1 && parse_relocation (&str, reloc, percent_op)); + /* Anything inside parentheses cannot be a register and hence can be + treated the same as operands to directives (other than .insn). */ + if (str_depth) + probing_insn_operands = false; + my_getExpression (ep, crux); str = expr_parse_end; + probing_insn_operands = orig_probing; + /* Match every open bracket. */ while (crux_depth > 0 && (*str == ')' || *str == ' ' || *str == '\t')) if (*str++ == ')') @@ -2453,6 +2451,13 @@ riscv_is_priv_insn (insn_t insn) || ((insn ^ MATCH_SFENCE_VM) & MASK_SFENCE_VM) == 0); } +static symbolS *deferred_sym_rootP; +static symbolS *deferred_sym_lastP; +/* Since symbols can't easily be freed, try to recycle ones which weren't + committed. */ +static symbolS *orphan_sym_rootP; +static symbolS *orphan_sym_lastP; + /* This routine assembles an instruction into its binary format. As a side effect, it sets the global variable imm_reloc to the type of relocation to do if one of the operands is an address expression. */ @@ -2488,6 +2493,8 @@ riscv_ip (char *str, struct riscv_cl_ins insn = (struct riscv_opcode *) str_hash_find (hash, str); + probing_insn_operands = true; + asargStart = asarg; for ( ; insn && insn->name && strcmp (insn->name, str) == 0; insn++) { @@ -2504,6 +2511,17 @@ riscv_ip (char *str, struct riscv_cl_ins /* Reset error message of the previous round. */ error.msg = _("illegal operands"); error.missing_ext = NULL; + + /* Purge deferred symbols from the previous round, if any. */ + while (deferred_sym_rootP) + { + symbolS *sym = deferred_sym_rootP; + + symbol_remove (sym, &deferred_sym_rootP, &deferred_sym_lastP); + symbol_append (sym, orphan_sym_lastP, &orphan_sym_rootP, + &orphan_sym_lastP); + } + create_insn (ip, insn); imm_expr->X_op = O_absent; @@ -2558,9 +2576,22 @@ riscv_ip (char *str, struct riscv_cl_ins } if (*asarg != '\0') break; + /* Successful assembly. */ error.msg = NULL; insn_with_csr = false; + + /* Commit deferred symbols, if any. */ + while (deferred_sym_rootP) + { + symbolS *sym = deferred_sym_rootP; + + symbol_remove (sym, &deferred_sym_rootP, + &deferred_sym_lastP); + symbol_append (sym, symbol_lastP, &symbol_rootP, + &symbol_lastP); + symbol_table_insert (sym); + } goto out; case 'C': /* RVC */ @@ -2764,8 +2795,6 @@ riscv_ip (char *str, struct riscv_cl_ins case 'p': goto branch; case 'a': - if (oparg == insn->args + 1) - goto jump_check_gpr; goto jump; case 'S': /* Floating-point RS1 x8-x15. */ if (!reg_lookup (&asarg, RCLASS_FPR, ®no) @@ -3270,18 +3299,6 @@ riscv_ip (char *str, struct riscv_cl_ins continue; case 'a': /* 20-bit PC-relative offset. */ - /* Like in my_getSmallExpression() we need to avoid emitting - a stray undefined symbol if the 1st JAL entry doesn't match, - but the 2nd (with 2 operands) might. */ - if (oparg == insn->args) - { - jump_check_gpr: - asargStart = asarg; - if (reg_lookup (&asarg, RCLASS_GPR, NULL) - && (*asarg == ',' || (ISSPACE (*asarg) && asarg[1] == ','))) - break; - asarg = asargStart; - } jump: my_getExpression (imm_expr, asarg); asarg = expr_parse_end; @@ -3504,6 +3521,8 @@ riscv_ip (char *str, struct riscv_cl_ins if (save_c) *(asargStart - 1) = save_c; + probing_insn_operands = false; + return error; } @@ -3800,6 +3819,53 @@ riscv_after_parse_args (void) flag_dwarf_cie_version = 3; } +bool riscv_parse_name (const char *name, struct expressionS *ep, + enum expr_mode mode) +{ + unsigned int regno; + symbolS *sym; + + if (!probing_insn_operands) + return false; + + gas_assert (mode == expr_normal); + + regno = reg_lookup_internal (name, RCLASS_GPR); + if (regno == (unsigned int)-1) + return false; + + if (symbol_find (name) != NULL) + return false; + + /* Create a symbol without adding it to the symbol table yet. + Insertion will happen only once we commit to using the insn + we're probing operands for. */ + for (sym = deferred_sym_rootP; sym; sym = symbol_next (sym)) + if (strcmp (name, S_GET_NAME (sym)) == 0) + break; + if (!sym) + { + for (sym = orphan_sym_rootP; sym; sym = symbol_next (sym)) + if (strcmp (name, S_GET_NAME (sym)) == 0) + { + symbol_remove (sym, &orphan_sym_rootP, &orphan_sym_lastP); + break; + } + if (!sym) + sym = symbol_create (name, undefined_section, + &zero_address_frag, 0); + + symbol_append (sym, deferred_sym_lastP, &deferred_sym_rootP, + &deferred_sym_lastP); + } + + ep->X_op = O_symbol; + ep->X_add_symbol = sym; + ep->X_add_number = 0; + + return true; +} + long md_pcrel_from (fixS *fixP) { --- a/gas/config/tc-riscv.h +++ b/gas/config/tc-riscv.h @@ -123,6 +123,10 @@ extern void riscv_elf_final_processing ( /* Adjust debug_line after relaxation. */ #define DWARF2_USE_FIXED_ADVANCE_PC 1 +#define md_parse_name(name, exp, mode, c) \ + riscv_parse_name (name, exp, mode) +bool riscv_parse_name (const char *, struct expressionS *, enum expr_mode); + #define md_finish riscv_md_finish #define CONVERT_SYMBOLIC_ATTRIBUTE riscv_convert_symbolic_attribute --------------HLg2ZSucKcrUIIIHYbLiT2ut Content-Type: text/plain; charset=UTF-8; name="binutils-master-RISCV-test-no-reg-syms.patch" Content-Disposition: attachment; filename="binutils-master-RISCV-test-no-reg-syms.patch" Content-Transfer-Encoding: base64 UklTQy1WOiB0ZXN0IGZvciBleHBlY3RlZCAvIG5vIHVuZXhwZWN0ZWQgc3ltYm9scwoKQm90aCB0 aGUgdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIFBSL2dhcyAyOTk0MCBhbmQgdGhlIGV4aXN0aW5n IHNwZWNpYWwKY2FzaW5nIG9mIEdQUnMgaW4gbXlfZ2V0U21hbGxFeHByZXNzaW9uKCkgYXJlbid0 IHJlYWxseSB0ZXN0ZWQgYW55d2hlcmUKKGkuZS4gd2l0aCB0aGUgd29ya2Fyb3VuZHMgcmVtb3Zl IHRlc3Rpbmcgd291bGQgc3RpbGwgc3VjY2VlZCkuIE5vciBpcwp0aGVyZSBhbnkgdGVzdCBmb3Ig dXNlcyBvZiBzeW1ib2xzIHdpdGggbmFtZXMgbWF0Y2hpbmcgR1BScywgd2hlcmUgc3VjaAppcyBw ZXJtaXR0ZWQuIEJlZm9yZSBhbHRlcmluZyBob3cgdGhpcyBpcyB0byBiZSBkZWFsdCB3aXRoLCBp bnN0YWxsIHR3bwp0ZXN0Y2FzZXMgY292ZXJpbmcgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLiAoRm9y IG5vdyB0aGlzIGluY2x1ZGVzIG9ubHkKa25vd24gYWZmZWN0ZWQgaW5zbnM7IHJlLW9yZGVyaW5n IG9mIGVudHJpZXMgaW4gcmlzY3Zfb3Bjb2Rlc1tdIGNvdWxkLApob3dldmVyLCB5aWVsZCBtb3Jl IG9mIHRoZW0uKQotLS0KdjI6IEFsc28gaW5jbHVkZSBMVUkgYW5kIExXLgoKLS0tIC9kZXYvbnVs bAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9yaXNjdi9yZWctc3ltcy5kCkBAIC0wLDAgKzEsOCBA QAorI2FzOiAtbWFyY2g9cnYzMmkKKyNubTogLS0KKworMCsgdCBzdGFydAorICtVIHgyCisgK1Ug eDQKKyArVSB4NgorICtVIHg4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2FzL3Rlc3RzdWl0ZS9nYXMv cmlzY3YvcmVnLXN5bXMucwpAQCAtMCwwICsxLDEwIEBACisJLnRleHQKK3N0YXJ0OgorCWFuZAl4 OCwgeDgsIHgxCisJagl4MgorCWphbAl4MywgeDQKKwlsdWkJeDUsICVoaSh4NikKKwlsdwl4Nywg JWxvKHg4KSh4OSkKKwlzbGwJeDEsIHgxLCB4MTAKKwlzcmEJeDgsIHg4LCB4MTEKKwlzcmwJeDgs IHg4LCB4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9nYXMvdGVzdHN1aXRlL2dhcy9yaXNjdi9yZWct c3ltcy1DLmQKQEAgLTAsMCArMSw0IEBACisjYXM6IC1tYXJjaD1ydjMyaWMKKyNzb3VyY2U6IHJl Zy1zeW1zLnMKKyNubTogLS0KKyNkdW1wOiByZWctc3ltcy5kCg== --------------HLg2ZSucKcrUIIIHYbLiT2ut--