1
0
forked from 0ad/0ad

# small fixes

ia32: fix overly zealous error return in ia32_get_call_target
sysdep: more correct definition of fpclassify() (takes into account
argument size)

This was SVN commit r4055.
This commit is contained in:
janwas 2006-07-02 20:03:05 +00:00
parent 1422028b72
commit a0e92ee51c
2 changed files with 7 additions and 6 deletions

View File

@ -647,11 +647,12 @@ LibError ia32_get_call_target(void* ret_addr, void** target)
if(len >= 6 && c[6] == 0xFF && c[-5] == 0x15)
{
void* addr_of_target = *(void**)(c-4);
if(!debug_is_pointer_bogus(addr_of_target))
{
*target = *(void**)addr_of_target;
return INFO_OK;
}
// there are no meaningful checks we can perform: we're called from
// the stack trace code, so ring0 addresses may be legit.
// even if the pointer is 0, it's better to pass its value on
// (may help in tracking down memory corruption)
*target = *(void**)addr_of_target;
return INFO_OK;
}
// .. CALL [r32] => FF 00-3F(!14/15)
if(len >= 2 && c[-2] == 0xFF && c[-1] < 0x40 && c[-1] != 0x14 && c[-1] != 0x15)

View File

@ -110,7 +110,7 @@ extern void* alloca(size_t size);
# define FP_INFINITE (FP_NAN | FP_NORMAL)
# define FP_ZERO IA32_FP_ZERO
# define FP_SUBNORMAL (FP_NORMAL | FP_ZERO)
# define fpclassify ia32_fpclassify
# define fpclassify(x) ( (sizeof(x) == sizeof(float))? ia32_fpclassifyf(x) : ia32_fpclassify(x) )
// .. portable C emulation
# else
extern float rintf(float f);