Re: [PATCH] Fix GCC tests fail for installed toolchain due to ASan, UBSan and TSan testsuites drop GCC_EXEC_PREFIX.

2014-10-10 Thread Jakub Jelinek
On Fri, Oct 10, 2014 at 01:09:00PM +0400, Maxim Ostapenko wrote:
> This works indeed. However, calling set_ld_library_path_env_vars in {asan,
> tsan, ubsan}_finish will lead to updating LD_LIBRARY_PATH_{32, 64},
> LD_RUN_PATH etc. with "$ld_library_path:$orig_ld_{library_path_32,
> library_path_64, run, etc}". Is this fine?

Isn't that the state in which asan_init has been called?

I mean, all of asan.exp, tsan.exp and ubsan.exp source gcc-dg.exp which does:
global orig_environment_saved

# This file may be sourced, so don't override environment settings
# that have been previously setup.
if { $orig_environment_saved == 0 } {
append ld_library_path [gcc-set-multilib-library-path $GCC_UNDER_TEST]
set_ld_library_path_env_vars
}

so by the time asan_init etc. is called, it should have been
in LD_LIBRARY_PATH* etc. already.

2014-10-10  Max Ostapenko  
   

   
* lib/asan-dg.exp (asan_link_flags): Save ld_library_path.  
   
* lib/tsan-dg.exp (tsan_link_flags): Likewise.  
   
* lib/ubsan-dg.exp (ubsan_link_flags): Likewise.
   
* lib/asan-dg.exp (asan_finish): Remove
* restore_ld_library_path_env_vars. 
 
Restore ld_library_path with saved value. Restore LD_LIBRARY_PATH   
   
related env variables by calling set_ld_library_path_env_vars.  
   
* lib/tsan-dg.exp (tsan_finish): Likewise.  
   
* lib/ubsan-dg.exp (ubsan_finish): Likewise.
   

I'd rather duplicate the descriptions than duplicate the filenames in
the same ChangeLog entry.  So, please put all asan-dg.exp changes together
etc.

Ok with that change.

Jakub


Re: [PATCH] Fix GCC tests fail for installed toolchain due to ASan, UBSan and TSan testsuites drop GCC_EXEC_PREFIX.

2014-10-10 Thread Maxim Ostapenko


On 10/10/2014 11:30 AM, Jakub Jelinek wrote:

On Fri, Oct 10, 2014 at 11:13:11AM +0400, Maxim Ostapenko wrote:

Adding Jakub.

-Maxim
On 10/09/2014 04:34 PM, Maxim Ostapenko wrote:

Hi,

After enabling ASan, TSan and UBSan testsuites for installed toolchain,
many tests started to fail. This is caused by wrong logic in {asan, ubsan,
tsan}_finish
functions. Here, restore_ld_library_path is called, that is wrong, because
it drops some env variables ( GCC_EXEC_PREFIX, LD_LIBRARY_PATH, etc) to
state that was before gcc-dg.exp initialized testing environment, so
installed GCC will be confused to find some needed stuff later.

Removing restore_ld_library_path from {asan, ubsan, tsan}_finish seems to
fix the issue.

Tested on x86_64-pc-linux-gnu, ok to commit?

-Maxim

gcc/testsuite/ChangeLog:

2014-10-09  Max Ostapenko  

* lib/asan-dg.exp (asan_finish): Remove 
restore_ld_library_path_env_vars.
* lib/tsan-dg.exp (tsan_finish): Likewise.
* lib/ubsan-dg.exp (ubsan_finish): Likewise.

That looks wrong to me, we don't want to keep the libsanitizer paths in
LD_LIBRARY_PATH* after we leave asan.exp etc.

So, perhaps instead save ld_library_path into some global variable
(like {a,t,ub}san_saved_ld_library_path) during {a,t,ub}san_link_flags
before appending there anything, and replace
restore_ld_library_path_env_vars
with
set ld_library_path ${a,t,ub}san_saved_ld_library_path
set_ld_library_path_env_vars
?

Jakub



This works indeed. However, calling set_ld_library_path_env_vars in 
{asan, tsan, ubsan}_finish will lead to updating LD_LIBRARY_PATH_{32, 
64}, LD_RUN_PATH etc. with "$ld_library_path:$orig_ld_{library_path_32, 
library_path_64, run, etc}". Is this fine?


-Maxim
gcc/testsuite/ChangeLog:

2014-10-10  Max Ostapenko  

	* lib/asan-dg.exp (asan_link_flags): Save ld_library_path.
	* lib/tsan-dg.exp (tsan_link_flags): Likewise.
	* lib/ubsan-dg.exp (ubsan_link_flags): Likewise.
	* lib/asan-dg.exp (asan_finish): Remove restore_ld_library_path_env_vars.
	Restore ld_library_path with saved value. Restore LD_LIBRARY_PATH
	related env variables by calling set_ld_library_path_env_vars.
	* lib/tsan-dg.exp (tsan_finish): Likewise.
	* lib/ubsan-dg.exp (ubsan_finish): Likewise.

diff --git a/gcc/testsuite/lib/asan-dg.exp b/gcc/testsuite/lib/asan-dg.exp
index 9769138..4e8b4d6 100644
--- a/gcc/testsuite/lib/asan-dg.exp
+++ b/gcc/testsuite/lib/asan-dg.exp
@@ -47,11 +47,13 @@ proc asan_link_flags { paths } {
 global srcdir
 global ld_library_path
 global shlib_ext
+global asan_saved_library_path
 
 set gccpath ${paths}
 set flags ""
 
 set shlib_ext [get_shlib_extension]
+set asan_saved_library_path $ld_library_path
 
 if { $gccpath != "" } {
   if { [file exists "${gccpath}/libsanitizer/asan/.libs/libasan.a"]
@@ -122,6 +124,8 @@ proc asan_finish { args } {
 global TEST_ALWAYS_FLAGS
 global asan_saved_TEST_ALWAYS_FLAGS
 global asan_saved_ALWAYS_CXXFLAGS
+global asan_saved_library_path
+global ld_library_path
 
 if [info exists asan_saved_ALWAYS_CXXFLAGS ] {
 	set ALWAYS_CXXFLAGS $asan_saved_ALWAYS_CXXFLAGS
@@ -132,7 +136,8 @@ proc asan_finish { args } {
 	unset TEST_ALWAYS_FLAGS
 	}
 }
-restore_ld_library_path_env_vars
+set ld_library_path $asan_saved_library_path
+set_ld_library_path_env_vars
 }
 
 # Symbolize lines like
diff --git a/gcc/testsuite/lib/tsan-dg.exp b/gcc/testsuite/lib/tsan-dg.exp
index 54ec404..77c85ff 100644
--- a/gcc/testsuite/lib/tsan-dg.exp
+++ b/gcc/testsuite/lib/tsan-dg.exp
@@ -32,11 +32,13 @@ proc tsan_link_flags { paths } {
 global srcdir
 global ld_library_path
 global shlib_ext
+global tsan_saved_library_path
 
 set gccpath ${paths}
 set flags ""
 
 set shlib_ext [get_shlib_extension]
+set tsan_saved_library_path $ld_library_path
 
 if { $gccpath != "" } {
   if { [file exists "${gccpath}/libsanitizer/tsan/.libs/libtsan.a"]
@@ -127,6 +129,8 @@ proc tsan_finish { args } {
 global tsan_saved_ALWAYS_CXXFLAGS
 global dg-do-what-default
 global tsan_saved_dg-do-what-default
+global tsan_saved_library_path
+global ld_library_path
 
 if [info exists tsan_saved_ALWAYS_CXXFLAGS ] {
 	set ALWAYS_CXXFLAGS $tsan_saved_ALWAYS_CXXFLAGS
@@ -143,5 +147,6 @@ proc tsan_finish { args } {
 } else {
 	unset dg-do-what-default
 }
-restore_ld_library_path_env_vars
+set ld_library_path $tsan_saved_library_path
+set_ld_library_path_env_vars
 }
diff --git a/gcc/testsuite/lib/ubsan-dg.exp b/gcc/testsuite/lib/ubsan-dg.exp
index 5a7a653..3bfdcc8 100644
--- a/gcc/testsuite/lib/ubsan-dg.exp
+++ b/gcc/testsuite/lib/ubsan-dg.exp
@@ -32,11 +32,13 @@ proc ubsan_link_flags { paths } {
 global srcdir
 global ld_library_path
 global shlib_ext
+global ubsan_saved_library_path
 
 set gccpath ${paths}
 set flags ""
 
 set shlib_ext [get_shlib_extension]
+set ubsan_saved_library_path $ld_library_path
 
 if {

Re: [PATCH] Fix GCC tests fail for installed toolchain due to ASan, UBSan and TSan testsuites drop GCC_EXEC_PREFIX.

2014-10-10 Thread Jakub Jelinek
On Fri, Oct 10, 2014 at 11:13:11AM +0400, Maxim Ostapenko wrote:
> Adding Jakub.
> 
> -Maxim
> On 10/09/2014 04:34 PM, Maxim Ostapenko wrote:
> >Hi,
> >
> >After enabling ASan, TSan and UBSan testsuites for installed toolchain,
> >many tests started to fail. This is caused by wrong logic in {asan, ubsan,
> >tsan}_finish
> >functions. Here, restore_ld_library_path is called, that is wrong, because
> >it drops some env variables ( GCC_EXEC_PREFIX, LD_LIBRARY_PATH, etc) to
> >state that was before gcc-dg.exp initialized testing environment, so
> >installed GCC will be confused to find some needed stuff later.
> >
> >Removing restore_ld_library_path from {asan, ubsan, tsan}_finish seems to
> >fix the issue.
> >
> >Tested on x86_64-pc-linux-gnu, ok to commit?
> >
> >-Maxim
> 

> gcc/testsuite/ChangeLog:
> 
> 2014-10-09  Max Ostapenko  
> 
>   * lib/asan-dg.exp (asan_finish): Remove 
> restore_ld_library_path_env_vars.
>   * lib/tsan-dg.exp (tsan_finish): Likewise.
>   * lib/ubsan-dg.exp (ubsan_finish): Likewise.

That looks wrong to me, we don't want to keep the libsanitizer paths in
LD_LIBRARY_PATH* after we leave asan.exp etc.

So, perhaps instead save ld_library_path into some global variable
(like {a,t,ub}san_saved_ld_library_path) during {a,t,ub}san_link_flags
before appending there anything, and replace
restore_ld_library_path_env_vars
with
set ld_library_path ${a,t,ub}san_saved_ld_library_path
set_ld_library_path_env_vars
?

Jakub


Re: [PATCH] Fix GCC tests fail for installed toolchain due to ASan, UBSan and TSan testsuites drop GCC_EXEC_PREFIX.

2014-10-10 Thread Maxim Ostapenko

Adding Jakub.

-Maxim
On 10/09/2014 04:34 PM, Maxim Ostapenko wrote:

Hi,

After enabling ASan, TSan and UBSan testsuites for installed 
toolchain, many tests started to fail. This is caused by wrong logic 
in {asan, ubsan, tsan}_finish
functions. Here, restore_ld_library_path is called, that is wrong, 
because it drops some env variables ( GCC_EXEC_PREFIX, 
LD_LIBRARY_PATH, etc) to state that was before gcc-dg.exp initialized 
testing environment, so installed GCC will be confused to find some 
needed stuff later.


Removing restore_ld_library_path from {asan, ubsan, tsan}_finish seems 
to fix the issue.


Tested on x86_64-pc-linux-gnu, ok to commit?

-Maxim


gcc/testsuite/ChangeLog:

2014-10-09  Max Ostapenko  

	* lib/asan-dg.exp (asan_finish): Remove restore_ld_library_path_env_vars.
	* lib/tsan-dg.exp (tsan_finish): Likewise.
	* lib/ubsan-dg.exp (ubsan_finish): Likewise.

diff --git a/gcc/testsuite/lib/asan-dg.exp b/gcc/testsuite/lib/asan-dg.exp
index 9769138..c98fd3c 100644
--- a/gcc/testsuite/lib/asan-dg.exp
+++ b/gcc/testsuite/lib/asan-dg.exp
@@ -132,7 +132,6 @@ proc asan_finish { args } {
 	unset TEST_ALWAYS_FLAGS
 	}
 }
-restore_ld_library_path_env_vars
 }
 
 # Symbolize lines like
diff --git a/gcc/testsuite/lib/tsan-dg.exp b/gcc/testsuite/lib/tsan-dg.exp
index 54ec404..6f7a4d9 100644
--- a/gcc/testsuite/lib/tsan-dg.exp
+++ b/gcc/testsuite/lib/tsan-dg.exp
@@ -143,5 +143,4 @@ proc tsan_finish { args } {
 } else {
 	unset dg-do-what-default
 }
-restore_ld_library_path_env_vars
 }
diff --git a/gcc/testsuite/lib/ubsan-dg.exp b/gcc/testsuite/lib/ubsan-dg.exp
index 5a7a653..87c460f 100644
--- a/gcc/testsuite/lib/ubsan-dg.exp
+++ b/gcc/testsuite/lib/ubsan-dg.exp
@@ -114,5 +114,4 @@ proc ubsan_finish { args } {
 	unset TEST_ALWAYS_FLAGS
 	}
 }
-restore_ld_library_path_env_vars
 }


[PATCH] Fix GCC tests fail for installed toolchain due to ASan, UBSan and TSan testsuites drop GCC_EXEC_PREFIX.

2014-10-09 Thread Maxim Ostapenko

Hi,

After enabling ASan, TSan and UBSan testsuites for installed toolchain, 
many tests started to fail. This is caused by wrong logic in {asan, 
ubsan, tsan}_finish
functions. Here, restore_ld_library_path is called, that is wrong, 
because it drops some env variables ( GCC_EXEC_PREFIX, LD_LIBRARY_PATH, 
etc) to state that was before gcc-dg.exp initialized testing 
environment, so installed GCC will be confused to find some needed stuff 
later.


Removing restore_ld_library_path from {asan, ubsan, tsan}_finish seems 
to fix the issue.


Tested on x86_64-pc-linux-gnu, ok to commit?

-Maxim
gcc/testsuite/ChangeLog:

2014-10-09  Max Ostapenko  

	* lib/asan-dg.exp (asan_finish): Remove restore_ld_library_path_env_vars.
	* lib/tsan-dg.exp (tsan_finish): Likewise.
	* lib/ubsan-dg.exp (ubsan_finish): Likewise.

diff --git a/gcc/testsuite/lib/asan-dg.exp b/gcc/testsuite/lib/asan-dg.exp
index 9769138..c98fd3c 100644
--- a/gcc/testsuite/lib/asan-dg.exp
+++ b/gcc/testsuite/lib/asan-dg.exp
@@ -132,7 +132,6 @@ proc asan_finish { args } {
 	unset TEST_ALWAYS_FLAGS
 	}
 }
-restore_ld_library_path_env_vars
 }
 
 # Symbolize lines like
diff --git a/gcc/testsuite/lib/tsan-dg.exp b/gcc/testsuite/lib/tsan-dg.exp
index 54ec404..6f7a4d9 100644
--- a/gcc/testsuite/lib/tsan-dg.exp
+++ b/gcc/testsuite/lib/tsan-dg.exp
@@ -143,5 +143,4 @@ proc tsan_finish { args } {
 } else {
 	unset dg-do-what-default
 }
-restore_ld_library_path_env_vars
 }
diff --git a/gcc/testsuite/lib/ubsan-dg.exp b/gcc/testsuite/lib/ubsan-dg.exp
index 5a7a653..87c460f 100644
--- a/gcc/testsuite/lib/ubsan-dg.exp
+++ b/gcc/testsuite/lib/ubsan-dg.exp
@@ -114,5 +114,4 @@ proc ubsan_finish { args } {
 	unset TEST_ALWAYS_FLAGS
 	}
 }
-restore_ld_library_path_env_vars
 }