This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Always organize test artifacts in a directory hierarchy


On 16-01-25 04:23 PM, Simon Marchi wrote:
> On 16-01-17 01:31 AM, Joel Brobecker wrote:
>>>> So it doesn't seem necessary.
>>>
>>> Works for me.  The patch LGTM.  Maybe wait a few more days to
>>> give others a chance to chime in though.
>>
>> LGTM too; and, for the record, I am very happy about this change.
>>
> 
> Hi Joel (and others),
> 
> I was doing some more testing, and found out that this patch breaks testing
> Ada when building in-tree.  I would merge the following patch just before
> the original one.
> 
> How does it look?
> 
> 
> From d69875543609365fdf70f09b30862834b790599a Mon Sep 17 00:00:00 2001
> From: Simon Marchi <simon.marchi@ericsson.com>
> Date: Mon, 25 Jan 2016 14:01:25 -0500
> Subject: [PATCH] Fix in-tree, parallel running of Ada tests
> 
> While testing the following patch,
> 
>   [PATCH] Always organize test artifacts in a directory hierarchy
>   https://sourceware.org/ml/gdb-patches/2016-01/msg00133.html
> 
> I noticed that it broke Ada testing.  This lead me to think that
> parallel testing when building in-tree didn't work previously in Ada.
> It is confirmed by this test:
> 
> $ make check TESTS="gdb.ada/fun_addr.exp" -j 2
> ...
> Running ./gdb.ada/fun_addr.exp ...
> FAIL: gdb.ada/fun_addr.exp: compilation foo.adb
> ...
> 
> This patch fixes in-tree parallel testing for Ada, and consequently
> serial and parallel testing when the aforementioned patch is applied.
> 
> The problem originates from the fact that Ada support code cd's to the
> builddir before compiling.  In itself it's not a problem, it allows to
> place intermediate auto-generated files in that directory.  The Ada
> compilation refers to the source file, which is in another directory,
> only by its base name (e.g. foo.adb).  In serial mode, that worked
> because builddir was the same as the source directory (e.g.
> gdb.ada/fun_addr/).  In an out-of-tree build, it works because the
> source directory is added as an include directory (note: this is not the
> same $srcdir as autoconf's):
> 
>   set srcdir [file dirname $source]
>   additional_flags=-I$srcdir
> 
> which becomes:
> 
>   additional_flags=-I/home/emaisin/build/binutils-gdb/gdb/testsuite/gdb.ada/fun_addr
> 
> However, when building in-tree, srcdir is relative: ./gdb.ada/fun_addr.
> When using parallel or always-in-outputs-directory mode, we are cd'ed in
> the outputs directory.  So -I$srcdir is relative to the current
> directory, which is wrong.
> 
> To fix it, I made the TCL variable srcdir (set in site.exp, from which
> everything else is derived) always absolute.  It is done by assigning
> autoconf's abs_srcdir instead of autoconf's srcdir.  This way -I$srcdir
> will always be good, regardless of where we cd'ed to.  A small apparent
> change is that when running tests, DejaGnu will say:
> 
>   Running /tmp/binutils-gdb/gdb/testsuite/gdb.ada/fun_addr.exp ...
> 
> instead of
> 
>   Running ./gdb.ada/fun_addr.exp ...
> 
> I hope it's not too much of an annoyance.  I think that it should make
> the testsuite a tiny bit more robust against other bugs of the same
> class.
> 
> Regtested in & out of tree, only with native target.
> ---
>  gdb/testsuite/Makefile.in | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/gdb/testsuite/Makefile.in b/gdb/testsuite/Makefile.in
> index 7c251d3..38c3052 100644
> --- a/gdb/testsuite/Makefile.in
> +++ b/gdb/testsuite/Makefile.in
> @@ -21,6 +21,7 @@ srcdir = @srcdir@
>  prefix = @prefix@
>  exec_prefix = @exec_prefix@
>  abs_builddir = @abs_builddir@
> +abs_srcdir = @abs_srcdir@
> 
>  target_alias = @target_noncanonical@
>  program_transform_name = @program_transform_name@
> @@ -119,7 +120,7 @@ $(abs_builddir)/site.exp site.exp: ./config.status Makefile
>  	@echo "set target_alias $(target_alias)" >> ./tmp0
>  	@echo "set target_triplet ${target_canonical}" >> ./tmp0
>  	@echo "set build_triplet ${build_canonical}" >> ./tmp0
> -	@echo "set srcdir ${srcdir}" >> ./tmp0
> +	@echo "set srcdir ${abs_srcdir}" >> ./tmp0
>  	@echo "set tool gdb" >> ./tmp0
>  	@echo 'source $${srcdir}/lib/append_gdb_boards_dir.exp' >> ./tmp0
>  	@echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0
> 

Ping.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]