From 4a1be8d214b23357f5f2aed974727e83edc0b50e Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Thu, 26 May 2011 13:57:46 +0000 Subject: [PATCH] * alpha-tdep.c (alpha_cannot_fetch_register): Don't return true for ALPHA_ZERO_REGNUM. (alpha_supply_int_regs): Explicitly supply zero as the value for ALPHA_ZERO_REGNUM in the register cache. * alpha-nat.c (fetch_osf_core_registers): Ditto. --- gdb/ChangeLog | 8 ++++++++ gdb/alpha-nat.c | 9 +++++++++ gdb/alpha-tdep.c | 9 ++++++--- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 678ed3b5a88..76c56ea73c2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2011-05-26 Pedro Alves + + * alpha-tdep.c (alpha_cannot_fetch_register): Don't return true + for ALPHA_ZERO_REGNUM. + (alpha_supply_int_regs): Explicitly supply zero as the value for + ALPHA_ZERO_REGNUM in the register cache. + * alpha-nat.c (fetch_osf_core_registers): Ditto. + 2011-05-26 Yao Qi * gdb/gdb_thread_db.h: Remove HAVE_UINTPTR_T. diff --git a/gdb/alpha-nat.c b/gdb/alpha-nat.c index 1a55ea9dace..f548359c693 100644 --- a/gdb/alpha-nat.c +++ b/gdb/alpha-nat.c @@ -101,6 +101,15 @@ fetch_osf_core_registers (struct regcache *regcache, regcache_raw_supply (regcache, regno, NULL); continue; } + + if (regno == ALPHA_ZERO_REGNUM) + { + const gdb_byte zero[8] = { 0 }; + + regcache_raw_supply (regcache, regno, zero); + continue; + } + addr = 8 * core_reg_mapping[regno]; if (addr < 0 || addr >= core_reg_size) { diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c index 10e753b2945..77782e88090 100644 --- a/gdb/alpha-tdep.c +++ b/gdb/alpha-tdep.c @@ -111,8 +111,7 @@ alpha_register_name (struct gdbarch *gdbarch, int regno) static int alpha_cannot_fetch_register (struct gdbarch *gdbarch, int regno) { - return (regno == ALPHA_ZERO_REGNUM - || strlen (alpha_register_name (gdbarch, regno)) == 0); + return (strlen (alpha_register_name (gdbarch, regno)) == 0); } static int @@ -1424,7 +1423,11 @@ alpha_supply_int_regs (struct regcache *regcache, int regno, regcache_raw_supply (regcache, i, regs + i * 8); if (regno == ALPHA_ZERO_REGNUM || regno == -1) - regcache_raw_supply (regcache, ALPHA_ZERO_REGNUM, NULL); + { + const gdb_byte zero[8] = { 0 }; + + regcache_raw_supply (regcache, ALPHA_ZERO_REGNUM, zero); + } if (regno == ALPHA_PC_REGNUM || regno == -1) regcache_raw_supply (regcache, ALPHA_PC_REGNUM, pc); -- 2.30.2