Fri Jun 3 17:25:08 1994 Pat Rankin (rankin@eql.caltech.edu)
authorKen Raeburn <raeburn@cygnus>
Thu, 16 Jun 1994 01:02:18 +0000 (01:02 +0000)
committerKen Raeburn <raeburn@cygnus>
Thu, 16 Jun 1994 01:02:18 +0000 (01:02 +0000)
* config/obj-vms.h (DBG_S_C_COMPLX4, DBG_S_C_COMPLX8): define
these new VMS symbol-type macros for `complex float' and
`complex double' support.  Their values come from the existing
DSC$K_DTYPE_FC and DSC$K_DTYPE_DC macros in <descrip.h>.
(DBG_S_C_REAL8_G, DBG_S_C_COMPLX8_G): G_float versions of
REAL8 and COMPLX8; not used yet, because gcc outputs the same
.stabs for `double' regardless of whether `-mg' is used.
config/obj-vms.c (VMS_typedef_parse) [case 'r']: add entries
for gcc2's predefined types "complex float", "complex double",
and "complex long double" (identical to complex double).

gas/config/obj-vms.c
gas/config/obj-vms.h

index fe0465b..fce7fc3 100644 (file)
@@ -2466,9 +2466,29 @@ VMS_typedef_parse (str)
          spnt->VMS_type = DBG_S_C_UQUAD;       /* unsigned quadword */
          spnt->data_size = 8;
        }
+      else if (type_check ("complex float"))
+       {
+         spnt->VMS_type = DBG_S_C_COMPLX4;
+         spnt->data_size = 2 * 4;
+       }
+      else if (type_check ("complex double"))
+       {
+         /* caveat: this assumes D_float, and is not correct for G_float */
+         spnt->VMS_type = DBG_S_C_COMPLX8;
+         spnt->data_size = 2 * 8;
+       }
+      else if (type_check ("complex long double"))
+       {
+         /* same as complex double, at least for now */
+         spnt->VMS_type = DBG_S_C_COMPLX8;
+         spnt->data_size = 2 * 8;
+       }
       else
        {
-         /* something more substantial ought to be done here */
+         /*    [pr]
+          * Shouldn't get here, but if we do, something
+          * more substantial ought to be done...
+          */
          spnt->VMS_type = 0;
          spnt->data_size = 0;
        }
index c645059..8470d27 100644 (file)
@@ -427,7 +427,11 @@ extern int vms_resolve_symbol_redef ();
 #define DBG_S_C_SLINT          0x08
 #define DBG_S_C_SQUAD          0x09
 #define DBG_S_C_REAL4          0x0a
-#define DBG_S_C_REAL8          0x0b            /* D_float (G_float is 0x1b) */
+#define DBG_S_C_REAL8          0x0b            /* D_float double */
+#define DBG_S_C_COMPLX4                0x0c            /* 2xF_float complex float */
+#define DBG_S_C_COMPLX8                0x0d            /* 2xD_float complex double */
+#define DBG_S_C_REAL8_G                0x1b            /* G_float double */
+#define DBG_S_C_COMPLX8_G      0x1d            /* 2xG_float complex double */
 #define DBG_S_C_FUNCTION_ADDR  0x17
 #define DBG_S_C_ADVANCED_TYPE  0xa3
 /*  These are the codes that are used to generate the definitions of struct