winedbg: Implement float fetching for x86-64 debugger.
This commit is contained in:
parent
7c9cd44965
commit
7d3a9c6ffd
|
@ -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
|
||||||
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 =
|
||||||
|
|
Loading…
Reference in New Issue