Fixes for extract_floating() and store_floating().
authorKevin Buettner <kevinb@redhat.com>
Thu, 2 Mar 2000 06:50:50 +0000 (06:50 +0000)
committerKevin Buettner <kevinb@redhat.com>
Thu, 2 Mar 2000 06:50:50 +0000 (06:50 +0000)
gdb/ChangeLog
gdb/findvar.c

index 930d6b159e34a1c341cc061e061b114420f9c85f..0d84277a2ff75ba9c8c94fb9231a767be81d4992 100644 (file)
@@ -1,3 +1,9 @@
+2000-03-02  Kevin Buettner  <kevinb@redhat.com>
+
+       * findvar.c (extract_floating, store_floating): Use target
+       floating point type sizes rather host sizes to determine
+       which conversion needs to be done.
+
 2000-03-02  Nick Duffek  <nsd@cygnus.com>
 
        * uw-thread.c: Apply GNU conventions to comment formatting.
index 9c8e313ab570b29d8def347adc8de1f3b7d55bbd..98322e014e4e8bac31bc8773988b958734f52261 100644 (file)
@@ -267,13 +267,11 @@ store_address (addr, len, val)
    dirty work.  */
 
 DOUBLEST
-extract_floating (addr, len)
-     PTR addr;
-     int len;
+extract_floating (void *addr, int len)
 {
   DOUBLEST dretval;
 
-  if (len == sizeof (float))
+  if (len * TARGET_CHAR_BIT == TARGET_FLOAT_BIT)
     {
       if (HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT)
        {
@@ -285,7 +283,7 @@ extract_floating (addr, len)
       else
        floatformat_to_doublest (TARGET_FLOAT_FORMAT, addr, &dretval);
     }
-  else if (len == sizeof (double))
+  else if (len * TARGET_CHAR_BIT == TARGET_DOUBLE_BIT)
     {
       if (HOST_DOUBLE_FORMAT == TARGET_DOUBLE_FORMAT)
        {
@@ -297,7 +295,7 @@ extract_floating (addr, len)
       else
        floatformat_to_doublest (TARGET_DOUBLE_FORMAT, addr, &dretval);
     }
-  else if (len == sizeof (DOUBLEST))
+  else if (len * TARGET_CHAR_BIT == TARGET_LONG_DOUBLE_BIT)
     {
       if (HOST_LONG_DOUBLE_FORMAT == TARGET_LONG_DOUBLE_FORMAT)
        {
@@ -322,12 +320,9 @@ extract_floating (addr, len)
 }
 
 void
-store_floating (addr, len, val)
-     PTR addr;
-     int len;
-     DOUBLEST val;
+store_floating (void *addr, int len, DOUBLEST val)
 {
-  if (len == sizeof (float))
+  if (len * TARGET_CHAR_BIT == TARGET_FLOAT_BIT)
     {
       if (HOST_FLOAT_FORMAT == TARGET_FLOAT_FORMAT)
        {
@@ -338,7 +333,7 @@ store_floating (addr, len, val)
       else
        floatformat_from_doublest (TARGET_FLOAT_FORMAT, &val, addr);
     }
-  else if (len == sizeof (double))
+  else if (len * TARGET_CHAR_BIT == TARGET_DOUBLE_BIT)
     {
       if (HOST_DOUBLE_FORMAT == TARGET_DOUBLE_FORMAT)
        {
@@ -349,7 +344,7 @@ store_floating (addr, len, val)
       else
        floatformat_from_doublest (TARGET_DOUBLE_FORMAT, &val, addr);
     }
-  else if (len == sizeof (DOUBLEST))
+  else if (len * TARGET_CHAR_BIT == TARGET_LONG_DOUBLE_BIT)
     {
       if (HOST_LONG_DOUBLE_FORMAT == TARGET_LONG_DOUBLE_FORMAT)
        memcpy (addr, &val, sizeof (val));