Re: [PATCH] Fix GCC tests fail for installed toolchain due to ASan, UBSan and TSan testsuites drop GCC_EXEC_PREFIX.
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.
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.
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.
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.
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 }