summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorAlbert Cheng <acheng@hdfgroup.org>2010-04-28 17:11:11 (GMT)
committerAlbert Cheng <acheng@hdfgroup.org>2010-04-28 17:11:11 (GMT)
commit1c2f19b16e8cf20651b8893cfff884c9635586bd (patch)
tree5d7aef0e6d5aa341b5918082379d1a1b132f5e44 /configure
parent5a26307f8666e50b37327e042f3005463636f73c (diff)
downloadhdf5-1c2f19b16e8cf20651b8893cfff884c9635586bd.zip
hdf5-1c2f19b16e8cf20651b8893cfff884c9635586bd.tar.gz
hdf5-1c2f19b16e8cf20651b8893cfff884c9635586bd.tar.bz2
[svn-r18658] Bug: 1764
Description: longjmp do not necessary restore signal that is blocked during the signal handling. This caused the Alignment test to fail quietly, resulting in wrong alignment information which will cause failures later. Solution: One can use sigsetjmp/siglongjmp to restore signal handling but not all systems such as Cray XT or VMS supports sigsetjmp. Backup solution is to use sigprocmask to reset the signal. Again, some systems may not support it either. Added code to try the first and then the second solution. Also added tests to verify if the signal_handler routines are working properly. Finally, added code to print results of the verification (in form of comments) to H5Tinit.c for inspection in case of failure. (Note that many platforms do not have alignment limits at all and ALIGNMNET code never raise the SIGBUS or SIGSEGV errors. In those cases, it does not matter whether the signal handlers work or not. Again, this can be deduced from the results comments near the end of the H5Tinit.c. If the sum of signal handlers called equals the total of verify, it means ALIGNMENT does not raise any signals.) Tested: htcommittested (linew is not accessible), jam(serial), Redstorm.
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure17
1 files changed, 15 insertions, 2 deletions
diff --git a/configure b/configure
index ea7adf4..4a816f1 100755
--- a/configure
+++ b/configure
@@ -24831,7 +24831,7 @@ _ACEOF
fi
done
-for ac_func in gethostname getpwuid getrusage longjmp lstat
+for ac_func in gethostname getpwuid getrusage lstat
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -24844,7 +24844,20 @@ _ACEOF
fi
done
-for ac_func in rand_r random setsysinfo siglongjmp signal
+for ac_func in rand_r random setsysinfo
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+eval as_val=\$$as_ac_var
+ if test "x$as_val" = x""yes; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+for ac_func in signal longjmp setjmp siglongjmp sigsetjmp sigprocmask
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"