|
From: Jim C. <cl...@cc...> - 2008-10-10 19:21:51
|
Hi,
I've written a tool that piggy backs onto of exp-ptrcheck and it seems
to be working pretty well. However, the tool is crashing when run on
several of the SPEC CINT2000 apps with the following error:
get_IntRegInfo(x86):failing on (13,1)
exp-ptrcheck: h_main.c:1350 (get_IntRegInfo): the 'impossible' happened.
It looks like there's a missing case (EBX+1) in the partial access to
integer register section. I added the following code at line 1314 in
h_main.c
if (o == GOF(EBX)+1 && is21) { o -= 1; o -= 0; goto contains_o; }
and it seems to fix the crash. Does that look correct? or is there
some other reason why this case was missing.
Thanks,
~Jim
|
|
From: Julian S. <js...@ac...> - 2008-10-11 09:40:35
|
> I've written a tool that piggy backs onto of exp-ptrcheck and it seems
> to be working pretty well.
Sounds interesting. What does it do?
> if (o == GOF(EBX)+1 && is21) { o -= 1; o -= 0; goto contains_o; }
>
> and it seems to fix the crash. Does that look correct? or is there
> some other reason why this case was missing.
Yes, that looks right. I added those cases on-demand, so as to always
have at least one test example for each case (if you see what I mean)
and I guess this case never happened. It corresponds to an access to
the byte register %bh. Strange though, since I tested on some very
large applications.
J
|