From patchwork Fri May 19 03:48:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liao Shihua X-Patchwork-Id: 96180 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp964541vqo; Thu, 18 May 2023 20:51:49 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ50/25Pmd+hPwPODXaDc8iCWtUcC2EJvUb6bwfRdHTFMRPZ3xWwa+symUMEKoy/lFB9j1FR X-Received: by 2002:a17:907:3e92:b0:969:e88a:6071 with SMTP id hs18-20020a1709073e9200b00969e88a6071mr318039ejc.61.1684468309345; Thu, 18 May 2023 20:51:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684468309; cv=none; d=google.com; s=arc-20160816; b=Fwt7rRSZCO4f4S0JvTCGY0TJA7TIsSq5/fyT2+9sbyXbLpN+S87dMx1g8ISq7M7g84 k8z0lyoWi8UbhoHToiYsr1X2XtsEThB0uE0qt5xanSs5dfBb+/GVHFvSDYje1GdfsCPP Y2nM8VtMuADCPURuBtgSmRCId/4JZ+ggfENbfghqGxyUFmsqISAC5tcJNzRtN+Ka8HFX c88d2a7tN0siLZd4xTTqOBeeZqBnm5czp/omeQC+A2+z5a0hF+cW1f7JRGDe/R+a0cAs DU7K9iLAuAGc5qudVC1lCuVh+CmNj1+Qya9meYNu5sbOmxCmHlXgDzPClcutMOOlR4mF OEwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dmarc-filter:delivered-to; bh=Q53dZsziDozFpuKzvIVYTZ019eGU/GbenIdtDr8r6Ss=; b=iBfH34reF+zqaXrbgatGRoufb42kM9pqBQk23Rm7XWa65uyB9ptdD+5XcsnYcNzHld 07wpQ0Dl77Ya2xuk1qtw+QO+jXiGp64tRxzs7biuuU8kvmxdbIiIDZpXYSe06RRmdbqd 41xXAX/0G7VjGuvDGI50AxJbd/mMemdlFU906yHlntFeeccha5ISkkG4s2Zm5PHFQZ+3 H/oppaLa4FmOne2REBYFHS5H8mftWvcL9TxYwefiVozLr8kxaVaGGKsxQUQvRcx7snqH rLoD9TPEbwxCs52I5YA8h7IQ0TtPNd5WShYFtMIcaN0bVhSsIEt0DR/Qr+VAIa33lIoP H5ag== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id e19-20020a170906c01300b0096a27ebb5f5si2389224ejz.793.2023.05.18.20.51.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 May 2023 20:51:49 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 181773888C59 for ; Fri, 19 May 2023 03:49:59 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from cstnet.cn (smtp25.cstnet.cn [159.226.251.25]) by sourceware.org (Postfix) with ESMTPS id 0BEB8384643E for ; Fri, 19 May 2023 03:49:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0BEB8384643E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from localhost.localdomain (unknown [39.170.88.238]) by APP-05 (Coremail) with SMTP id zQCowAAHuxGt8WZk_iYmAQ--.24085S6; Fri, 19 May 2023 11:49:04 +0800 (CST) From: Liao Shihua To: binutils@sourceware.org Cc: kito.cheng@sifive.com, jiawei@iscas.ac.cn, palmer@dabbelt.com, guoren@kernel.org, wuwei2016@iscas.ac.cn, shiyulong@iscas.ac.cn, chenyixuan@iscas.ac.cn, Liao Shihua Subject: [RFC PATCH 4/4] gdb/riscv : Add rv64 ilp32 support in gdb Date: Fri, 19 May 2023 11:48:35 +0800 Message-Id: <20230519034835.664-5-shihua@iscas.ac.cn> X-Mailer: git-send-email 2.38.1.windows.1 In-Reply-To: <20230519034835.664-1-shihua@iscas.ac.cn> References: <20230519034835.664-1-shihua@iscas.ac.cn> MIME-Version: 1.0 X-CM-TRANSID: zQCowAAHuxGt8WZk_iYmAQ--.24085S6 X-Coremail-Antispam: 1UD129KBjvJXoWxXFy8Kry8Zw1fKF47tFy7ZFb_yoW5uryUpr 4rC3ZxArs8WF1xCay3Ars7uF4rXr1vg3yYvr1DAw45JFn8W3yfuFs5u3WIkrsrJa4F9F13 ua1DKryUZw4UAw7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUBj14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI kIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2 z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Cr0_Gr 1UM28EF7xvwVC2z280aVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Cr1j 6rxdM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6x IIjxv20xvE14v26r106r15McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_ Gr1lF7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxAIw28IcxkI7VAKI4 8JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xv wVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8ZwCIc40Y0x0EwIxGrwCI42IY6xIIjx v20xvE14v26r1I6r4UMIIF0xvE2Ix0cI8IcVCY1x0267AKxVWxJVW8Jr1lIxAIcVCF04k2 6cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r4j6F4UMIIF0xvEx4A2jsIEc7CjxV AFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0xZFpf9x0JUArcfUUUUU= X-Originating-IP: [39.170.88.238] X-CM-SenderInfo: xvklx33d6l2u1dvotugofq/1tbiCg0QEWRmxtSiigAAs+ X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1766293041577302510?= X-GMAIL-MSGID: =?utf-8?q?1766293041577302510?= This patch supports rv64 ilp32 in gdb. I know should send it to gdb maillist, but due to its close correlation with the previous patch, it is temporarily placed here. It add a new gdb features abi_xlen. ChangeLog: * gdb/arch/riscv.h (struct riscv_gdbarch_features):Add abi_xlen . * gdb/riscv-tdep.c (riscv_abi_xlen):Likewise (riscv_features_from_bfd):Likewise (riscv_gdbarch_init):change long_bit by abi_xlen. --- gdb/arch/riscv.h | 10 +++++++++- gdb/riscv-tdep.c | 20 ++++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/gdb/arch/riscv.h b/gdb/arch/riscv.h index 54610ed6c16..a41faba1168 100644 --- a/gdb/arch/riscv.h +++ b/gdb/arch/riscv.h @@ -41,6 +41,12 @@ struct riscv_gdbarch_features uninitialised. */ int xlen = 0; + /* The size of the pointer_size in bytes. This is either 4 (ILP32), 8 + (LP64). No other value is valid. Initialise to the + invalid 0 value so we can spot if one of these is used + uninitialised. */ + int abi_xlen = 0; + /* The size of the f-registers in bytes. This is either 4 (RV32), 8 (RV64), or 16 (RV128). This can also hold the value 0 to indicate that there are no f-registers. No other value is valid. */ @@ -68,6 +74,7 @@ struct riscv_gdbarch_features bool operator== (const struct riscv_gdbarch_features &rhs) const { return (xlen == rhs.xlen && flen == rhs.flen + && abi_xlen == rhs.abi_xlen && embedded == rhs.embedded && vlen == rhs.vlen && has_fflags_reg == rhs.has_fflags_reg && has_frm_reg == rhs.has_frm_reg @@ -88,8 +95,9 @@ struct riscv_gdbarch_features | (has_frm_reg ? 1 : 0) << 12 | (has_fcsr_reg ? 1 : 0) << 13 | (xlen & 0x1f) << 5 + | (abi_xlen & 0x1f) << 14 | (flen & 0x1f) << 0 - | (vlen & 0xfff) << 14); + | (vlen & 0xfff) << 19); return val; } }; diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c index 500279e1ae9..d4531896cc1 100644 --- a/gdb/riscv-tdep.c +++ b/gdb/riscv-tdep.c @@ -774,7 +774,7 @@ int riscv_abi_xlen (struct gdbarch *gdbarch) { riscv_gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - return tdep->abi_features.xlen; + return tdep->abi_features.abi_xlen; } /* See riscv-tdep.h. */ @@ -3835,9 +3835,15 @@ riscv_features_from_bfd (const bfd *abfd) int e_flags = elf_elfheader (abfd)->e_flags; if (eclass == ELFCLASS32) - features.xlen = 4; + { + features.xlen == 4; + features.abi_xlen = 4; + } else if (eclass == ELFCLASS64) - features.xlen = 8; + { + features.xlen == 8; + features.abi_xlen = 8; + } else internal_error (_("unknown ELF header class %d"), eclass); @@ -3846,6 +3852,12 @@ riscv_features_from_bfd (const bfd *abfd) else if (e_flags & EF_RISCV_FLOAT_ABI_SINGLE) features.flen = 4; + if (e_flags & EF_RISCV_X32) + { + features.xlen == 8; + features.abi_xlen = 4; + } + if (e_flags & EF_RISCV_RVE) { if (features.xlen == 8) @@ -4175,7 +4187,7 @@ riscv_gdbarch_init (struct gdbarch_info info, /* Target data types. */ set_gdbarch_short_bit (gdbarch, 16); set_gdbarch_int_bit (gdbarch, 32); - set_gdbarch_long_bit (gdbarch, riscv_isa_xlen (gdbarch) * 8); + set_gdbarch_long_bit (gdbarch, riscv_abi_xlen (gdbarch) * 8); set_gdbarch_long_long_bit (gdbarch, 64); set_gdbarch_float_bit (gdbarch, 32); set_gdbarch_double_bit (gdbarch, 64);