|
From: Paul F. <pj...@wa...> - 2020-07-06 21:12:44
|
Hi Ed and dev team >> > Well, let’s try to get the ball rolling.> > I hope that after 10+ years we can finally get this into the main repository! I'd like to think that this would benefit everyone. [expecteds] > It sounds like for the most part these are a simple consequence of > using Clang and such, and not really something that can be "fixed." There might be a few 'expecteds' that I added or changed by mistake but on the whole I've gone a long way to analyze exactly the cause of each difference. Using clang changes a lot, and also the fact that many tests use UB. FreeBSD UB is not always the same as Linux UB. I'll go into details on one testcase, helgrind/tests/tc01_simple_race. For a GCC build, this failed because FreeBSD pthread/sem functions don't have @version. So the change that I made was to strip "@*" with filter_stderr and to update all of the expecteds. I'm planning on reversing this change. In filter_stderr I'll append an "@*" and then I can restore the expecteds to their original state. This will require some more powerful regexp foo like perl -p -e "s/pthread_create(?!@\*)/pthread_create@*/" otherwise Linux will get "@*@*". For a clang build, this still failed. This time it's because clang does tail call elimination in the wrapper stubs in vgpreload_helgrind-amd64-freebsd.so. The result is one less line in the callstack. As luck would have it, it is one of the lines that is not filtered out. The easy answer to that was a clang expected file. Again it might be possible with enough perl to insert the missing line and have just one expected file. Looking at the diff when Solaris support was added (git diff ac60633d6576315eceffde476d2512e812ea513b^ ac60633d6576315eceffde476d2512e812ea513b) it seems there were also many similar changes then. A+ Paul |