mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-20 09:31:29 +00:00
From David Purves <purves@apogee.com>:
* stabsread.c (rs6000_builtin_type): Create a complex float instead of an error. (read_sun_floating_type): Similarly. (read_range_type): Create a complex float if self_subrange is true.
This commit is contained in:
parent
8e40ea4bbe
commit
ee31ae2284
@ -1,3 +1,12 @@
|
||||
Mon Oct 5 19:44:39 1998 Stan Shebs <shebs@andros.cygnus.com>
|
||||
|
||||
From David Purves <purves@apogee.com>:
|
||||
* stabsread.c (rs6000_builtin_type): Create a complex float instead
|
||||
of an error.
|
||||
(read_sun_floating_type): Similarly.
|
||||
(read_range_type): Create a complex float if self_subrange is
|
||||
true.
|
||||
|
||||
Fri Oct 2 19:42:31 1998 Stu Grossman <grossman@babylon-5.cygnus.com>
|
||||
|
||||
* c-lang.c (emit_char c_printchar c_printstr), c-lang.h (c_printstr)
|
||||
|
@ -2892,11 +2892,11 @@ rs6000_builtin_type (typenum)
|
||||
break;
|
||||
case 25:
|
||||
/* Complex type consisting of two IEEE single precision values. */
|
||||
rettype = init_type (TYPE_CODE_ERROR, 8, 0, "complex", NULL);
|
||||
rettype = init_type (TYPE_CODE_COMPLEX, 8, 0, "complex", NULL);
|
||||
break;
|
||||
case 26:
|
||||
/* Complex type consisting of two IEEE double precision values. */
|
||||
rettype = init_type (TYPE_CODE_ERROR, 16, 0, "double complex", NULL);
|
||||
rettype = init_type (TYPE_CODE_COMPLEX, 16, 0, "double complex", NULL);
|
||||
break;
|
||||
case 27:
|
||||
rettype = init_type (TYPE_CODE_INT, 1, 0, "integer*1", NULL);
|
||||
@ -4413,7 +4413,7 @@ read_sun_floating_type (pp, typenums, objfile)
|
||||
|| details == NF_COMPLEX32)
|
||||
/* This is a type we can't handle, but we do know the size.
|
||||
We also will be able to give it a name. */
|
||||
return init_type (TYPE_CODE_ERROR, nbytes, 0, NULL, objfile);
|
||||
return init_type (TYPE_CODE_COMPLEX, nbytes, 0, NULL, objfile);
|
||||
|
||||
return init_type (TYPE_CODE_FLT, nbytes, 0, NULL, objfile);
|
||||
}
|
||||
@ -4617,20 +4617,28 @@ read_range_type (pp, typenums, objfile)
|
||||
if (self_subrange && n2 == 0 && n3 == 0)
|
||||
return init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
|
||||
|
||||
/* If n3 is zero and n2 is positive, we want a floating type,
|
||||
and n2 is the width in bytes.
|
||||
/* If n3 is zero and n2 is positive, we want a floating type, and n2
|
||||
is the width in bytes.
|
||||
|
||||
Fortran programs appear to use this for complex types also,
|
||||
and they give no way to distinguish between double and single-complex!
|
||||
Fortran programs appear to use this for complex types also. To
|
||||
distinguish between floats and complex, g77 (and others?) seem
|
||||
to use self-subranges for the complexes, and subranges of int for
|
||||
the floats.
|
||||
|
||||
GDB does not have complex types.
|
||||
|
||||
Just return the complex as a float of that size. It won't work right
|
||||
for the complex values, but at least it makes the file loadable. */
|
||||
Also note that for complexes, g77 sets n2 to the size of one of
|
||||
the member floats, not the whole complex beast. My guess is that
|
||||
this was to work well with pre-COMPLEX versions of gdb. */
|
||||
|
||||
if (n3 == 0 && n2 > 0)
|
||||
{
|
||||
return init_type (TYPE_CODE_FLT, n2, 0, NULL, objfile);
|
||||
if (self_subrange)
|
||||
{
|
||||
return init_type (TYPE_CODE_COMPLEX, 2 * n2, 0, NULL, objfile);
|
||||
}
|
||||
else
|
||||
{
|
||||
return init_type (TYPE_CODE_FLT, n2, 0, NULL, objfile);
|
||||
}
|
||||
}
|
||||
|
||||
/* If the upper bound is -1, it must really be an unsigned int. */
|
||||
|
Loading…
x
Reference in New Issue
Block a user