[PATCH] JIT, testsuite, Darwin: Initial testsuite fixes.

David Malcolm dmalcolm@redhat.com
Wed Aug 18 19:54:20 GMT 2021

On Wed, 2021-08-18 at 20:40 +0100, Iain Sandoe wrote:
> Hi,
> * Note, the strategy in jit.exp has the assumption that
> $target==$host
>   the patches here adhere to that - there is far less testsuite
> library
>   support for host-side facilities (which we’d probably want to add
> if
>   it was desirable to operate the Jit in a cross-compiler
> environment).

Various people have expressed wanting to use libgccjit for ahead-of-
time cross-compilation, so that's a use-case we're going to want to
support at some point (e.g. the libgccjit-based rustc backend).

> -------
> The testsuite setup for jit is not compatible with Darwin since it
> assumes that all targets support --export-dynamic.
>  - this is fixed by adding '-rdynamic' conditionally upon target
>    support for that (-rdynamic will be converted to the appropriate
>    linker option).
> There is also an assumption that a suitable version of dejagnu.h
> is present in some default include search path that is usable from
> the testsuite.  This is not the case for Darwin (dejagnu.h is not
> installed, and would not, in general, be found in any default 
> include
> search path if installed via one of the main 'distros').  Also, the
> upstream dejagnu.h has a definition of 'wait()' that clashes with a
> libc routines and therefore causes fails in the testsuite.
>  - This patch imports the header from dejagnu-1.6.2 and
>    * renames it to 'jit-dejagnu.h'
>    * patches it to avoid unused variable warnings and the clash
>      with the libc definition of wait ()
>    * In accordance with the advice in the expect man page, ensures
>      that the final output of the 'totals' print is stable.
> tested on i686, x86_64-darwin, x86_64, powerpc64-linux,
> OK for master?


> diff --git a/gcc/jit/docs/examples/tut04-toyvm/toyvm.c
> b/gcc/jit/docs/examples/tut04-toyvm/toyvm.c
> index e742f344068..8ea716e2d0a 100644
> --- a/gcc/jit/docs/examples/tut04-toyvm/toyvm.c
> +++ b/gcc/jit/docs/examples/tut04-toyvm/toyvm.c
> @@ -24,7 +24,7 @@ along with GCC; see the file COPYING3.  If not see
>  #include <stdlib.h>
>  #include <string.h>
> -#include <dejagnu.h>
> +#include "jit-dejagnu.h"
>  #include <libgccjit.h>
> diff --git a/gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
> b/gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
> index 4b9c7651ee3..7e9550159ad 100644
> --- a/gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
> +++ b/gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
> @@ -24,7 +24,7 @@ along with GCC; see the file COPYING3.  If not see
>  #include <stdlib.h>
>  #include <string.h>
> -#include <dejagnu.h>
> +#include "jit-dejagnu.h"
>  #include <libgccjit++.h>

There's a Makefile in gcc/jit/docs/examples/tut04-toyvm which can be
used to build these, so do the
  #include "jit-dejagnu.h"
will need to be adjusted to give a path that finds the new header?

That said, the Makefile seems to assume pkg-config, so it's not working
particularly well as-is, so maybe there's no need to fix this.

Other than that nit, looks good to me.

test-threads.c does some preprocessor hackery to make <dejagnu.h>
threadsafe which it would be nice to fix, but that feels like followup
work and not needed for this patch.


More information about the Gcc-patches mailing list