Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Fredrik Hederstierna via Gdb-patches <gdb-patches@sourceware.org>
To: Alan Hayward <Alan.Hayward@arm.com>, Mike Frysinger <vapier@gentoo.org>
Cc: Simon Marchi <simark@simark.ca>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
	Paul Mathieu <paulmathieu@google.com>
Subject: Re: [PATCH] sim: arm: add support for handling core dumps
Date: Tue, 29 Jun 2021 09:11:41 +0000	[thread overview]
Message-ID: <AM8PR10MB4658D3C91F33BF99B1A07C0CEF029@AM8PR10MB4658.EURPRD10.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <36F6111C-FF52-4002-8B5F-5758F09F1859@arm.com>

I reviewed comments and decided to make a complete retake on this.
Here is a patch that adds IDs for D0-D31, then let any calling ARM simulator implementation handle the results.

I tested 'gcore' on target sim for ARM on this, and it worked well on my tests.
I also understood better why I got these 4GB corefiles, since I did not set SP (ARM simulator is not supporting Cortex),
so as SP was 0, then after some calls, the SP was like 0xFFFFFFxx, so stack was like 4GB up in memory space.
When I added code lines at start to set SP to a lower address, the corefile was getting smaller correct size.

BR Fredrik


diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index 857a52a9a51..2593d89269f 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -4246,6 +4246,9 @@ arm_register_sim_regno (struct gdbarch *gdbarch, int regnum)
   if (regnum >= ARM_WCGR0_REGNUM && regnum <= ARM_WCGR7_REGNUM)
     return regnum - ARM_WCGR0_REGNUM + SIM_ARM_IWMMXT_COP1R8_REGNUM;
 
+  if (regnum >= ARM_D0_REGNUM && regnum <= ARM_FPSCR_REGNUM)
+      return regnum - ARM_D0_REGNUM + SIM_ARM_D0_REGNUM;
+
   if (reg < NUM_GREGS)
     return SIM_ARM_R0_REGNUM + reg;
   reg -= NUM_GREGS;
diff --git a/include/gdb/sim-arm.h b/include/gdb/sim-arm.h
index 8aafa045a0e..28d336be525 100644
--- a/include/gdb/sim-arm.h
+++ b/include/gdb/sim-arm.h
@@ -98,7 +98,41 @@ enum sim_arm_regs
   SIM_ARM_IWMMXT_COP1R12_REGNUM,
   SIM_ARM_IWMMXT_COP1R13_REGNUM,
   SIM_ARM_IWMMXT_COP1R14_REGNUM,
-  SIM_ARM_IWMMXT_COP1R15_REGNUM
+  SIM_ARM_IWMMXT_COP1R15_REGNUM,
+  SIM_ARM_D0_REGNUM,
+  SIM_ARM_D1_REGNUM,
+  SIM_ARM_D2_REGNUM,
+  SIM_ARM_D3_REGNUM,
+  SIM_ARM_D4_REGNUM,
+  SIM_ARM_D5_REGNUM,
+  SIM_ARM_D6_REGNUM,
+  SIM_ARM_D7_REGNUM,
+  SIM_ARM_D8_REGNUM,
+  SIM_ARM_D9_REGNUM,
+  SIM_ARM_D10_REGNUM,
+  SIM_ARM_D11_REGNUM,
+  SIM_ARM_D12_REGNUM,
+  SIM_ARM_D13_REGNUM,
+  SIM_ARM_D14_REGNUM,
+  SIM_ARM_D15_REGNUM,
+  SIM_ARM_D16_REGNUM,
+  SIM_ARM_D17_REGNUM,
+  SIM_ARM_D18_REGNUM,
+  SIM_ARM_D19_REGNUM,
+  SIM_ARM_D20_REGNUM,
+  SIM_ARM_D21_REGNUM,
+  SIM_ARM_D22_REGNUM,
+  SIM_ARM_D23_REGNUM,
+  SIM_ARM_D24_REGNUM,
+  SIM_ARM_D25_REGNUM,
+  SIM_ARM_D26_REGNUM,
+  SIM_ARM_D27_REGNUM,
+  SIM_ARM_D28_REGNUM,
+  SIM_ARM_D29_REGNUM,
+  SIM_ARM_D30_REGNUM,
+  SIM_ARM_D31_REGNUM,
+  SIM_ARM_FPSCR_REGNUM,
+  SIM_ARM_NUM_REGS
 };
 
 #endif
diff --git a/sim/arm/wrapper.c b/sim/arm/wrapper.c
index e697d55a6b5..69c5905b1ff 100644
--- a/sim/arm/wrapper.c
+++ b/sim/arm/wrapper.c
@@ -418,6 +418,12 @@ arm_reg_store (SIM_CPU *cpu, int rn, unsigned char *memory, int length)
 {
   init ();
 
+  if (rn >= SIM_ARM_NUM_REGS)
+    {
+      sim_io_eprintf (CPU_STATE (cpu), "Invalid register %d (register store ignored)\n", rn);
+      return 0;
+    }
+
   switch ((enum sim_arm_regs) rn)
     {
     case SIM_ARM_R0_REGNUM:
@@ -509,7 +515,47 @@ arm_reg_store (SIM_CPU *cpu, int rn, unsigned char *memory, int length)
     case SIM_ARM_IWMMXT_COP1R13_REGNUM:
     case SIM_ARM_IWMMXT_COP1R14_REGNUM:
     case SIM_ARM_IWMMXT_COP1R15_REGNUM:
-      return Store_Iwmmxt_Register (rn - SIM_ARM_IWMMXT_COP0R0_REGNUM, memory);
+      if (state->is_iWMMXt)
+        {
+          return Store_Iwmmxt_Register (rn - SIM_ARM_IWMMXT_COP0R0_REGNUM, memory);
+        }
+      return 0;
+
+    case SIM_ARM_D0_REGNUM:
+    case SIM_ARM_D1_REGNUM:
+    case SIM_ARM_D2_REGNUM:
+    case SIM_ARM_D3_REGNUM:
+    case SIM_ARM_D4_REGNUM:
+    case SIM_ARM_D5_REGNUM:
+    case SIM_ARM_D6_REGNUM:
+    case SIM_ARM_D7_REGNUM:
+    case SIM_ARM_D8_REGNUM:
+    case SIM_ARM_D9_REGNUM:
+    case SIM_ARM_D10_REGNUM:
+    case SIM_ARM_D11_REGNUM:
+    case SIM_ARM_D12_REGNUM:
+    case SIM_ARM_D13_REGNUM:
+    case SIM_ARM_D14_REGNUM:
+    case SIM_ARM_D15_REGNUM:
+    case SIM_ARM_D16_REGNUM:
+    case SIM_ARM_D17_REGNUM:
+    case SIM_ARM_D18_REGNUM:
+    case SIM_ARM_D19_REGNUM:
+    case SIM_ARM_D20_REGNUM:
+    case SIM_ARM_D21_REGNUM:
+    case SIM_ARM_D22_REGNUM:
+    case SIM_ARM_D23_REGNUM:
+    case SIM_ARM_D24_REGNUM:
+    case SIM_ARM_D25_REGNUM:
+    case SIM_ARM_D26_REGNUM:
+    case SIM_ARM_D27_REGNUM:
+    case SIM_ARM_D28_REGNUM:
+    case SIM_ARM_D29_REGNUM:
+    case SIM_ARM_D30_REGNUM:
+    case SIM_ARM_D31_REGNUM:
+    case SIM_ARM_FPSCR_REGNUM:
+      /* The current GDB ARM simulator does not support D0-D31 nor FPSCR.  */
+      return 0;
 
     default:
       return 0;
@@ -526,6 +572,12 @@ arm_reg_fetch (SIM_CPU *cpu, int rn, unsigned char *memory, int length)
 
   init ();
 
+  if (rn >= SIM_ARM_NUM_REGS)
+    {
+      sim_io_eprintf (CPU_STATE (cpu), "Invalid register %d (register fetch ignored)\n", rn);
+      return 0;
+    }
+
   switch ((enum sim_arm_regs) rn)
     {
     case SIM_ARM_R0_REGNUM:
@@ -619,7 +671,47 @@ arm_reg_fetch (SIM_CPU *cpu, int rn, unsigned char *memory, int length)
     case SIM_ARM_IWMMXT_COP1R13_REGNUM:
     case SIM_ARM_IWMMXT_COP1R14_REGNUM:
     case SIM_ARM_IWMMXT_COP1R15_REGNUM:
-      return Fetch_Iwmmxt_Register (rn - SIM_ARM_IWMMXT_COP0R0_REGNUM, memory);
+      if (state->is_iWMMXt)
+        {
+          return Fetch_Iwmmxt_Register (rn - SIM_ARM_IWMMXT_COP0R0_REGNUM, memory);
+        }
+      return 0;
+
+    case SIM_ARM_D0_REGNUM:
+    case SIM_ARM_D1_REGNUM:
+    case SIM_ARM_D2_REGNUM:
+    case SIM_ARM_D3_REGNUM:
+    case SIM_ARM_D4_REGNUM:
+    case SIM_ARM_D5_REGNUM:
+    case SIM_ARM_D6_REGNUM:
+    case SIM_ARM_D7_REGNUM:
+    case SIM_ARM_D8_REGNUM:
+    case SIM_ARM_D9_REGNUM:
+    case SIM_ARM_D10_REGNUM:
+    case SIM_ARM_D11_REGNUM:
+    case SIM_ARM_D12_REGNUM:
+    case SIM_ARM_D13_REGNUM:
+    case SIM_ARM_D14_REGNUM:
+    case SIM_ARM_D15_REGNUM:
+    case SIM_ARM_D16_REGNUM:
+    case SIM_ARM_D17_REGNUM:
+    case SIM_ARM_D18_REGNUM:
+    case SIM_ARM_D19_REGNUM:
+    case SIM_ARM_D20_REGNUM:
+    case SIM_ARM_D21_REGNUM:
+    case SIM_ARM_D22_REGNUM:
+    case SIM_ARM_D23_REGNUM:
+    case SIM_ARM_D24_REGNUM:
+    case SIM_ARM_D25_REGNUM:
+    case SIM_ARM_D26_REGNUM:
+    case SIM_ARM_D27_REGNUM:
+    case SIM_ARM_D28_REGNUM:
+    case SIM_ARM_D29_REGNUM:
+    case SIM_ARM_D30_REGNUM:
+    case SIM_ARM_D31_REGNUM:
+    case SIM_ARM_FPSCR_REGNUM:
+      /* The current GDB ARM simulator does not support D0-D31 nor FPSCR.  */
+      return 0;
 
     default:
       return 0;



  reply	other threads:[~2021-06-29  9:12 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-17  0:02 [PATCH] gdb: add support for handling core dumps on arm-none-eabi Fredrik Hederstierna via Gdb-patches
2020-10-19  2:08 ` Simon Marchi
2020-10-19 13:13   ` Luis Machado via Gdb-patches
2020-10-19 13:15   ` Alan Hayward via Gdb-patches
2020-10-19 15:25   ` Paul Mathieu via Gdb-patches
2020-10-20 11:41     ` Fredrik Hederstierna via Gdb-patches
2020-10-20 12:39       ` Simon Marchi
2020-10-20 14:00         ` Fredrik Hederstierna via Gdb-patches
2020-10-20 15:04           ` Simon Marchi
2020-10-20 22:05             ` Fredrik Hederstierna via Gdb-patches
2020-10-20 23:06               ` Simon Marchi
2020-10-22  0:52                 ` Fredrik Hederstierna via Gdb-patches
2020-10-22  1:24                   ` Simon Marchi
2020-10-22  1:49                   ` Simon Marchi
2020-10-22 22:32                     ` Fredrik Hederstierna via Gdb-patches
2020-10-23  0:37                       ` Simon Marchi
2020-10-25 21:06                         ` Fredrik Hederstierna via Gdb-patches
2020-10-26 11:24                           ` Luis Machado via Gdb-patches
2020-10-26 15:49                             ` Fredrik Hederstierna via Gdb-patches
2020-10-27 16:53                               ` Paul Mathieu via Gdb-patches
2021-01-14 12:36                                 ` Fredrik Hederstierna via Gdb-patches
2021-01-14 12:50                                   ` Luis Machado via Gdb-patches
2021-01-18 11:09                                     ` Andrew Burgess
2021-01-18 14:01                                       ` Luis Machado via Gdb-patches
2021-06-21  6:30                                         ` [PATCH] sim: arm: add support for handling core dumps Fredrik Hederstierna via Gdb-patches
2021-06-22  3:20                                           ` Mike Frysinger via Gdb-patches
2021-06-24 13:01                                             ` Alan Hayward via Gdb-patches
2021-06-29  9:11                                               ` Fredrik Hederstierna via Gdb-patches [this message]
2021-01-18 11:01                                   ` [PATCH] gdb: add support for handling core dumps on arm-none-eabi Andrew Burgess
2021-06-22  2:16                           ` Mike Frysinger via Gdb-patches
2020-10-20 19:34       ` [PATCH] gdb: Support corefiles for arm-none-eabi Fredrik Hederstierna
2020-10-20 21:49       ` Fredrik Hederstierna
2020-10-20 21:58       ` [PATCH v2] Support for corefiles for arm-none-eabi target Fredrik Hederstierna
2020-10-21  2:51         ` Simon Marchi
2020-10-21 14:38         ` Luis Machado via Gdb-patches
2020-10-22  0:44       ` [PATCH v3][PR gdb/14383]: gdb: corefile support " Fredrik Hederstierna
2020-10-22  0:44         ` [PATCH v3][PR gdb/14383]: Support for corefiles " Fredrik Hederstierna
2020-10-25 20:46       ` [PATCH] " Fredrik Hederstierna
2020-10-25 20:50       ` [PATCH v4][PR gdb/14383] " Fredrik Hederstierna

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AM8PR10MB4658D3C91F33BF99B1A07C0CEF029@AM8PR10MB4658.EURPRD10.PROD.OUTLOOK.COM \
    --to=gdb-patches@sourceware.org \
    --cc=Alan.Hayward@arm.com \
    --cc=fredrik.hederstierna@verisure.com \
    --cc=paulmathieu@google.com \
    --cc=simark@simark.ca \
    --cc=vapier@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox