From 77f4ead72e55094fca78530bff75f83eb0faadbd Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Tue, 31 Oct 2017 20:40:10 +0000 Subject: [PATCH] jit: add a way to preserve testsuite executables gcc/jit/ChangeLog: * docs/internals/index.rst (Running the test suite): Document PRESERVE_EXECUTABLES. (Running under valgrind): Add markup to RUN_UNDER_VALGRIND. * docs/_build/texinfo/libgccjit.texi: Regenerate. gcc/testsuite/ChangeLog: * jit.dg/jit.exp (jit-dg-test): If PRESERVE_EXECUTABLES is set in the environment, don't delete the generated executable. From-SVN: r254282 --- gcc/jit/ChangeLog | 7 +++++++ gcc/jit/docs/_build/texinfo/libgccjit.texi | 18 ++++++++++++++---- gcc/jit/docs/internals/index.rst | 10 +++++++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/jit.dg/jit.exp | 9 +++++++++ 5 files changed, 42 insertions(+), 7 deletions(-) diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog index 24df99057a0..87b5473922a 100644 --- a/gcc/jit/ChangeLog +++ b/gcc/jit/ChangeLog @@ -1,3 +1,10 @@ +2017-10-31 David Malcolm + + * docs/internals/index.rst (Running the test suite): Document + PRESERVE_EXECUTABLES. + (Running under valgrind): Add markup to RUN_UNDER_VALGRIND. + * docs/_build/texinfo/libgccjit.texi: Regenerate. + 2017-10-04 David Malcolm * docs/cp/topics/expressions.rst (Vector expressions): New diff --git a/gcc/jit/docs/_build/texinfo/libgccjit.texi b/gcc/jit/docs/_build/texinfo/libgccjit.texi index 344c93e4ccf..a3b206f2dd4 100644 --- a/gcc/jit/docs/_build/texinfo/libgccjit.texi +++ b/gcc/jit/docs/_build/texinfo/libgccjit.texi @@ -19,7 +19,7 @@ @copying @quotation -libgccjit 8.0.0 (experimental 20171004), October 04, 2017 +libgccjit 8.0.0 (experimental 20171031), October 31, 2017 David Malcolm @@ -15016,7 +15016,12 @@ jit/build/gcc/testsuite/jit/jit.log @noindent -The test executables can be seen as: +The test executables are normally deleted after each test is run. For +debugging, they can be preserved by setting +@geindex PRESERVE_EXECUTABLES +@geindex environment variable; PRESERVE_EXECUTABLES +@code{PRESERVE_EXECUTABLES} +in the environment. If so, they can then be seen as: @example jit/build/gcc/testsuite/jit/*.exe @@ -15029,7 +15034,9 @@ which can be run independently. You can compile and run individual tests by passing "jit.exp=TESTNAME" to RUNTESTFLAGS e.g.: @example -[gcc] $ make check-jit RUNTESTFLAGS="-v -v -v jit.exp=test-factorial.c" +[gcc] $ PRESERVE_EXECUTABLES= \ + make check-jit \ + RUNTESTFLAGS="-v -v -v jit.exp=test-factorial.c" @end example @noindent @@ -15056,7 +15063,10 @@ and once a test has been compiled, you can debug it directly: @subsection Running under valgrind -The jit testsuite detects if RUN_UNDER_VALGRIND is present in the +The jit testsuite detects if +@geindex RUN_UNDER_VALGRIND +@geindex environment variable; RUN_UNDER_VALGRIND +@code{RUN_UNDER_VALGRIND} is present in the environment (with any value). If it is present, it runs the test client code under valgrind@footnote{http://valgrind.org}, specifcally, the default diff --git a/gcc/jit/docs/internals/index.rst b/gcc/jit/docs/internals/index.rst index cadf36283ef..4ad7f61f774 100644 --- a/gcc/jit/docs/internals/index.rst +++ b/gcc/jit/docs/internals/index.rst @@ -103,7 +103,9 @@ and detailed logs in: jit/build/gcc/testsuite/jit/jit.log -The test executables can be seen as: +The test executables are normally deleted after each test is run. For +debugging, they can be preserved by setting :envvar:`PRESERVE_EXECUTABLES` +in the environment. If so, they can then be seen as: .. code-block:: console @@ -115,7 +117,9 @@ You can compile and run individual tests by passing "jit.exp=TESTNAME" to RUNTES .. code-block:: console - [gcc] $ make check-jit RUNTESTFLAGS="-v -v -v jit.exp=test-factorial.c" + [gcc] $ PRESERVE_EXECUTABLES= \ + make check-jit \ + RUNTESTFLAGS="-v -v -v jit.exp=test-factorial.c" and once a test has been compiled, you can debug it directly: @@ -130,7 +134,7 @@ and once a test has been compiled, you can debug it directly: Running under valgrind ********************** -The jit testsuite detects if RUN_UNDER_VALGRIND is present in the +The jit testsuite detects if :envvar:`RUN_UNDER_VALGRIND` is present in the environment (with any value). If it is present, it runs the test client code under `valgrind `_, specifcally, the default diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 196c7a1f4f2..1af4fd2da43 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-10-31 David Malcolm + + * jit.dg/jit.exp (jit-dg-test): If PRESERVE_EXECUTABLES is set in + the environment, don't delete the generated executable. + 2017-10-31 David Malcolm * g++.dg/cpp0x/auto21.C: Update dg-error to reflect addition of diff --git a/gcc/testsuite/jit.dg/jit.exp b/gcc/testsuite/jit.dg/jit.exp index 39e37c2da82..869d9f693a0 100644 --- a/gcc/testsuite/jit.dg/jit.exp +++ b/gcc/testsuite/jit.dg/jit.exp @@ -580,6 +580,15 @@ proc jit-dg-test { prog do_what extra_tool_flags } { verbose "$name is not meant to generate a reproducer" } + # Normally we would return $comp_output and $output_file to the + # caller, which would delete $output_file, the generated executable. + # If we need to debug, it's handy to be able to suppress this behavior, + # keeping the executable around. + set preserve_executables [info exists env(PRESERVE_EXECUTABLES)] + if $preserve_executables { + set output_file "" + } + return [list $comp_output $output_file] } -- 2.30.2