|
From: Greg P. <gp...@us...> - 2006-08-01 06:03:33
|
vex's doHelperCall for ppc32 has an OS dependence
where Linux and Darwin do not match:
if (argreg%2 == 1) // Linux ppc32 abi spec for passing LONG_LONG
argreg++; // XXX: odd argreg => even rN
When passing a 64-bit integer parameter, Linux may skip a register,
which is handled by the code above. Darwin doesn't do that. This
first manifests itself in calls to Memcheck's MC_(helperc_STOREV64be),
causing random values to be written into the v bits.
Fixing it is easy (just remove those two lines on Darwin), but
it looks like the VGO_* macros aren't used in vex's code.
--
Greg Parker gp...@us...
|