|
From: Julian S. <js...@ac...> - 2019-12-27 10:21:25
|
Greetings. Over the past couple of months I have been slowly working on the 'grail' branch. This enhances the guest-code-to-IR translation so as to be able to identify and recover C-style '&&' expressions in the incoming guest code. The reason for this is to make it possible to avoid, in Memcheck, false positives resulting from optimising compilers (correctly) creating branches on undefined values. See [1] below for further details of the transformation. The idiom-recovery is done at the IR level, so that (1) it applies to all targets, and (2) does not (well, almost does not) change any of the front ends (xx_toIR.c). I tried to ensure it works on all targets. Unfortunately, on S390 and MIPS, there were segfaults that I could not make sense of. For those targets, the idiom recovery is currently disabled, so at least the changes don't make anything worse. For *all* targets, the new code also uniformly allows chasing through unconditional branches to known targets and calls to known targets, even on S390 and MIPS. Previously that functionality was available only on some targets. I plan to merge the branch to trunk on Friday 3 Jan. I hope there will be no unexpected breakage; if there is, I'll try to fix it ASAP. For S390 and MIPS I may well be in contact with the port maintainers to try and figure out why they segfault when the &&-idiom-recovery is enabled. J [1] https://sourceware.org/git/?p=valgrind.git;a=commit;h=7204d087d266acf4f42dbf1db9a21c6fd0640dd3 |