mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 12:23:31 +08:00
Fix loongarch_iterate_over_regset_sections for non-native targets.
Define a constant for the number of registers stored in a register set and use this with register_size to compute the size of the general-purpose register set in core dumps. This also fixes the build on hosts such as FreeBSD that do not define an elf_gregset_t type.
This commit is contained in:
@ -29,6 +29,11 @@
|
|||||||
#include "trad-frame.h"
|
#include "trad-frame.h"
|
||||||
#include "tramp-frame.h"
|
#include "tramp-frame.h"
|
||||||
|
|
||||||
|
/* The general-purpose regset consists of 32 R registers, plus PC,
|
||||||
|
and BADV registers. */
|
||||||
|
|
||||||
|
#define LOONGARCH_LINUX_NUM_GREGSET (34)
|
||||||
|
|
||||||
/* Unpack an elf_gregset_t into GDB's register cache. */
|
/* Unpack an elf_gregset_t into GDB's register cache. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -172,8 +177,13 @@ loongarch_iterate_over_regset_sections (struct gdbarch *gdbarch,
|
|||||||
void *cb_data,
|
void *cb_data,
|
||||||
const struct regcache *regcache)
|
const struct regcache *regcache)
|
||||||
{
|
{
|
||||||
cb (".reg", sizeof (elf_gregset_t), sizeof (elf_gregset_t),
|
loongarch_gdbarch_tdep *tdep
|
||||||
&loongarch_gregset, NULL, cb_data);
|
= (loongarch_gdbarch_tdep *) gdbarch_tdep (gdbarch);
|
||||||
|
auto regs = tdep->regs;
|
||||||
|
int regsize = register_size (gdbarch, regs.r);
|
||||||
|
|
||||||
|
cb (".reg", LOONGARCH_LINUX_NUM_GREGSET * regsize,
|
||||||
|
LOONGARCH_LINUX_NUM_GREGSET * regsize, &loongarch_gregset, NULL, cb_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize LoongArch Linux ABI info. */
|
/* Initialize LoongArch Linux ABI info. */
|
||||||
|
Reference in New Issue
Block a user