From a948c20151197996b3668c49df123b40d743b3bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Hentschel?= <nerv@dawncrow.de>
Date: Thu, 8 Mar 2012 22:28:26 +0100
Subject: [PATCH] winedbg: Use copy of be_i386_fetch_float for
 be_arm_fetch_float (except of long double).

---
 programs/winedbg/be_arm.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/programs/winedbg/be_arm.c b/programs/winedbg/be_arm.c
index 0bd56018665..c39043cbda5 100644
--- a/programs/winedbg/be_arm.c
+++ b/programs/winedbg/be_arm.c
@@ -237,8 +237,20 @@ static int be_arm_fetch_integer(const struct dbg_lvalue* lvalue, unsigned size,
 static int be_arm_fetch_float(const struct dbg_lvalue* lvalue, unsigned size,
                               long double* ret)
 {
-    dbg_printf("be_arm_fetch_float: not done\n");
-    return FALSE;
+    char        tmp[sizeof(long double)];
+
+    /* FIXME: this assumes that debuggee and debugger use the same
+     * representation for reals
+     */
+    if (!memory_read_value(lvalue, size, tmp)) return FALSE;
+
+    switch (size)
+    {
+    case sizeof(float):         *ret = *(float*)tmp;            break;
+    case sizeof(double):        *ret = *(double*)tmp;           break;
+    default:                    return FALSE;
+    }
+    return TRUE;
 }
 
 struct backend_cpu be_arm =
-- 
GitLab