From: John Gilmore Date: Thu, 19 Sep 1991 03:07:56 +0000 (+0000) Subject: * values.c (unpack_long, value_from_longest): Handle X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=35505d07d71494db2f53085436d550c181dfca6d;p=binutils-gdb.git * values.c (unpack_long, value_from_longest): Handle TYPE_CODE_BOOL and TYPE_CODE_CHAR. --- diff --git a/gdb/values.c b/gdb/values.c index ce0bc45f449..380a9cc086d 100644 --- a/gdb/values.c +++ b/gdb/values.c @@ -557,6 +557,9 @@ value_as_pointer (val) to member which reaches here is considered to be equivalent to an INT (or some size). After all, it is only an offset. */ +/* FIXME: This should be rewritten as a switch statement for speed and + ease of comprehension. */ + LONGEST unpack_long (type, valaddr) struct type *type; @@ -566,7 +569,7 @@ unpack_long (type, valaddr) register int len = TYPE_LENGTH (type); register int nosign = TYPE_UNSIGNED (type); - if (code == TYPE_CODE_ENUM) + if (code == TYPE_CODE_ENUM || code == TYPE_CODE_BOOL) code = TYPE_CODE_INT; if (code == TYPE_CODE_FLT) { @@ -699,6 +702,8 @@ unpack_long (type, valaddr) } else if (code == TYPE_CODE_MEMBER) error ("not implemented: member types in unpack_long"); + else if (code == TYPE_CODE_CHAR) + return *(unsigned char *)valaddr; error ("Value not integer or pointer."); return 0; /* For lint -- never reached */ @@ -1408,7 +1413,8 @@ value_from_longest (type, num) /* FIXME, we assume that pointers have the same form and byte order as integers, and that all pointers have the same form. */ - if (code == TYPE_CODE_INT || code == TYPE_CODE_ENUM || code == TYPE_CODE_PTR) + if (code == TYPE_CODE_INT || code == TYPE_CODE_ENUM || + code == TYPE_CODE_CHAR || code == TYPE_CODE_PTR) { if (len == sizeof (char)) * (char *) VALUE_CONTENTS_RAW (val) = num;