diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ad2c3db7d49..568e0cdc742 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-12-04 Shahab Vahedi + + * arc-linux-tdep.c (collect_register): Populate "eret" by + "pc" value from the regcache when asked for "pc" value. + 2020-11-29 Hannes Domani PR tui/26973 diff --git a/gdb/arc-linux-tdep.c b/gdb/arc-linux-tdep.c index 9ff5f1214a1..6e74bae8056 100644 --- a/gdb/arc-linux-tdep.c +++ b/gdb/arc-linux-tdep.c @@ -319,8 +319,10 @@ static void collect_register (const struct regcache *regcache, struct gdbarch *gdbarch, int regnum, gdb_byte *buf) { + int offset; + /* Skip non-existing registers. */ - if ((arc_linux_core_reg_offsets[regnum] == ARC_OFFSET_NO_REGISTER)) + if (arc_linux_core_reg_offsets[regnum] == ARC_OFFSET_NO_REGISTER) return; /* The address where the execution has stopped is in pseudo-register @@ -332,8 +334,10 @@ collect_register (const struct regcache *regcache, struct gdbarch *gdbarch, the program will continue at the address after the current instruction. */ if (regnum == gdbarch_pc_regnum (gdbarch)) - regnum = ARC_ERET_REGNUM; - regcache->raw_collect (regnum, buf + arc_linux_core_reg_offsets[regnum]); + offset = arc_linux_core_reg_offsets[ARC_ERET_REGNUM]; + else + offset = arc_linux_core_reg_offsets[regnum]; + regcache->raw_collect (regnum, buf + offset); } void