gdb segfaults when printing long double complex variables

Peter Jay Salzman p@dirac.org
Thu Jun 10 19:59:00 GMT 2004


On Thu 10 Jun 04,  3:39 PM, Daniel Jacobowitz <drow@false.org> said:
> On Thu, Jun 10, 2004 at 12:28:29PM -0700, Peter Jay Salzman wrote:
> > Bug: GDB segfaults when printing long double complex variables.
> > 
> > Sample Code:
> > 
> > 1       #include <tgmath.h>
> > 2       #include <stdio.h>
> > 3
> > 4       int main(void)
> > 5       {
> > 6               complex a;
> > 7               double complex b;
> > 8               long double complex c;
> > 9
> > 10              a = 5 + 2I;
> > 11              printf("%f + %fi\n", __real__ a, __imag__ a);
> > 12
> > 13              b = 5.0 + 2.0I;
> > 14              printf("%f + %fi\n", __real__ b, __imag__ b);
> > 15
> > 16              c = 5.0L + 2.0LI;
> > 17              printf("%Lf + %Lfi\n", __real__ c, __imag__ c);
> > 18
> > 19              return 0;
> > 20      }
> 
> GDB doesn't really support complex long double.  The entire type
> infrastructure for complex types is hokey and special-cases based on
> the size of the type; it expects 128-bit long double rather than x86's
> 96-bit.
> 
> Look in dwarf2read.c for the code setting TYPE_TARGET_TYPE if you want
> to work around it.

Hi Daniel,

A friend noticed that it worked on an Opteron, which presumably has 128
bit long double complexes.  But two questions:

1. Should GDB be segfaulting?  Isn't there a nicer way to alert
   the user that there's a problem?

2. Is support planned?  If so, for what time estimate?  I use C to
   solve non-linear Schrodinger equations.  Hokey under the hood or not,
   I'd really rather use native complexes rather than home brewed
   structs.

Pete

ps- Queen of the Demonweb Pits was my favorite module...

-- 
In theory, theory and practise are the same.  In practise, they aren't.
GPG Instructions: http://www.dirac.org/linux/gpg
GPG Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D



More information about the Gdb mailing list