From: Andrew Cagney Date: Fri, 24 Aug 2001 05:11:07 +0000 (+0000) Subject: * regcache.c (read_register_bytes): When REGISTER_NAME indicates X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=275f450c27ed529e2197c1ec97151740c2e65d8e;p=binutils-gdb.git * regcache.c (read_register_bytes): When REGISTER_NAME indicates that a register should be ignored, supply a value for the register from the raw registers[] buffer. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e8d7faa1dea..750a11ffc87 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2001-08-24 Andrew Cagney + + * regcache.c (read_register_bytes): When REGISTER_NAME indicates + that a register should be ignored, supply a value for the register + from the raw registers[] buffer. + 2001-08-24 Andrew Cagney * go32-nat.c (go32_create_inferior): Use xfree instead of free. diff --git a/gdb/regcache.c b/gdb/regcache.c index ffd13bf8a4b..3bf0b47b351 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -230,9 +230,6 @@ read_register_bytes (int in_start, char *in_buf, int in_len) int end; int byte; - if (REGISTER_NAME (regnum) == NULL || *REGISTER_NAME (regnum) == '\0') - continue; - reg_start = REGISTER_BYTE (regnum); reg_len = REGISTER_RAW_SIZE (regnum); reg_end = reg_start + reg_len; @@ -241,8 +238,18 @@ read_register_bytes (int in_start, char *in_buf, int in_len) /* The range the user wants to read doesn't overlap with regnum. */ continue; - /* Force the cache to fetch the entire register. */ - read_register_gen (regnum, reg_buf); + if (REGISTER_NAME (regnum) != NULL && *REGISTER_NAME (regnum) != '\0') + /* Force the cache to fetch the entire register. */ + read_register_gen (regnum, reg_buf); + else + /* Legacy note: even though this register is ``invalid'' we + still need to return something. It would appear that some + code relies on apparent gaps in the register array also + being returned. */ + /* FIXME: cagney/2001-08-18: This is just silly. It defeats + the entire register read/write flow of control. Must + resist temptation to return 0xdeadbeef. */ + memcpy (reg_buf, registers + reg_start, reg_len); /* Legacy note: This function, for some reason, allows a NULL input buffer. If the buffer is NULL, the registers are still