From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 047FD3858C78 for ; Thu, 16 Feb 2023 11:20:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 047FD3858C78 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn Received: from loongson.cn (unknown [113.200.148.30]) by gateway (Coremail) with SMTP id _____8AxJ_B1Ee5j804BAA--.3459S3; Thu, 16 Feb 2023 19:20:21 +0800 (CST) Received: from localhost.localdomain (unknown [113.200.148.30]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Bxb+R0Ee5jD400AA--.62042S4; Thu, 16 Feb 2023 19:20:21 +0800 (CST) From: Hui Li To: gdb-patches@sourceware.org Cc: Hui Li Subject: [PATCH 2/2] gdb: LoongArch: Support reg aliases in info reg command Date: Thu, 16 Feb 2023 19:20:20 +0800 Message-Id: <20230216112020.25610-3-lihui@loongson.cn> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20230216112020.25610-1-lihui@loongson.cn> References: <20230216112020.25610-1-lihui@loongson.cn> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:AQAAf8Bxb+R0Ee5jD400AA--.62042S4 X-CM-SenderInfo: 5olk3xo6or00hjvr0hdfq/ X-Coremail-Antispam: 1Uk129KBjvJXoW7KryDAw15WryxKr1UtF1UKFg_yoW8CrWkpF W3uwn3tFy8GrnrArsxt3yYvFZYvrZ7Gry2vFsIy3WfAFsrJ3yI9rs5K34qqF4UGw18KrWj gF4kt3W3uF4UA3DanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj qI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUIcSsGvfJTRUUU b7xYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20xvaj40_Wr0E3s 1l1IIY67AEw4v_JrI_Jryl8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xv wVC0I7IYx2IY67AKxVW5JVW7JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8JVWxJwA2z4 x0Y4vEx4A2jsIE14v26F4UJVW0owA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Cr1j6rxdM2AI xVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx1l5I8CrVACY4xI64 kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r106r15McIj6I8E87Iv67AKxVW8JVWxJwAm 72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2Ij64vIr41l4I8I3I 0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWU GVWUWwC2zVAF1VAY17CE14v26r1Y6r17MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI 0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0 rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r 4UYxBIdaVFxhVjvjDU0xZFpf9x07j0sjUUUUUU= X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,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: According to LoongArch ELF ABI specification [1], support the register aliases in "info register" command. Without this patch: ``` (gdb) info reg a0 Invalid register `a0' ``` With this patch: ``` (gdb) info reg a0 a0 0x1 1 ``` [1] https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_register_convention Signed-off-by: Hui Li --- gdb/loongarch-tdep.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gdb/loongarch-tdep.c b/gdb/loongarch-tdep.c index 67ea5494d90..f5ddad0ba65 100644 --- a/gdb/loongarch-tdep.c +++ b/gdb/loongarch-tdep.c @@ -387,6 +387,14 @@ loongarch_software_single_step (struct regcache *regcache) return {next_pc}; } +/* Callback function for user_reg_add. */ + +static struct value * +value_of_loongarch_user_reg (frame_info_ptr frame, const void *baton) +{ + return value_of_register ((long long) baton, frame); +} + /* Implement the frame_align gdbarch method. */ static CORE_ADDR @@ -1589,6 +1597,19 @@ loongarch_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) info.target_desc = tdesc; info.tdesc_data = tdesc_data.get (); + for (int i = 0; i < ARRAY_SIZE (loongarch_r_lp64_name); ++i) + if (loongarch_r_lp64_name[i][0] != '\0') + user_reg_add (gdbarch, loongarch_r_lp64_name[i] + 1, + value_of_loongarch_user_reg, (void *) (size_t) i); + + for (int i = 0; i < ARRAY_SIZE (loongarch_f_lp64_name); ++i) + { + if (loongarch_f_lp64_name[i][0] != '\0') + user_reg_add (gdbarch, loongarch_f_lp64_name[i] + 1, + value_of_loongarch_user_reg, + (void *) (size_t) (LOONGARCH_FIRST_FP_REGNUM + i)); + } + /* Information about registers. */ set_gdbarch_num_regs (gdbarch, regnum); set_gdbarch_sp_regnum (gdbarch, LOONGARCH_SP_REGNUM); -- 2.38.0