Overhaul the way programs are loaded at startup and exec() works.  Now the
checking of programs done in these two places are combined, which avoids
duplicate code and greatly reduces the number of cases in which exec()
fails causing Valgrind to bomb out.

Also, we can now load some programs we could not previously, such as scripts
lacking a "#!" line at the start.  Also, the startup failure messages for
bad programs match the shell's messages very closely.

And I added a whole bunch of regtests to test all this.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4918 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/none/tests/shell_valid3.vgtest b/none/tests/shell_valid3.vgtest
new file mode 100644
index 0000000..2c4de94
--- /dev/null
+++ b/none/tests/shell_valid3.vgtest
@@ -0,0 +1,2 @@
+prog: shell_valid1
+vgopts: -q