From patchwork Wed Jan 31 08:10:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tiezhu Yang X-Patchwork-Id: 85065 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0C09B3858420 for ; Wed, 31 Jan 2024 08:11:00 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 31E0E3858D1E for ; Wed, 31 Jan 2024 08:10:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 31E0E3858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 31E0E3858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=114.242.206.163 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706688639; cv=none; b=fwUyhHyIfirzLGL6wVqYRC5kmiemiER3xSwJvgbZWdRokBsKfCZj3hoD0AeNRpmT2f1t+UUAtKtGBy1WMxDscRzF/mGxOJ3hNKlvBkSj/s+4FcIbvdc2ELhMDDSj9NgKfrQrUp28Y5bYBrRpnx0o/uDcIYClcBmYmetHsJM2it8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706688639; c=relaxed/simple; bh=9kTXvV/5RX5/9XYpjHby9AIKKz5Yr0jzwERw3d1bVxA=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=YamQw6lMGF95fcyLHEcRa7Qf8UaOZmDJMr/YJAJk80B58dd7yP51IxqOWvbX0SHaTDu1bto/nJn1H86NdPrk5qghyG21UoxnZRYqtLFMdr2tpypDzAQTNSihEQXpmvvhqe4/KNwsTsuDB6/aUhRzb5mSJnvYbVCXPBYlQznBP58= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from loongson.cn (unknown [113.200.148.30]) by gateway (Coremail) with SMTP id _____8Cx77t3ALplxNQIAA--.7071S3; Wed, 31 Jan 2024 16:10:32 +0800 (CST) Received: from linux.localdomain (unknown [113.200.148.30]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Cx_c53ALpl1McpAA--.31028S2; Wed, 31 Jan 2024 16:10:31 +0800 (CST) From: Tiezhu Yang To: gdb-patches@sourceware.org Subject: [PATCH] gdb: LoongArch: Implement the get_syscall_number gdbarch method Date: Wed, 31 Jan 2024 16:10:30 +0800 Message-ID: <20240131081030.18795-1-yangtiezhu@loongson.cn> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 X-CM-TRANSID: AQAAf8Cx_c53ALpl1McpAA--.31028S2 X-CM-SenderInfo: p1dqw3xlh2x3gn0dqz5rrqw2lrqou0/ X-Coremail-Antispam: 1Uk129KBj93XoW7tF15CFWxWryxCrWfXF4DJrc_yoW8uF15pF W3uw13Jr48GrnrArnxXw1UuFW5uF97WrWYvF4Skan8Cr4DGw1xuw4kWFyUJF1UCw1Sgry2 qr4vy34UuFs5ZFXCm3ZEXasCq-sJn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUkFb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AK xVW8Jr0_Cr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l57IF6xkI12xvs2x26I8E6xACxx 1l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv 67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IYc2Ij64vIr41l42xK82IYc2 Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s02 6x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1j6r15MIIYrxkI7VAKI48JMIIF0x vE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE 42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6x kF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07UE-erUUUUU= X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, 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: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org In the current code, the feature 'catch syscall' is not supported on LoongArch, implement the "get_syscall_number" gdbarch method to get the system call number from the register a7. Without this patch: (gdb) catch syscall The feature 'catch syscall' is not supported on this architecture yet. Signed-off-by: Tiezhu Yang --- gdb/loongarch-linux-tdep.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/gdb/loongarch-linux-tdep.c b/gdb/loongarch-linux-tdep.c index 47f36a18931..54c3684eb46 100644 --- a/gdb/loongarch-linux-tdep.c +++ b/gdb/loongarch-linux-tdep.c @@ -297,6 +297,31 @@ loongarch_linux_syscall_next_pc (frame_info_ptr frame) return pc + 4; } +/* Implement the "get_syscall_number" gdbarch method. */ + +static LONGEST +loongarch_linux_get_syscall_number (struct gdbarch *gdbarch, thread_info *thread) +{ + struct regcache *regcache = get_thread_regcache (thread); + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + int regsize = register_size (gdbarch, LOONGARCH_A7_REGNUM); + /* The content of a register. */ + gdb_byte buf[8]; + /* The result. */ + LONGEST ret; + + gdb_assert (regsize <= sizeof (buf)); + + /* Getting the system call number from the register. + When dealing with the LoongArch architecture, this information + is stored at the a7 register. */ + regcache->cooked_read (LOONGARCH_A7_REGNUM, buf); + + ret = extract_signed_integer (buf, regsize, byte_order); + + return ret; +} + /* Initialize LoongArch Linux ABI info. */ static void @@ -327,6 +352,9 @@ loongarch_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_iterate_over_regset_sections (gdbarch, loongarch_iterate_over_regset_sections); tdep->syscall_next_pc = loongarch_linux_syscall_next_pc; + + /* Get the syscall number from the arch's register. */ + set_gdbarch_get_syscall_number (gdbarch, loongarch_linux_get_syscall_number); } /* Initialize LoongArch Linux target support. */