On 05/09/2016 12:23 PM, Bernd Schmidt wrote:
On 05/06/2016 01:38 AM, Dhole wrote:
I've wrote a test case which fails (when it shouldn't) and I don't see
why.
I think it's setting the env var when executing the test, not when
executing the compiler.
Here's something that seems to work (with an appropriately adjusted
testcase). Cc'ing testsuite maintainers.
Bernd
* lib/gcc-dg.exp (orig_source_date_epoch_saved,
orig_source_date_epoch_checked): Initialize to 0.
(dg-set-source-date-epoch): New function.
(restore_source_epoch_env_var): New function.
(cleanup_after_saved_dg_test): Call it.
Index: gcc-dg.exp
===================================================================
--- gcc-dg.exp (revision 236021)
+++ gcc-dg.exp (working copy)
@@ -31,6 +31,9 @@ load_lib torture-options.exp
load_lib fortran-modules.exp
load_lib multiline.exp
+set orig_source_date_epoch_saved 0
+set orig_source_date_epoch_checked 0
+
# We set LC_ALL and LANG to C so that we get the same error messages as expected.
setenv LC_ALL C
setenv LANG C
@@ -422,9 +425,24 @@ proc dg-set-target-env-var { args } {
lappend set_target_env_var [list [lindex $args 1] [lindex $args 2]]
}
+proc dg-set-source-date-epoch { args } {
+ global orig_source_date_epoch
+ global orig_source_date_epoch_saved
+ global orig_source_date_epoch_checked
+ if { $orig_source_date_epoch_checked == 0 } {
+ if [info exists env(SOURCE_DATE_EPOCH)] {
+ set orig_source_date_epoch "$env(SOURCE_DATE_EPOCH)"
+ set orig_source_date_epoch_saved 1
+ }
+ set orig_source_date_epoch_checked 1
+ }
+ setenv SOURCE_DATE_EPOCH [lindex $args 1]
+}
+
proc set-target-env-var { } {
global set_target_env_var
upvar 1 saved_target_env_var saved_target_env_var
+ verbose "setting env var"
foreach env_var $set_target_env_var {
set var [lindex $env_var 0]
set value [lindex $env_var 1]
@@ -840,6 +858,18 @@ proc output-exists-not { args } {
}
}
+proc restore_source_epoch_env_var { } {
+ global orig_source_date_epoch_saved
+ global orig_source_date_epoch
+ global env
+
+ if { $orig_source_date_epoch_saved } {
+ setenv SOURCE_DATE_EPOCH "$orig_source_date_epoch"
+ } elseif [info exists env(SOURCE_DATE_EPOCH)] {
+ unsetenv SOURCE_DATE_EPOCH
+ }
+}
+
# We need to make sure that additional_* are cleared out after every
# test. It is not enough to clear them out *before* the next test run
# because gcc-target-compile gets run directly from some .exp files
@@ -877,6 +907,7 @@ if { [info procs saved-dg-test] == [list
if [info exists keep_saved_temps_suffixes] {
unset keep_saved_temps_suffixes
}
+ restore_source_epoch_env_var
unset_timeout_vars
if [info exists compiler_conditional_xfail_data] {
unset compiler_conditional_xfail_data