From 38d7235ab45334e0c88f97c1e5bc7d4814f59669 Mon Sep 17 00:00:00 2001 From: Sam Varshavchik Date: Tue, 27 Oct 2020 20:01:00 -0400 Subject: Fix LTO failure on F33. --- waitlib/Makefile.am | 3 ++- waitlib/configure.ac | 20 ++++++++++++++++++++ waitlib/testwait.c | 16 +++++++++++++--- waitlib/testwait2.c | 9 --------- 4 files changed, 35 insertions(+), 13 deletions(-) delete mode 100644 waitlib/testwait2.c (limited to 'waitlib') diff --git a/waitlib/Makefile.am b/waitlib/Makefile.am index 33be798..a743c58 100644 --- a/waitlib/Makefile.am +++ b/waitlib/Makefile.am @@ -10,9 +10,10 @@ EXTRA_DIST=confwait.c libwaitlib_la_SOURCES=waitlib.c waitlib.h waitlib2.c -testwait_SOURCES=testwait.c testwait2.c +testwait_SOURCES=testwait.c testwait_DEPENDENCIES=libwaitlib.la testwait_LDADD=libwaitlib.la +testwait_CFLAGS=@PTHREAD@ check-am: ./testwait diff --git a/waitlib/configure.ac b/waitlib/configure.ac index d475dee..c40846d 100644 --- a/waitlib/configure.ac +++ b/waitlib/configure.ac @@ -106,4 +106,24 @@ then CFLAGS="-Wall $CFLAGS" fi +save_CFLAGS="$CFLAGS" + +AC_CACHE_CHECK([for -pthread flag],waitlib_cv_PTHREAD, + CFLAGS="$CFLAGS -pthread" + AC_TRY_COMPILE([],[], + [ + waitlib_cv_PTHREAD='yes' + ], + [ + waitlib_cv_PTHREAD='no' + ])) +CFLAGS="$save_CFLAGS" + +PTHREAD='' +if test "$waitlib_cv_PTHREAD" = "yes" +then + PTHREAD="$CFLAGS -pthread" +fi +AC_SUBST(PTHREAD) + AC_OUTPUT(Makefile) diff --git a/waitlib/testwait.c b/waitlib/testwait.c index fb0fe48..6020c36 100644 --- a/waitlib/testwait.c +++ b/waitlib/testwait.c @@ -1,5 +1,5 @@ /* -** Copyright 1998 - 2006 Double Precision, Inc. +** Copyright 1998 - 2020 Double Precision, Inc. ** See COPYING for distribution information. */ @@ -10,17 +10,24 @@ #include #include #include +#include /* Stress test waitlib.c */ #define NUMCHILDREN 100 /* Start 100 child processes */ #define INITCHILDREN 10 /* Start with these many child procs */ +pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; +pthread_cond_t cond = PTHREAD_COND_INITIALIZER; + static unsigned started, finished; static void reap_child(pid_t p, int dummy) { + pthread_mutex_lock(&mutex); ++finished; + pthread_cond_signal(&cond); + pthread_mutex_unlock(&mutex); } static RETSIGTYPE sighandler(int sig) @@ -87,13 +94,16 @@ char c; ; /* Shut gcc up */ close(pipefd[1]); close(pipefd2[0]); - while (started < NUMCHILDREN) if (start_child() == 0) _exit(0); alarm(30); + pthread_mutex_lock(&mutex); while (finished < started) - foobar(); + { + pthread_cond_wait(&cond, &mutex); + } + pthread_mutex_unlock(&mutex); exit(0); } diff --git a/waitlib/testwait2.c b/waitlib/testwait2.c deleted file mode 100644 index f64cc78..0000000 --- a/waitlib/testwait2.c +++ /dev/null @@ -1,9 +0,0 @@ -/* -** Copyright 1998 - 1999 Double Precision, Inc. -** See COPYING for distribution information. -*/ - - -void foobar() -{ -} -- cgit v1.2.3