From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.esisar.grenoble-inp.fr (mx1.esisar.grenoble-inp.fr [195.220.36.133]) by sourceware.org (Postfix) with ESMTPS id 3BD1F3858C50 for ; Fri, 26 Apr 2024 08:12:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3BD1F3858C50 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=lcis.grenoble-inp.fr Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=lcis.grenoble-inp.fr ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 3BD1F3858C50 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.220.36.133 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1714119180; cv=none; b=aK+RdtVU0mmTBzXapE2EW2WuXwWOvKhAzlGV4mxbPg1RBnyLP3R0ukX1x8Gt4GGFAezB+0pcVcYGy3myPACuvXYc2TsVUiKoSYCxN6qo6wJU9ljLQXFNlJrltK/zPJZGwe5qp7T4D+Ltsr8ypZ+76YMTWNmKyJ7oY/DV7FyDXVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1714119180; c=relaxed/simple; bh=3LGnAqyCLBrushY+ELilWtLerGkGFD0ftNDTxUw6Qq4=; h=DKIM-Signature:DKIM-Signature:Message-ID:Date:MIME-Version: Subject:To:From; b=Pp55bcIJAyuF0HFQuZXjKjw/sxc6grxmBRWLuxBXzFeuhVsTB+5UBW4wjULfG65rSRb95Mi/mrK7MGIQPcoFXNFx9jkr83bItdUZkeb+C2CvI+7G4nBrZ3VNekd30f72zBGmmZSOwcQweWL3L8qPqRF0UkL7KMMzhbvW8a9QK4k= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from localhost (localhost [127.0.0.1]) by mx1.esisar.grenoble-inp.fr (Postfix) with ESMTP id 79EAA223AB4 for ; Fri, 26 Apr 2024 10:12:56 +0200 (CEST) Received: from mx1.esisar.grenoble-inp.fr ([127.0.0.1]) by localhost (mx1.esisar.grenoble-inp.fr [127.0.0.1]) (amavis, port 10032) with ESMTP id bHpEQqNZnynE for ; Fri, 26 Apr 2024 10:12:56 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mx1.esisar.grenoble-inp.fr (Postfix) with ESMTP id 3CE1C223ABC for ; Fri, 26 Apr 2024 10:12:56 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 mx1.esisar.grenoble-inp.fr 3CE1C223ABC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lcis.grenoble-inp.fr; s=249EBAA6-1FF3-11E5-9F2E-E6FCA23003BF; t=1714119176; bh=+DUG5JKA9ry2EOLuaBchD16xzjXdK+VQ4u13YqeoWOk=; h=Message-ID:Date:MIME-Version:To:From; b=lde2fPvs+xzLEdhwt0wtpji7g2C6pTHYfvNpONWibia1F9UVyPb2UTBB3VxlHE184 ytgSiIfduAqM5or4hjTtD5tCh5dyRd9017XBn5Fmz05IWag9iP8jiLxyL1soqlUUJK rVydAX2kyfD9IrV7JuMm0KSj1ciI+tICmjJvbkTs= X-Virus-Scanned: amavis at mx1.esisar.grenoble-inp.fr Received: from mx1.esisar.grenoble-inp.fr ([127.0.0.1]) by localhost (mx1.esisar.grenoble-inp.fr [127.0.0.1]) (amavis, port 10026) with ESMTP id gcSwkNCtmUEb for ; Fri, 26 Apr 2024 10:12:56 +0200 (CEST) Received: from srv-zimbra.esisar.grenoble-inp.fr (unknown [172.21.100.139]) by mx1.esisar.grenoble-inp.fr (Postfix) with ESMTPS id 2A443223AB4 for ; Fri, 26 Apr 2024 10:12:56 +0200 (CEST) Received: from srv-zimbra.esisar.grenoble-inp.fr (localhost [127.0.0.1]) by srv-zimbra.esisar.grenoble-inp.fr (Postfix) with ESMTPS id 1D84D6E00D6 for ; Fri, 26 Apr 2024 10:12:56 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by srv-zimbra.esisar.grenoble-inp.fr (Postfix) with ESMTP id 165CF6E0335 for ; Fri, 26 Apr 2024 10:12:56 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.10.3 srv-zimbra.esisar.grenoble-inp.fr 165CF6E0335 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lcis.grenoble-inp.fr; s=249EBAA6-1FF3-11E5-9F2E-E6FCA23003BF; t=1714119176; bh=+DUG5JKA9ry2EOLuaBchD16xzjXdK+VQ4u13YqeoWOk=; h=Message-ID:Date:MIME-Version:To:From; b=lde2fPvs+xzLEdhwt0wtpji7g2C6pTHYfvNpONWibia1F9UVyPb2UTBB3VxlHE184 ytgSiIfduAqM5or4hjTtD5tCh5dyRd9017XBn5Fmz05IWag9iP8jiLxyL1soqlUUJK rVydAX2kyfD9IrV7JuMm0KSj1ciI+tICmjJvbkTs= X-Virus-Scanned: amavis at srv-zimbra.esisar.grenoble-inp.fr Received: from srv-zimbra.esisar.grenoble-inp.fr ([127.0.0.1]) by localhost (srv-zimbra.esisar.grenoble-inp.fr [127.0.0.1]) (amavis, port 10026) with ESMTP id PmzjTwxggwVZ for ; Fri, 26 Apr 2024 10:12:56 +0200 (CEST) Received: from [192.168.1.25] (abordeaux-157-1-49-251.w90-16.abo.wanadoo.fr [90.16.220.251]) by srv-zimbra.esisar.grenoble-inp.fr (Postfix) with ESMTPSA id EB6896E00D6 for ; Fri, 26 Apr 2024 10:12:55 +0200 (CEST) Message-ID: <2ecb6676-fab7-4f7b-96d0-f867990f2f60@lcis.grenoble-inp.fr> Date: Fri, 26 Apr 2024 10:13:14 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PING] [PATCH v2] gdb: specify sh pointer register types To: gdb-patches@sourceware.org References: <20240401100740.939986-1-sebastien.michelland@lcis.grenoble-inp.fr> Content-Language: fr, en-US From: =?UTF-8?Q?S=C3=A9bastien_Michelland?= In-Reply-To: <20240401100740.939986-1-sebastien.michelland@lcis.grenoble-inp.fr> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,GIT_PATCH_0,JMQ_SPF_NEUTRAL,SPF_HELO_NONE,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: Hi everyone, kindly pinging for process for this patch. Simon approved the approach on a previous version but this one still=20 needs validation, and ultimately a push if accepted. I understand there is little maintenance going on for the sh target. Is=20 there additional testing I should do to help with this patch? On 2024-04-01 11:55, S=C3=A9bastien Michelland wrote: > This patch fixes a pretty funny issue on sh targets that occurred > because $pc (and similar registers) were typed as int. When $pc is in > the upper half of the address space (i.e. kernel code on sh), `x/i $pc' > would resolve to a negative value. At least in the case of a remote > target with an Xfer memory map, this leads to a spurious "cannot access > memory" error as negative addresses are out of bounds. >=20 > (gdb) x/i $pc > 0x8c202c04: Cannot access memory at address 0x8c202c04 > (gdb) x/i 0x8c202c04 > =3D> 0x8c202c04 : mov.l @r1,r10 >=20 > The issue is fixed by specifying pointer types for pc and other pointer > registers. Code pointer registers on sh include pc, pr (return address > of a call), vbr (interrupt handler) and spc (return address after > interrupt). Data pointers include r15 (stack pointer) and gbr (base > register for a few specific addressing modes). > --- >=20 > Compared to v1, this patch applies to all sh architectures. It also add= s > r15 (stack pointer) as a data pointer and sets gbr to a data rather tha= n > code pointer (which was a mistake). >=20 > gdb/sh-tdep.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) >=20 > diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c > index 1c67ea42..b76efa3a 100644 > --- a/gdb/sh-tdep.c > +++ b/gdb/sh-tdep.c > @@ -1400,6 +1400,11 @@ sh_sh2a_register_type (struct gdbarch *gdbarch, = int reg_nr) > return builtin_type (gdbarch)->builtin_float; > else if (reg_nr >=3D DR0_REGNUM && reg_nr <=3D DR_LAST_REGNUM) > return builtin_type (gdbarch)->builtin_double; > + else if (reg_nr =3D=3D PC_REGNUM || reg_nr =3D=3D PR_REGNUM || reg_n= r =3D=3D VBR_REGNUM > + || reg_nr =3D=3D SPC_REGNUM) > + return builtin_type (gdbarch)->builtin_func_ptr; > + else if (reg_nr =3D=3D R0_REGNUM+15 || reg_nr =3D=3D GBR_REGNUM) > + return builtin_type (gdbarch)->builtin_data_ptr; > else > return builtin_type (gdbarch)->builtin_int; > } > @@ -1412,6 +1417,11 @@ sh_sh3e_register_type (struct gdbarch *gdbarch, = int reg_nr) > if ((reg_nr >=3D gdbarch_fp0_regnum (gdbarch) > && (reg_nr <=3D FP_LAST_REGNUM)) || (reg_nr =3D=3D FPUL_REGNUM= )) > return builtin_type (gdbarch)->builtin_float; > + else if (reg_nr =3D=3D PC_REGNUM || reg_nr =3D=3D PR_REGNUM || reg_n= r =3D=3D VBR_REGNUM > + || reg_nr =3D=3D SPC_REGNUM) > + return builtin_type (gdbarch)->builtin_func_ptr; > + else if (reg_nr =3D=3D R0_REGNUM+15 || reg_nr =3D=3D GBR_REGNUM) > + return builtin_type (gdbarch)->builtin_data_ptr; > else > return builtin_type (gdbarch)->builtin_int; > } > @@ -1433,6 +1443,11 @@ sh_sh4_register_type (struct gdbarch *gdbarch, i= nt reg_nr) > return builtin_type (gdbarch)->builtin_double; > else if (reg_nr >=3D FV0_REGNUM && reg_nr <=3D FV_LAST_REGNUM) > return sh_sh4_build_float_register_type (gdbarch, 3); > + else if (reg_nr =3D=3D PC_REGNUM || reg_nr =3D=3D PR_REGNUM || reg_n= r =3D=3D VBR_REGNUM > + || reg_nr =3D=3D SPC_REGNUM) > + return builtin_type (gdbarch)->builtin_func_ptr; > + else if (reg_nr =3D=3D R0_REGNUM+15 || reg_nr =3D=3D GBR_REGNUM) > + return builtin_type (gdbarch)->builtin_data_ptr; > else > return builtin_type (gdbarch)->builtin_int; > } > @@ -1440,7 +1455,13 @@ sh_sh4_register_type (struct gdbarch *gdbarch, i= nt reg_nr) > static struct type * > sh_default_register_type (struct gdbarch *gdbarch, int reg_nr) > { > - return builtin_type (gdbarch)->builtin_int; > + if (reg_nr =3D=3D PC_REGNUM || reg_nr =3D=3D PR_REGNUM || reg_nr =3D= =3D VBR_REGNUM > + || reg_nr =3D=3D SPC_REGNUM) > + return builtin_type (gdbarch)->builtin_func_ptr; > + else if (reg_nr =3D=3D R0_REGNUM+15 || reg_nr =3D=3D GBR_REGNUM) > + return builtin_type (gdbarch)->builtin_data_ptr; > + else > + return builtin_type (gdbarch)->builtin_int; > } > =20 > /* Is a register in a reggroup?