|
From: Ivo R. <iv...@iv...> - 2015-03-17 08:32:31
|
[also submitted as bug report https://bugs.kde.org/show_bug.cgi?id=345248] Dear Valgrind developers, we would like to ask you to integrate support for Solaris and illumos OS in upstream Valgrind. First some background about Solaris OS [1]. It is an OS originally developed by Sun Microsystems. In 2005 it was renamed to OpenSolaris and open sourced. Right before acquisition of Sun Microsystems by Oracle in 2010, a fork called "illumos" was launched. Since then, Solaris is also known as Oracle Solaris. At present, there are just few differences between Solaris and illumos and therefore this port targets both. We have spent huge effort and much time during last 4 years working on x86/Solaris, amd64/Solaris, x86/illumos and amd64/illumos and at this point we think the port is mature and stable enough to be integrated into upstream Valgrind. The port currently lives as a separate fork in [2]. This port is a collaborative effort of several people; and everyone can make nontrivial changes. >From an architectural point of view, port of Solaris is first class citizen in Valgrind. It plays nicely within the current framework. When necessary, new interfaces were introduced and documented in a backwards compatible manner. All production tools and core functionality has been ported. Although Solaris differs for example from Linux in certain areas, it is much more common to it than for example Darwin is. Main differences lie especially in syscall handling, signal handling, syscall and ioctl wrappers, fork/vfork support, coredump support, gdbserver support, client image initialization and loading and supporting Solaris libc (not GNU libc). >From testing perspective, we added 75 new regression test cases with more than 7,500 lines of code. For example every syscall and ioctl wrapper is thoroughly tested for all possible combinations of parameters. We also ported many test cases from linux-specific directories. The output of 'make regtest' is quite clean, with only few problems present: == 717 tests, 11 stderr failures, 1 stdout failure, 1 stderrB failure, 0 stdoutB failures, 0 post failures == gdbserver_tests/hginfo (stderrB) memcheck/tests/descr_belowsp (stderr) memcheck/tests/solaris/lsframe2 (stderr) memcheck/tests/solaris/thr_daemon_exit (stdout) memcheck/tests/solaris/thr_daemon_exit (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/tc21_pthonce (stderr) exp-sgcheck/tests/preen_invars (stderr) exp-sgcheck/tests/stackerr (stderr) The port is actively sync'ed with the upstream sources; currently at SVN Valgrind r15003 and VEX r3102 (3.11.0-SVN). We divided the bulk of diffs between valgrind-solaris and valgrind-upstream into several patches for easier navigation. These are: vsol_1_core.patch vsol_2_vex.patch vsol_3_tools.patch vsol_4_new_core.patch vsol_5_new_tests.patch vsol_6_after_patch_fixup.sh When these patches are applied to valgrind-upstream checked out at Valgrind r15003 and VEX r3102, there are no differences in failed test cases (tested on x86/Linux and amd64/Linux - Ubuntu) with and without our patches. This means that we did not cause any regressions on Linux: == 711 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 1 stdoutB failure, 0 post failures == gdbserver_tests/hgtls (stdoutB) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc09_bad_unlock (stderr) [these failures are present in valgrind-upstream as well] I am attaching all the mentioned patches for reference. For the actual integration, I can think of 3 possible scenarios: - review the attached patches as they are and then integrate them - submit a separate bug report for every affected part of functionality (such as VEX, build support, individual modules in coregrind, individual tools and their tests) - create a separate branch in SVN, integrate attached patches there, review changes and then merge into main branch Let me know which scenario you prefer. When support for Solaris/illumos will be integrated, we will setup automated nightly testing like other architectures do. This means there will be continuous regression testing for Solaris and illumos. Testing Solaris/illumos on x86/amd64 is also very easy to do in a VirtualBox VM on your laptop/workstation [3] [4]. [1] http://en.wikipedia.org/wiki/Solaris_%28operating_system%29 [2] https://bitbucket.org/iraisr/valgrind-solaris [3] http://www.oracle.com/technetwork/server-storage/solaris11/downloads/vm-templates-2245495.html [4] http://omnios.omniti.com/wiki.php/Installation |
|
From: Ivo R. <iv...@iv...> - 2015-04-10 06:06:36
|
2015-03-17 9:32 GMT+01:00 Ivo Raisr <iv...@iv...>: > [also submitted as bug report https://bugs.kde.org/show_bug.cgi?id=345248] > > Dear Valgrind developers, > we would like to ask you to integrate support for Solaris and illumos OS > in upstream Valgrind. > I would like to solicit more code review comments for this set of patches. So far Julian Seward, Rhys Kidd and Florian Krohm posted their findings; all have been addressed. Please could you review these patches (or at least functional area you are interested in). Kind regards, I. |