* [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section [not found] <20240419103922.3621961-1-moritz.struebe@siemens-energy.com> @ 2024-04-19 10:39 ` Moritz Strübe 2024-04-19 15:06 ` Tom Tromey 2024-04-23 13:28 ` Luis Machado 2024-04-19 10:39 ` [PATCH 2/2] Nios2, gdb: Adjust to new coredump format Moritz Strübe 1 sibling, 2 replies; 8+ messages in thread From: Moritz Strübe @ 2024-04-19 10:39 UTC (permalink / raw) To: gdb-patches; +Cc: Moritz Strübe The coredumps of the current kernel are larger. --- bfd/elf32-nios2.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c index 806ec314c82..3d0fa6fbf27 100644 --- a/bfd/elf32-nios2.c +++ b/bfd/elf32-nios2.c @@ -1921,7 +1921,18 @@ nios2_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) { default: return false; + case 272: /* Linux/Nios II */ + /* pr_cursig */ + elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12); + + /* pr_pid */ + elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, note->descdata + 24); + /* pr_reg */ + offset = 72; + size = 196; + + break; case 212: /* Linux/Nios II */ /* pr_cursig */ elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12); -- 2.30.2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section 2024-04-19 10:39 ` [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section Moritz Strübe @ 2024-04-19 15:06 ` Tom Tromey 2024-04-23 13:28 ` Luis Machado 1 sibling, 0 replies; 8+ messages in thread From: Tom Tromey @ 2024-04-19 15:06 UTC (permalink / raw) To: Moritz Strübe; +Cc: gdb-patches >>>>> "Moritz" == Moritz Strübe <moritz.struebe@siemens-energy.com> writes: Moritz> The coredumps of the current kernel are larger. Hi. BFD patches should go to the binutils list. FWIW I'm a little surprised to see this given that nios2 was just deprecated in GCC. Tom ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section 2024-04-19 10:39 ` [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section Moritz Strübe 2024-04-19 15:06 ` Tom Tromey @ 2024-04-23 13:28 ` Luis Machado 2024-04-23 14:51 ` Sandra Loosemore 1 sibling, 1 reply; 8+ messages in thread From: Luis Machado @ 2024-04-23 13:28 UTC (permalink / raw) To: Moritz Strübe, gdb-patches; +Cc: binutils, sloosemore Hi, I just spotted Sandra's message [1] about nios2 deprecation. Do we have plans for deprecating such support in binutils/gdb as well, for the sake of reducing future maintenance burden? On 4/19/24 11:39, Moritz Strübe wrote: > The coredumps of the current kernel are larger. > --- > bfd/elf32-nios2.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/bfd/elf32-nios2.c b/bfd/elf32-nios2.c > index 806ec314c82..3d0fa6fbf27 100644 > --- a/bfd/elf32-nios2.c > +++ b/bfd/elf32-nios2.c > @@ -1921,7 +1921,18 @@ nios2_grok_prstatus (bfd *abfd, Elf_Internal_Note *note) > { > default: > return false; > + case 272: /* Linux/Nios II */ > + /* pr_cursig */ > + elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12); > + > + /* pr_pid */ > + elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, note->descdata + 24); > > + /* pr_reg */ > + offset = 72; > + size = 196; > + > + break; > case 212: /* Linux/Nios II */ > /* pr_cursig */ > elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12); [1] https://gcc.gnu.org/pipermail/gcc/2024-April/243749.html ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section 2024-04-23 13:28 ` Luis Machado @ 2024-04-23 14:51 ` Sandra Loosemore 2024-04-23 15:31 ` Simon Marchi 2024-04-23 15:32 ` Luis Machado 0 siblings, 2 replies; 8+ messages in thread From: Sandra Loosemore @ 2024-04-23 14:51 UTC (permalink / raw) To: Luis Machado, Moritz Strübe, gdb-patches; +Cc: binutils On 4/23/24 07:28, Luis Machado wrote: > Hi, > > I just spotted Sandra's message [1] about nios2 deprecation. > > Do we have plans for deprecating such support in binutils/gdb as well, for the > sake of reducing future maintenance burden? Yes, I plan to take care of producing patches to remove the nios2 port entirely from binutils/gdb, as well as from gcc, a little bit farther down the line. I'm not sure of the best timing with respect to upcoming releases, and at the moment I am swamped with other tasks anyway, but it's definitely on my list of things to do -- I don't want to leave this as a pointless maintenance burden for others. -Sandra ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section 2024-04-23 14:51 ` Sandra Loosemore @ 2024-04-23 15:31 ` Simon Marchi 2024-04-23 15:32 ` Luis Machado 1 sibling, 0 replies; 8+ messages in thread From: Simon Marchi @ 2024-04-23 15:31 UTC (permalink / raw) To: Sandra Loosemore, Luis Machado, Moritz Strübe, gdb-patches; +Cc: binutils On 2024-04-23 10:51, Sandra Loosemore wrote: > On 4/23/24 07:28, Luis Machado wrote: >> Hi, >> >> I just spotted Sandra's message [1] about nios2 deprecation. >> >> Do we have plans for deprecating such support in binutils/gdb as well, for the >> sake of reducing future maintenance burden? > > Yes, I plan to take care of producing patches to remove the nios2 port entirely from binutils/gdb, as well as from gcc, a little bit farther down the line. I'm not sure of the best timing with respect to upcoming releases, and at the moment I am swamped with other tasks anyway, but it's definitely on my list of things to do -- I don't want to leave this as a pointless maintenance burden for others. > > -Sandra Thanks a lot for being proactive with this. Simon ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section 2024-04-23 14:51 ` Sandra Loosemore 2024-04-23 15:31 ` Simon Marchi @ 2024-04-23 15:32 ` Luis Machado 1 sibling, 0 replies; 8+ messages in thread From: Luis Machado @ 2024-04-23 15:32 UTC (permalink / raw) To: Sandra Loosemore, Moritz Strübe, gdb-patches; +Cc: binutils On 4/23/24 15:51, Sandra Loosemore wrote: > On 4/23/24 07:28, Luis Machado wrote: >> Hi, >> >> I just spotted Sandra's message [1] about nios2 deprecation. >> >> Do we have plans for deprecating such support in binutils/gdb as well, for the >> sake of reducing future maintenance burden? > > Yes, I plan to take care of producing patches to remove the nios2 port entirely from binutils/gdb, as well as from gcc, a little bit farther down the line. I'm not sure of the best timing with respect to upcoming releases, and at the moment I am swamped with other tasks anyway, but it's definitely on my list of things to do -- I don't want to leave this as a pointless maintenance burden for others. > > -Sandra Great. Thanks for the update Sandra. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/2] Nios2, gdb: Adjust to new coredump format [not found] <20240419103922.3621961-1-moritz.struebe@siemens-energy.com> 2024-04-19 10:39 ` [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section Moritz Strübe @ 2024-04-19 10:39 ` Moritz Strübe 2024-04-19 15:08 ` Tom Tromey 1 sibling, 1 reply; 8+ messages in thread From: Moritz Strübe @ 2024-04-19 10:39 UTC (permalink / raw) To: gdb-patches; +Cc: Moritz Strübe Current kernels create their coredumps using ptrace. Adjust to this new format. --- gdb/nios2-linux-tdep.c | 68 ++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/gdb/nios2-linux-tdep.c b/gdb/nios2-linux-tdep.c index fb9e88326fb..16581508688 100644 --- a/gdb/nios2-linux-tdep.c +++ b/gdb/nios2-linux-tdep.c @@ -32,46 +32,40 @@ #include "gdbarch.h" /* Core file and register set support. */ +/* See arch/nios2/kernel/ptrace.c */ -/* Map from the normal register enumeration order to the order that - registers appear in core files, which corresponds to the order - of the register slots in the kernel's struct pt_regs. */ +#define NIOS2_GREGS_SIZE (4 * NIOS2_NUM_REGS) -static const int reg_offsets[NIOS2_NUM_REGS] = -{ - -1, 8, 9, 10, 11, 12, 13, 14, /* r0 - r7 */ - 0, 1, 2, 3, 4, 5, 6, 7, /* r8 - r15 */ - 23, 24, 25, 26, 27, 28, 29, 30, /* r16 - r23 */ - -1, -1, 19, 18, 17, 21, -1, 16, /* et bt gp sp fp ea sstatus ra */ - 21, /* pc */ - -1, 20, -1, -1, -1, -1, -1, -1, /* status estatus ... */ - -1, -1, -1, -1, -1, -1, -1, -1 -}; - -/* General register set size. Should match sizeof (struct pt_regs) + - sizeof (struct switch_stack) from the NIOS2 Linux kernel patch. */ - -#define NIOS2_GREGS_SIZE (4 * 34) +/* Registers not set by dump */ +static std::set<int> notsetregs = {0, 24, 25, 30}; /* Implement the supply_regset hook for core files. */ - static void nios2_supply_gregset (const struct regset *regset, struct regcache *regcache, int regnum, const void *gregs_buf, size_t len) { const gdb_byte *gregs = (const gdb_byte *) gregs_buf; - int regno; - static const gdb_byte zero_buf[4] = {0, 0, 0, 0}; - - for (regno = NIOS2_Z_REGNUM; regno <= NIOS2_MPUACC_REGNUM; regno++) - if (regnum == -1 || regnum == regno) - { - if (reg_offsets[regno] != -1) - regcache->raw_supply (regno, gregs + 4 * reg_offsets[regno]); - else - regcache->raw_supply (regno, zero_buf); + const uint32_t *regvals = (const uint32_t *) gregs_buf; + + // If regno is 0 dump all registers + if(regnum > 0 ){ + regcache->raw_supply (regnum, gregs + 4 * regnum); + } else { + for (auto regno = NIOS2_Z_REGNUM; regno < NIOS2_NUM_REGS; regno++){ + // Only CPU registers are set by dump. Thus ignore everything above NIOS2_PC_REGNUM + if(notsetregs.find(regno) == notsetregs.end() && regno <= NIOS2_PC_REGNUM ) { + regcache->raw_supply(regno, gregs + 4 * regno); + } else { + // Print a warning in case the register is suddenly set in the future. + if(regvals[regno] != 0){ + warning (_("'.reg': expected regno %d to be 0, but was 0x%08x."), regno, regvals[regno]); + } + // Registers not available should be set passing NULL. + regcache->raw_supply(regno, NULL); } + } + } } /* Implement the collect_regset hook for core files. */ @@ -82,14 +76,16 @@ nios2_collect_gregset (const struct regset *regset, int regnum, void *gregs_buf, size_t len) { gdb_byte *gregs = (gdb_byte *) gregs_buf; - int regno; - - for (regno = NIOS2_Z_REGNUM; regno <= NIOS2_MPUACC_REGNUM; regno++) - if (regnum == -1 || regnum == regno) - { - if (reg_offsets[regno] != -1) - regcache->raw_collect (regno, gregs + 4 * reg_offsets[regno]); + // If regno is 0 dump all registers + if(regnum > 0 ){ + regcache->raw_collect (regnum, gregs + 4 * regnum); + } else { + for (auto regno = NIOS2_Z_REGNUM; regno <= NIOS2_NUM_REGS; regno++){ + if(notsetregs.find(regno) == notsetregs.end() && regno <= NIOS2_PC_REGNUM ) { + regcache->raw_collect(regno, gregs + 4 * regno); } + } + } } static const struct regset nios2_core_regset = -- 2.30.2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] Nios2, gdb: Adjust to new coredump format 2024-04-19 10:39 ` [PATCH 2/2] Nios2, gdb: Adjust to new coredump format Moritz Strübe @ 2024-04-19 15:08 ` Tom Tromey 0 siblings, 0 replies; 8+ messages in thread From: Tom Tromey @ 2024-04-19 15:08 UTC (permalink / raw) To: Moritz Strübe; +Cc: gdb-patches >>>>> "Moritz" == Moritz Strübe <moritz.struebe@siemens-energy.com> writes: Thank you for the patch. Moritz> Current kernels create their coredumps using ptrace. Adjust to this new Moritz> format. Is there any need to support old coredumps as well; and if not, why not? Moritz> +/* Registers not set by dump */ Moritz> +static std::set<int> notsetregs = {0, 24, 25, 30}; Should be const. Moritz> /* Implement the supply_regset hook for core files. */ Moritz> - Moritz> static void Spurious change. Moritz> + // If regno is 0 dump all registers Moritz> + if(regnum > 0 ){ Moritz> + regcache->raw_supply (regnum, gregs + 4 * regnum); Moritz> + } else { gdb doesn't use '//' comments and also uses a different formatting style. thanks, Tom ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-04-23 15:32 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <20240419103922.3621961-1-moritz.struebe@siemens-energy.com> 2024-04-19 10:39 ` [PATCH 1/2] Nios2, libbfd: Support new coredump .reg section Moritz Strübe 2024-04-19 15:06 ` Tom Tromey 2024-04-23 13:28 ` Luis Machado 2024-04-23 14:51 ` Sandra Loosemore 2024-04-23 15:31 ` Simon Marchi 2024-04-23 15:32 ` Luis Machado 2024-04-19 10:39 ` [PATCH 2/2] Nios2, gdb: Adjust to new coredump format Moritz Strübe 2024-04-19 15:08 ` Tom Tromey
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).