Support printing of 16 byte real/complex type for Flang compiler
authorAlok Kumar Sharma <AlokKumar.Sharma@amd.com>
Thu, 3 Sep 2020 16:21:01 +0000 (21:51 +0530)
committerAlok Kumar Sharma <AlokKumar.Sharma@amd.com>
Thu, 3 Sep 2020 16:27:16 +0000 (21:57 +0530)
Currently GDB is not able to print correct value for real/complex type
from binary generated from Flang compiler. This is due to GDB not able
to recognise and determine correct format floatformats_ia64_quad and
instead falling back to default_floatformat_for_type. This leads
incorrect output.
Now function i386_floatformat_for_type is fixed to correctly identify
Flang generated 16 byte real/complex type.

gdb/ChangeLog

* gdb/i386-tdep.c (i386_floatformat_for_type): Added conditions
to match 16 byte real/complex type generated by Flang compiler.

gdb/ChangeLog
gdb/i386-tdep.c

index ca251b27b42f7763e52a51c6fbfd41e5e1d9ce53..faa3a6125475764b5f2b13d5833a673cda49dc9f 100644 (file)
@@ -1,3 +1,8 @@
+2020-09-03  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+       * gdb/i386-tdep.c (i386_floatformat_for_type): Added conditions
+       to match 16 byte real/complex type generated by Flang compiler.
+
 2020-09-03  Tom de Vries  <tdevries@suse.de>
 
        PR breakpoint/26546
index d9fa2b926499e4297a543d40177e5b5cddf8abc6..b3aa115c187b8c93d763e6a25fda182a344a399e 100644 (file)
@@ -8211,7 +8211,9 @@ i386_floatformat_for_type (struct gdbarch *gdbarch,
        || strcmp (name, "_Float128") == 0
        || strcmp (name, "complex _Float128") == 0
        || strcmp (name, "complex(kind=16)") == 0
-       || strcmp (name, "real(kind=16)") == 0)
+       || strcmp (name, "quad complex") == 0
+       || strcmp (name, "real(kind=16)") == 0
+       || strcmp (name, "real*16") == 0)
       return floatformats_ia64_quad;
 
   return default_floatformat_for_type (gdbarch, name, len);