gdb segfaults when printing long double complex variables

Daniel Jacobowitz drow@false.org
Thu Jun 10 19:39:00 GMT 2004


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.

-- 
Daniel Jacobowitz



More information about the Gdb mailing list