This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: ARM floating point regs regression
- From: Andrew Cagney <ac131313 at cygnus dot com>
- To: Richard dot Earnshaw at arm dot com
- Cc: gdb at sources dot redhat dot com
- Date: Tue, 22 Jan 2002 12:26:28 -0500
- Subject: Re: ARM floating point regs regression
- References: <200201221709.RAA03486@cam-mail2.cambridge.arm.com>
> Program received signal SIGSEGV, Segmentation fault.
> floatformat_is_nan (fmt=0x0, val=0xefbfcc14 "")
> at /nfs/sun18//work/rearnsha/gnusrc/src/gdb/src/gdb/doublest.c:457
> 457 if (! fmt->exp_nan)
> (top-gdb) p fmt
> $1 = (struct floatformat *) 0x0
> (top-gdb) where
> #0 floatformat_is_nan (fmt=0x0, val=0xefbfcc14 "")
> at /nfs/sun18//work/rearnsha/gnusrc/src/gdb/src/gdb/doublest.c:457
> #1 0x0007ba4c in c_val_print (type=0x1c0d80, valaddr=0xefbfcc14 "",
> embedded_offset=0, address=0, stream=0x1ae000, format=0, deref_ref=1,
> recurse=0, pretty=Val_no_prettyprint)
> at /nfs/sun18//work/rearnsha/gnusrc/src/gdb/src/gdb/c-valprint.c:439
> #2 0x00016400 in val_print (type=0x1c0d80, valaddr=0xefbfcc14 "",
> embedded_offset=0, address=0, stream=0x1ae000, format=0, deref_ref=1,
> recurse=0, pretty=Val_pretty_default)
> ...
>
> Breakpoint 3, print_floating (valaddr=0xefbfcc14 "", type=0x1c0d80,
> stream=0x0)
> at /nfs/sun18//work/rearnsha/gnusrc/src/gdb/src/gdb/valprint.c:551
> 551 const struct floatformat *fmt = floatformat_from_type (type);
> (top-gdb) p type
> $2 = (struct type *) 0x1c0d80
> (top-gdb) p *type
> $3 = {code = TYPE_CODE_FLT,
> name = 0x527c8 "builtin_type_arm_ext_littlebyte_bigword", tag_name =
> 0x0,
> length = 12, upper_bound_type = 0, lower_bound_type = 0, objfile = 0x0,
> target_type = 0x0, pointer_type = 0x0, reference_type = 0x0,
> cv_type = 0x1c0d80, as_type = 0x1c0d80, flags = 0, nfields = 0,
> fields = 0x0, vptr_basetype = 0x0, vptr_fieldno = -1, type_specific = {
> arg_types = 0x0, cplus_stuff = 0x0, floatformat = 0x0}}
Hmm, type->type_specific.floatformat shouldn't be NULL here. Checking
gdbtypes.c:
builtin_type_i387_ext =
init_type (TYPE_CODE_FLT, floatformat_i387_ext.totalsize / 8,
0, "builtin_type_i387_ext", NULL);
TYPE_FLOATFORMAT (builtin_type_i387_ext) = &floatformat_i387_ext;
which is good, but:
builtin_type_arm_ext_littlebyte_bigword =
init_type (TYPE_CODE_FLT,
floatformat_arm_ext_littlebyte_bigword.totalsize / 8,
0, "builtin_type_arm_ext_littlebyte_bigword", NULL);
is bad.
I don't know how but almost all the lines initializing TYPE_FLOATFORMAT
were lost.
Andrew