Commit 7d3a9c6f authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

winedbg: Implement float fetching for x86-64 debugger.

parent 7c9cd449
...@@ -726,7 +726,7 @@ static int be_i386_fetch_integer(const struct dbg_lvalue* lvalue, unsigned size, ...@@ -726,7 +726,7 @@ static int be_i386_fetch_integer(const struct dbg_lvalue* lvalue, unsigned size,
static int be_i386_fetch_float(const struct dbg_lvalue* lvalue, unsigned size, static int be_i386_fetch_float(const struct dbg_lvalue* lvalue, unsigned size,
long double* ret) long double* ret)
{ {
char tmp[12]; char tmp[sizeof(long double)];
/* FIXME: this assumes that debuggee and debugger use the same /* FIXME: this assumes that debuggee and debugger use the same
* representation for reals * representation for reals
......
...@@ -364,11 +364,25 @@ static int be_x86_64_fetch_integer(const struct dbg_lvalue* lvalue, unsigned siz ...@@ -364,11 +364,25 @@ static int be_x86_64_fetch_integer(const struct dbg_lvalue* lvalue, unsigned siz
return TRUE; return TRUE;
} }
static int be_x86_64_fetch_float(const struct dbg_lvalue* lvalue, unsigned size, static int be_x86_64_fetch_float(const struct dbg_lvalue* lvalue, unsigned size,
long double* ret) long double* ret)
{ {
dbg_printf("not done fetch_float\n"); char tmp[sizeof(long double)];
return FALSE;
/* FIXME: this assumes that debuggee and debugger use the same
* representation for reals
*/
if (!memory_read_value(lvalue, size, tmp)) return FALSE;
/* float & double types have to be promoted to a long double */
switch (size)
{
case sizeof(float): *ret = *(float*)tmp; break;
case sizeof(double): *ret = *(double*)tmp; break;
case sizeof(long double): *ret = *(long double*)tmp; break;
default: return FALSE;
}
return TRUE;
} }
struct backend_cpu be_x86_64 = struct backend_cpu be_x86_64 =
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment