From 58e49e2178609318ec612ec400d76a24c86b7d6d Mon Sep 17 00:00:00 2001 From: Jim Kingdon Date: Sat, 10 Jul 1993 05:03:22 +0000 Subject: [PATCH] * values.c, value.h (modify_field), callers: Make fieldval a LONGEST. * h8300-tdep.c (NEXT_PROLOGUE_INSN): Make pword1 an INSN_WORD * not short *. * findvar.c, defs.h ({extract,store}_{signed_integer,unsigned_integer,address}): New routines to replace SWAP_TARGET_AND_HOST. All over: All uses of SWAP_TARGET_AND_HOST on integers replaced. --- gdb/ChangeLog | 5 +++++ gdb/core.c | 6 ++---- gdb/h8300-tdep.c | 2 +- gdb/values.c | 18 +++++++++++------- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c937f372357..f384ee41f3a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ Fri Jul 9 12:36:46 1993 Jim Kingdon (kingdon@lioth.cygnus.com) + * values.c, value.h (modify_field), callers: Make fieldval a LONGEST. + + * h8300-tdep.c (NEXT_PROLOGUE_INSN): Make pword1 an INSN_WORD * + not short *. + * findvar.c, defs.h ({extract,store}_{signed_integer,unsigned_integer,address}): New routines to replace SWAP_TARGET_AND_HOST. diff --git a/gdb/core.c b/gdb/core.c index 4c60fb7e04e..4ef24d39d20 100644 --- a/gdb/core.c +++ b/gdb/core.c @@ -214,9 +214,8 @@ read_memory_integer (memaddr, len) CORE_ADDR memaddr; int len; { - char *buf; + char buf[sizeof (LONGEST)]; - buf = alloca (len); read_memory (memaddr, buf, len); return extract_signed_integer (buf, len); } @@ -226,9 +225,8 @@ read_memory_unsigned_integer (memaddr, len) CORE_ADDR memaddr; int len; { - char *buf; + char buf[sizeof (unsigned LONGEST)]; - buf = alloca (len); read_memory (memaddr, buf, len); return extract_unsigned_integer (buf, len); } diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c index 69a720d7c11..2ed8844b573 100644 --- a/gdb/h8300-tdep.c +++ b/gdb/h8300-tdep.c @@ -178,7 +178,7 @@ CORE_ADDR NEXT_PROLOGUE_INSN (addr, lim, pword1) CORE_ADDR addr; CORE_ADDR lim; - short *pword1; + INSN_WORD *pword1; { char buf[2]; if (addr < lim + 8) diff --git a/gdb/values.c b/gdb/values.c index 60c3c0804b7..f9296c67057 100644 --- a/gdb/values.c +++ b/gdb/values.c @@ -436,7 +436,7 @@ set_internalvar_component (var, offset, bitpos, bitsize, newval) #endif if (bitsize) - modify_field (addr, (int) value_as_long (newval), + modify_field (addr, value_as_long (newval), bitpos, bitsize); else memcpy (addr, VALUE_CONTENTS (newval), TYPE_LENGTH (VALUE_TYPE (newval))); @@ -1207,16 +1207,20 @@ unpack_field_as_long (type, valaddr, fieldno) void modify_field (addr, fieldval, bitpos, bitsize) char *addr; - int fieldval; + LONGEST fieldval; int bitpos, bitsize; { - long oword; + LONGEST oword; /* Reject values too big to fit in the field in question, otherwise adjoining fields may be corrupted. */ if (bitsize < (8 * sizeof (fieldval)) && 0 != (fieldval & ~((1<= longword size */ + /* Mask out old value, while avoiding shifts >= size of oword */ if (bitsize < 8 * sizeof (oword)) - oword &= ~(((((unsigned long)1) << bitsize) - 1) << bitpos); + oword &= ~(((((unsigned LONGEST)1) << bitsize) - 1) << bitpos); else - oword &= ~((-1) << bitpos); + oword &= ~((~(unsigned LONGEST)0) << bitpos); oword |= fieldval << bitpos; store_signed_integer (addr, sizeof oword, oword); -- 2.30.2