This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ARM floating point regs regression


> 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




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]