mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-11 19:19:04 +08:00
gdb/xtensa: don't supply loop registers if they are not present
When parsing a core file on hardware configurations without the zero-overhead loop option (e.g. ESP32-S2 chip), GDB used to assert while trying to call 'raw_supply' for lbeg, lend, lcount registers, even though they were not set. This was because regnum == -1 was used to indicate "supply all registers" and lbeg_regnum == -1 was used to indicate "lbeg register not present", and regnum == lbeg_regnum check was considered successful.
This commit is contained in:
committed by
Alexey Lapshin
parent
945f35c160
commit
ab91a76024
@@ -833,13 +833,16 @@ xtensa_supply_gregset (const struct regset *regset,
|
||||
if (regnum == tdep->ws_regnum || regnum == -1)
|
||||
rc->raw_supply (tdep->ws_regnum,
|
||||
(char *) ®s->windowstart);
|
||||
if (regnum == tdep->lbeg_regnum || regnum == -1)
|
||||
if (tdep->lbeg_regnum != -1 &&
|
||||
(regnum == tdep->lbeg_regnum || regnum == -1))
|
||||
rc->raw_supply (tdep->lbeg_regnum,
|
||||
(char *) ®s->lbeg);
|
||||
if (regnum == tdep->lend_regnum || regnum == -1)
|
||||
if (regnum == tdep->lend_regnum != -1 &&
|
||||
(regnum == tdep->lend_regnum || regnum == -1))
|
||||
rc->raw_supply (tdep->lend_regnum,
|
||||
(char *) ®s->lend);
|
||||
if (regnum == tdep->lcount_regnum || regnum == -1)
|
||||
if (tdep->lcount_regnum != -1 &&
|
||||
(regnum == tdep->lcount_regnum || regnum == -1))
|
||||
rc->raw_supply (tdep->lcount_regnum,
|
||||
(char *) ®s->lcount);
|
||||
if (regnum == tdep->sar_regnum || regnum == -1)
|
||||
|
||||
Reference in New Issue
Block a user