diff options
author | Per Bothner <per@bothner.com> | 1996-01-24 07:02:57 +0000 |
---|---|---|
committer | Per Bothner <per@bothner.com> | 1996-01-24 07:02:57 +0000 |
commit | c6038971d6957f1244f2224002ba961c81b7ac71 (patch) | |
tree | 9647d17c387a1d4a9151394328b021b2f8d9ff60 | |
parent | 4e327047ce195fe703b5ee64badca4631883cbe0 (diff) | |
download | gdb-c6038971d6957f1244f2224002ba961c81b7ac71.zip gdb-c6038971d6957f1244f2224002ba961c81b7ac71.tar.gz gdb-c6038971d6957f1244f2224002ba961c81b7ac71.tar.bz2 |
* stabsread.c (rs6000_builtin_type): Make bool type unsigned.
(read_one_struct_field): Support boolean bitfields.
* c-valprint.c (c_val_print): Print booleans properly.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/c-valprint.c | 16 | ||||
-rw-r--r-- | gdb/stabsread.c | 4 |
3 files changed, 23 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e8ccefe..69faad2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +Tue Jan 23 18:02:35 1996 Per Bothner <bothner@kalessin.cygnus.com> + + * stabsread.c (rs6000_builtin_type): Make bool type unsigned. + (read_one_struct_field): Support boolean bitfields. + * c-valprint.c (c_val_print): Print booleans properly. + Tue Jan 23 18:54:09 1996 Stan Shebs <shebs@andros.cygnus.com> * remote-vxsparc.c (vx_convert_to_virtual, vx_convert_from_virtual): diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c index f4abf7f..a16f87c 100644 --- a/gdb/c-valprint.c +++ b/gdb/c-valprint.c @@ -335,8 +335,20 @@ c_val_print (type, valaddr, address, stream, format, deref_ref, recurse, break; case TYPE_CODE_BOOL: - /* Do something at least vaguely reasonable, for example if the - language is set wrong. */ + format = format ? format : output_format; + if (format) + print_scalar_formatted (valaddr, type, format, 0, stream); + else + { + val = unpack_long (type, valaddr); + if (val == 0) + fputs_filtered ("false", stream); + else if (val == 1) + fputs_filtered ("true", stream); + else + print_longest (stream, 'd', 0, val); + } + break; case TYPE_CODE_RANGE: /* FIXME: create_range_type does not set the unsigned bit in a diff --git a/gdb/stabsread.c b/gdb/stabsread.c index ba36fb2..988c75c 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -1855,7 +1855,8 @@ rs6000_builtin_type (typenum) rettype = init_type (TYPE_CODE_INT, 4, 0, "integer", NULL); break; case 16: - rettype = init_type (TYPE_CODE_BOOL, 4, 0, "boolean", NULL); + rettype = init_type (TYPE_CODE_BOOL, 4, TYPE_FLAG_UNSIGNED, + "boolean", NULL); break; case 17: rettype = init_type (TYPE_CODE_FLT, 4, 0, "short real", NULL); @@ -2458,6 +2459,7 @@ read_one_struct_field (fip, pp, p, type, objfile) and treat enums as if they had the width of ints. */ if (TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_INT + && TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_BOOL && TYPE_CODE (fip -> list -> field.type) != TYPE_CODE_ENUM) { fip -> list -> field.bitsize = 0; |