Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package userspace-rcu for openSUSE:Factory checked in at 2021-03-15 10:53:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/userspace-rcu (Old) and /work/SRC/openSUSE:Factory/.userspace-rcu.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "userspace-rcu" Mon Mar 15 10:53:49 2021 rev:16 rq:878330 version:0.12.2 Changes: -------- --- /work/SRC/openSUSE:Factory/userspace-rcu/userspace-rcu.changes 2020-08-28 21:14:36.928127739 +0200 +++ /work/SRC/openSUSE:Factory/.userspace-rcu.new.2401/userspace-rcu.changes 2021-03-15 10:53:51.917122442 +0100 @@ -1,0 +2,14 @@ +Mon Mar 8 23:28:27 UTC 2021 - Dirk M??ller <dmuel...@suse.com> + +- update to 0.12.2: + * fix: exclude clang from GCC version blacklists + * aarch64: blacklist gcc prior to 5.1 + * Fix: configure: support Autoconf 2.70 + * fix: bump tests thread limit to 4096 + * cleanup: Improve wording of CONFIG_RCU_DEBUG description + * fix: explicitly include urcu/config.h in files using CONFIG_RCU_ defines + * Fix typo in README.md + * fix: add -lurcu-common to pkg-config libs for each flavor + * call_rcu: Fix race between rcu_barrier() and call_rcu_data_free() + +------------------------------------------------------------------- Old: ---- userspace-rcu-0.12.1.tar.bz2 userspace-rcu-0.12.1.tar.bz2.asc New: ---- userspace-rcu-0.12.2.tar.bz2 userspace-rcu-0.12.2.tar.bz2.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ userspace-rcu.spec ++++++ --- /var/tmp/diff_new_pack.mb3pxB/_old 2021-03-15 10:53:52.497123333 +0100 +++ /var/tmp/diff_new_pack.mb3pxB/_new 2021-03-15 10:53:52.501123339 +0100 @@ -2,7 +2,7 @@ # # spec file for package userspace-rcu # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # Copyright (c) 2012 Pascal Bleser <pascal.ble...@opensuse.org> # # All modifications and additions to the file contributed by third parties @@ -20,7 +20,7 @@ %define soname 6 Name: userspace-rcu -Version: 0.12.1 +Version: 0.12.2 Release: 0 Summary: Userspace Read-Copy-Update Library License: LGPL-2.1-or-later AND MIT AND GPL-2.0-or-later AND GPL-3.0-or-later ++++++ userspace-rcu-0.12.1.tar.bz2 -> userspace-rcu-0.12.2.tar.bz2 ++++++ ++++ 3126 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/ChangeLog new/userspace-rcu-0.12.2/ChangeLog --- old/userspace-rcu-0.12.1/ChangeLog 2020-04-22 15:02:35.000000000 +0200 +++ new/userspace-rcu-0.12.2/ChangeLog 2021-02-17 20:53:14.000000000 +0100 @@ -1,3 +1,14 @@ +2021-02-17 Userspace RCU 0.12.2 + * fix: exclude clang from GCC version blacklists + * aarch64: blacklist gcc prior to 5.1 + * Fix: configure: support Autoconf 2.70 + * fix: bump tests thread limit to 4096 + * cleanup: Improve wording of CONFIG_RCU_DEBUG description + * fix: explicitly include urcu/config.h in files using CONFIG_RCU_ defines + * Fix typo in README.md + * fix: add -lurcu-common to pkg-config libs for each flavor + * call_rcu: Fix race between rcu_barrier() and call_rcu_data_free() + 2020-04-22 Userspace RCU 0.12.1 * Fix: tls-compat.h exposes compiler-dependent public configuration * Fix: tap array subscript has type char warning diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/README.md new/userspace-rcu-0.12.2/README.md --- old/userspace-rcu-0.12.1/README.md 2020-04-22 15:02:35.000000000 +0200 +++ new/userspace-rcu-0.12.2/README.md 2021-01-25 22:34:20.000000000 +0100 @@ -86,6 +86,8 @@ - Alpha, ia64 and ARM architectures depend on GCC 4.x with atomic builtins support. For ARM this was introduced with GCC 4.4: http://gcc.gnu.org/gcc-4.4/changes.html. + - Linux aarch64 depends on GCC 5.1 or better because prior versions + perform unsafe access to deallocated stack. Clang version 3.0 (based on LLVM 3.0) is supported. @@ -388,7 +390,7 @@ ./configure --enable-rcu-debug For fine grained enabling of debugging self-checks, build -urserspace-rcu with DEBUG_RCU defined and compile dependent +userspace-rcu with DEBUG_RCU defined and compile dependent applications with DEBUG_RCU defined when necessary. Warning: Enabling this feature result in a performance penalty. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/configure.ac new/userspace-rcu-0.12.2/configure.ac --- old/userspace-rcu-0.12.1/configure.ac 2020-04-22 15:02:35.000000000 +0200 +++ new/userspace-rcu-0.12.2/configure.ac 2021-02-17 20:53:24.000000000 +0100 @@ -1,5 +1,5 @@ AC_PREREQ(2.59) -AC_INIT([userspace-rcu],[0.12.1],[mathieu dot desnoyers at efficios dot com], [], [http://liburcu.org/]) +AC_INIT([userspace-rcu],[0.12.2],[mathieu dot desnoyers at efficios dot com], [], [http://liburcu.org/]) # Following the numbering scheme proposed by libtool for the library version # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html @@ -28,7 +28,7 @@ AH_TEMPLATE([CONFIG_RCU_TLS], [TLS provided by the compiler.]) AH_TEMPLATE([CONFIG_RCU_HAVE_CLOCK_GETTIME], [clock_gettime() is detected.]) AH_TEMPLATE([CONFIG_RCU_FORCE_SYS_MEMBARRIER], [Require the operating system to support the membarrier system call for default and bulletproof flavors.]) -AH_TEMPLATE([CONFIG_RCU_DEBUG], [Enable internal debugging self-checks. Introduce performance penalty.]) +AH_TEMPLATE([CONFIG_RCU_DEBUG], [Enable internal debugging self-checks. Introduces a performance penalty.]) AH_TEMPLATE([CONFIG_CDS_LFHT_ITER_DEBUG], [Enable extra debugging checks for lock-free hash table iterator traversal. Alters the rculfhash ABI. Make sure to compile both library and application with matching configuration.]) # Allow requiring the operating system to support the membarrier system @@ -48,8 +48,8 @@ # Checks for C compiler AC_USE_SYSTEM_EXTENSIONS AC_PROG_CC -AC_PROG_CC_STDC - +# AC_PROG_CC_STDC was merged in AC_PROG_CC in autoconf 2.70 +m4_version_prereq([2.70], [], [AC_PROG_CC_STDC]) AS_IF([test "x$def_compiler_tls" = "xyes"], AC_DEFINE([CONFIG_RCU_TLS], [1]), [:]) # Checks for programs. @@ -257,7 +257,7 @@ # RCU debugging option AC_ARG_ENABLE([rcu-debug], AS_HELP_STRING([--enable-rcu-debug], [Enable internal debugging - self-checks. Introduce performance penalty.])) + self-checks. Introduces a performance penalty.])) AS_IF([test "x$enable_rcu_debug" = "xyes"], [ AC_DEFINE([CONFIG_RCU_DEBUG], [1]) ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/include/config.h.in new/userspace-rcu-0.12.2/include/config.h.in --- old/userspace-rcu-0.12.1/include/config.h.in 2020-04-22 15:02:53.000000000 +0200 +++ new/userspace-rcu-0.12.2/include/config.h.in 2021-02-17 20:53:38.000000000 +0100 @@ -11,7 +11,7 @@ /* Compatibility mode for i386 which lacks cmpxchg instruction. */ #undef CONFIG_RCU_COMPAT_ARCH -/* Enable internal debugging self-checks. Introduce performance penalty. */ +/* Enable internal debugging self-checks. Introduces a performance penalty. */ #undef CONFIG_RCU_DEBUG /* Require the operating system to support the membarrier system call for diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/include/urcu/arch/aarch64.h new/userspace-rcu-0.12.2/include/urcu/arch/aarch64.h --- old/userspace-rcu-0.12.1/include/urcu/arch/aarch64.h 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/include/urcu/arch/aarch64.h 2021-01-22 21:30:24.000000000 +0100 @@ -42,6 +42,15 @@ #define __NR_membarrier 283 #endif +/* + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293 + */ +#ifdef URCU_GCC_VERSION +# if URCU_GCC_VERSION < 50100 +# error Your gcc version performs unsafe access to deallocated stack +# endif +#endif + #ifdef __cplusplus } #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/include/urcu/compiler.h new/userspace-rcu-0.12.2/include/urcu/compiler.h --- old/userspace-rcu-0.12.1/include/urcu/compiler.h 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/include/urcu/compiler.h 2021-02-17 20:52:04.000000000 +0100 @@ -110,9 +110,13 @@ /* * Don't allow compiling with buggy compiler. + * + * URCU_GCC_VERSION is used to blacklist specific GCC versions with known + * bugs, clang also defines these macros to an equivalent GCC version it + * claims to support, so exclude it. */ -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__clang__) # define URCU_GCC_VERSION (__GNUC__ * 10000 \ + __GNUC_MINOR__ * 100 \ + __GNUC_PATCHLEVEL__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/include/urcu/config.h.in new/userspace-rcu-0.12.2/include/urcu/config.h.in --- old/userspace-rcu-0.12.1/include/urcu/config.h.in 2020-04-22 15:00:32.000000000 +0200 +++ new/userspace-rcu-0.12.2/include/urcu/config.h.in 2021-02-17 20:52:04.000000000 +0100 @@ -28,7 +28,7 @@ #undef CONFIG_RCU_FORCE_SYS_MEMBARRIER /* Enable internal debugging self-checks. - Introduce performance penalty. */ + Introduces a performance penalty. */ #undef CONFIG_RCU_DEBUG /* Expose multi-flavor support */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/include/urcu/debug.h new/userspace-rcu-0.12.2/include/urcu/debug.h --- old/userspace-rcu-0.12.1/include/urcu/debug.h 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/include/urcu/debug.h 2020-12-11 22:49:32.000000000 +0100 @@ -21,6 +21,8 @@ #include <assert.h> +#include <urcu/config.h> + #if defined(DEBUG_RCU) || defined(CONFIG_RCU_DEBUG) #define urcu_assert(...) assert(__VA_ARGS__) #else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/include/urcu/uatomic/x86.h new/userspace-rcu-0.12.2/include/urcu/uatomic/x86.h --- old/userspace-rcu-0.12.1/include/urcu/uatomic/x86.h 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/include/urcu/uatomic/x86.h 2021-02-17 20:52:04.000000000 +0100 @@ -20,6 +20,7 @@ * Boehm-Demers-Weiser conservative garbage collector. */ +#include <urcu/config.h> #include <urcu/compiler.h> #include <urcu/system.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/include/urcu/urcu-qsbr.h new/userspace-rcu-0.12.2/include/urcu/urcu-qsbr.h --- old/userspace-rcu-0.12.1/include/urcu/urcu-qsbr.h 2020-04-22 15:00:32.000000000 +0200 +++ new/userspace-rcu-0.12.2/include/urcu/urcu-qsbr.h 2020-12-11 22:49:32.000000000 +0100 @@ -31,6 +31,8 @@ #include <stdlib.h> #include <pthread.h> +#include <urcu/config.h> + /* * See urcu/pointer.h and urcu/static/pointer.h for pointer * publication headers. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/m4/ax_pthread.m4 new/userspace-rcu-0.12.2/m4/ax_pthread.m4 --- old/userspace-rcu-0.12.1/m4/ax_pthread.m4 2020-04-22 15:00:32.000000000 +0200 +++ new/userspace-rcu-0.12.2/m4/ax_pthread.m4 2021-01-13 16:14:55.000000000 +0100 @@ -55,6 +55,7 @@ # # Copyright (c) 2008 Steven G. Johnson <stev...@alum.mit.edu> # Copyright (c) 2011 Daniel Richard G. <sk...@iskunk.org> +# Copyright (c) 2019 Marc Stevens <marc.stev...@cwi.nl> # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the @@ -82,7 +83,7 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 25 +#serial 27 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ @@ -123,10 +124,12 @@ # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. +# Create a list of thread flags to try. Items with a "," contain both +# C compiler flags (before ",") and linker flags (after ","). Other items +# starting with a "-" are C compiler flags, and remaining items are +# library names, except for "none" which indicates that we try without +# any flags at all, and "pthread-config" which is a program returning +# the flags for the Pth emulation library. ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" @@ -194,14 +197,47 @@ # that too in a future libc.) So we'll check first for the # standard Solaris way of linking pthreads (-mt -lpthread). - ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags" + ax_pthread_flags="-mt,-lpthread pthread $ax_pthread_flags" ;; esac +# Are we compiling with Clang? + +AC_CACHE_CHECK([whether $CC is Clang], + [ax_cv_PTHREAD_CLANG], + [ax_cv_PTHREAD_CLANG=no + # Note that Autoconf sets GCC=yes for Clang as well as GCC + if test "x$GCC" = "xyes"; then + AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], + [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ +# if defined(__clang__) && defined(__llvm__) + AX_PTHREAD_CC_IS_CLANG +# endif + ], + [ax_cv_PTHREAD_CLANG=yes]) + fi + ]) +ax_pthread_clang="$ax_cv_PTHREAD_CLANG" + + # GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC) +# Note that for GCC and Clang -pthread generally implies -lpthread, +# except when -nostdlib is passed. +# This is problematic using libtool to build C++ shared libraries with pthread: +# [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460 +# [2] https://bugzilla.redhat.com/show_bug.cgi?id=661333 +# [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 +# To solve this, first try -pthread together with -lpthread for GCC + AS_IF([test "x$GCC" = "xyes"], - [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"]) + [ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags"]) + +# Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first + +AS_IF([test "x$ax_pthread_clang" = "xyes"], + [ax_pthread_flags="-pthread,-lpthread -pthread"]) + # The presence of a feature test macro requesting re-entrant function # definitions is, on some systems, a strong hint that pthreads support is @@ -224,25 +260,86 @@ [ax_pthread_check_cond=0], [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"]) -# Are we compiling with Clang? -AC_CACHE_CHECK([whether $CC is Clang], - [ax_cv_PTHREAD_CLANG], - [ax_cv_PTHREAD_CLANG=no - # Note that Autoconf sets GCC=yes for Clang as well as GCC - if test "x$GCC" = "xyes"; then - AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG], - [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */ -# if defined(__clang__) && defined(__llvm__) - AX_PTHREAD_CC_IS_CLANG -# endif - ], - [ax_cv_PTHREAD_CLANG=yes]) - fi - ]) -ax_pthread_clang="$ax_cv_PTHREAD_CLANG" +if test "x$ax_pthread_ok" = "xno"; then +for ax_pthread_try_flag in $ax_pthread_flags; do + + case $ax_pthread_try_flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + *,*) + PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` + PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` + AC_MSG_CHECKING([whether pthreads work with "$PTHREAD_CFLAGS" and "$PTHREAD_LIBS"]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) + PTHREAD_CFLAGS="$ax_pthread_try_flag" + ;; + + pthread-config) + AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) + AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) + PTHREAD_LIBS="-l$ax_pthread_try_flag" + ;; + esac + + ax_pthread_save_CFLAGS="$CFLAGS" + ax_pthread_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + + AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h> +# if $ax_pthread_check_cond +# error "$ax_pthread_check_macro must be defined" +# endif + static void *some_global = NULL; + static void routine(void *a) + { + /* To avoid any unused-parameter or + unused-but-set-parameter warning. */ + some_global = a; + } + static void *start_routine(void *a) { return a; }], + [pthread_t th; pthread_attr_t attr; + pthread_create(&th, 0, start_routine, 0); + pthread_join(th, 0); + pthread_attr_init(&attr); + pthread_cleanup_push(routine, 0); + pthread_cleanup_pop(0) /* ; */])], + [ax_pthread_ok=yes], + []) + + CFLAGS="$ax_pthread_save_CFLAGS" + LIBS="$ax_pthread_save_LIBS" + + AC_MSG_RESULT([$ax_pthread_ok]) + AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi -ax_pthread_clang_warning=no # Clang needs special handling, because older versions handle the -pthread # option in a rather... idiosyncratic way @@ -261,11 +358,6 @@ # -pthread does define _REENTRANT, and while the Darwin headers # ignore this macro, third-party headers might not.) - PTHREAD_CFLAGS="-pthread" - PTHREAD_LIBS= - - ax_pthread_ok=yes - # However, older versions of Clang make a point of warning the user # that, in an invocation where only linking and no compilation is # taking place, the -pthread option has no effect ("argument unused @@ -294,7 +386,7 @@ # step ax_pthread_save_ac_link="$ac_link" ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' - ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_link_step=`AS_ECHO(["$ac_link"]) | sed "$ax_pthread_sed"` ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" ax_pthread_save_CFLAGS="$CFLAGS" for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do @@ -320,78 +412,7 @@ fi # $ax_pthread_clang = yes -if test "x$ax_pthread_ok" = "xno"; then -for ax_pthread_try_flag in $ax_pthread_flags; do - - case $ax_pthread_try_flag in - none) - AC_MSG_CHECKING([whether pthreads work without any flags]) - ;; - - -mt,pthread) - AC_MSG_CHECKING([whether pthreads work with -mt -lpthread]) - PTHREAD_CFLAGS="-mt" - PTHREAD_LIBS="-lpthread" - ;; - - -*) - AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag]) - PTHREAD_CFLAGS="$ax_pthread_try_flag" - ;; - - pthread-config) - AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no]) - AS_IF([test "x$ax_pthread_config" = "xno"], [continue]) - PTHREAD_CFLAGS="`pthread-config --cflags`" - PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" - ;; - *) - AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag]) - PTHREAD_LIBS="-l$ax_pthread_try_flag" - ;; - esac - - ax_pthread_save_CFLAGS="$CFLAGS" - ax_pthread_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - - # Check for various functions. We must include pthread.h, - # since some functions may be macros. (On the Sequent, we - # need a special flag -Kthread to make this header compile.) - # We check for pthread_join because it is in -lpthread on IRIX - # while pthread_create is in libc. We check for pthread_attr_init - # due to DEC craziness with -lpthreads. We check for - # pthread_cleanup_push because it is one of the few pthread - # functions on Solaris that doesn't have a non-functional libc stub. - # We try pthread_create on general principles. - - AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h> -# if $ax_pthread_check_cond -# error "$ax_pthread_check_macro must be defined" -# endif - static void routine(void *a) { a = 0; } - static void *start_routine(void *a) { return a; }], - [pthread_t th; pthread_attr_t attr; - pthread_create(&th, 0, start_routine, 0); - pthread_join(th, 0); - pthread_attr_init(&attr); - pthread_cleanup_push(routine, 0); - pthread_cleanup_pop(0) /* ; */])], - [ax_pthread_ok=yes], - []) - - CFLAGS="$ax_pthread_save_CFLAGS" - LIBS="$ax_pthread_save_LIBS" - - AC_MSG_RESULT([$ax_pthread_ok]) - AS_IF([test "x$ax_pthread_ok" = "xyes"], [break]) - - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" -done -fi # Various other checks: if test "x$ax_pthread_ok" = "xyes"; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/liburcu-bp.pc.in new/userspace-rcu-0.12.2/src/liburcu-bp.pc.in --- old/userspace-rcu-0.12.1/src/liburcu-bp.pc.in 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/liburcu-bp.pc.in 2020-12-11 22:49:32.000000000 +0100 @@ -7,5 +7,5 @@ Description: A userspace RCU (read-copy-update) library, bulletproof version Version: @PACKAGE_VERSION@ Requires: -Libs: -L${libdir} -lurcu-bp +Libs: -L${libdir} -lurcu-common -lurcu-bp Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/liburcu-cds.pc.in new/userspace-rcu-0.12.2/src/liburcu-cds.pc.in --- old/userspace-rcu-0.12.1/src/liburcu-cds.pc.in 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/liburcu-cds.pc.in 2020-12-11 22:49:32.000000000 +0100 @@ -7,5 +7,5 @@ Description: Data structures leveraging RCU and atomic operations to provide efficient concurrency-aware storage Version: @PACKAGE_VERSION@ Requires: -Libs: -L${libdir} -lurcu-cds +Libs: -L${libdir} -lurcu-common -lurcu-cds Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/liburcu-mb.pc.in new/userspace-rcu-0.12.2/src/liburcu-mb.pc.in --- old/userspace-rcu-0.12.1/src/liburcu-mb.pc.in 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/liburcu-mb.pc.in 2020-12-11 22:49:32.000000000 +0100 @@ -7,5 +7,5 @@ Description: A userspace RCU (read-copy-update) library, memory barriers version Version: @PACKAGE_VERSION@ Requires: -Libs: -L${libdir} -lurcu-mb +Libs: -L${libdir} -lurcu-common -lurcu-mb Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/liburcu-qsbr.pc.in new/userspace-rcu-0.12.2/src/liburcu-qsbr.pc.in --- old/userspace-rcu-0.12.1/src/liburcu-qsbr.pc.in 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/liburcu-qsbr.pc.in 2020-12-11 22:49:32.000000000 +0100 @@ -7,5 +7,5 @@ Description: A userspace RCU (read-copy-update) library, quiescent state version Version: @PACKAGE_VERSION@ Requires: -Libs: -L${libdir} -lurcu-qsbr +Libs: -L${libdir} -lurcu-common -lurcu-qsbr Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/liburcu-signal.pc.in new/userspace-rcu-0.12.2/src/liburcu-signal.pc.in --- old/userspace-rcu-0.12.1/src/liburcu-signal.pc.in 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/liburcu-signal.pc.in 2020-12-11 22:49:32.000000000 +0100 @@ -7,5 +7,5 @@ Description: A userspace RCU (read-copy-update) library, signal version Version: @PACKAGE_VERSION@ Requires: -Libs: -L${libdir} -lurcu-signal +Libs: -L${libdir} -lurcu-common -lurcu-signal Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/liburcu.pc.in new/userspace-rcu-0.12.2/src/liburcu.pc.in --- old/userspace-rcu-0.12.1/src/liburcu.pc.in 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/liburcu.pc.in 2020-12-11 22:49:32.000000000 +0100 @@ -7,5 +7,5 @@ Description: A userspace RCU (read-copy-update) library, standard version Version: @PACKAGE_VERSION@ Requires: -Libs: -L${libdir} -lurcu +Libs: -L${libdir} -lurcu-common -lurcu Cflags: -I${includedir} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/urcu-bp.c new/userspace-rcu-0.12.2/src/urcu-bp.c --- old/userspace-rcu-0.12.1/src/urcu-bp.c 2020-04-22 15:02:35.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/urcu-bp.c 2021-01-25 22:34:20.000000000 +0100 @@ -37,6 +37,7 @@ #include <stdbool.h> #include <sys/mman.h> +#include <urcu/config.h> #include <urcu/arch.h> #include <urcu/wfcqueue.h> #include <urcu/map/urcu-bp.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/urcu-call-rcu-impl.h new/userspace-rcu-0.12.2/src/urcu-call-rcu-impl.h --- old/userspace-rcu-0.12.1/src/urcu-call-rcu-impl.h 2020-04-22 15:00:32.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/urcu-call-rcu-impl.h 2020-12-11 22:49:32.000000000 +0100 @@ -772,9 +772,13 @@ while ((uatomic_read(&crdp->flags) & URCU_CALL_RCU_STOPPED) == 0) (void) poll(NULL, 0, 1); } + call_rcu_lock(&call_rcu_mutex); if (!cds_wfcq_empty(&crdp->cbs_head, &crdp->cbs_tail)) { - /* Create default call rcu data if need be */ + call_rcu_unlock(&call_rcu_mutex); + /* Create default call rcu data if need be. */ + /* CBs queued here will be handed to the default list. */ (void) get_default_call_rcu_data(); + call_rcu_lock(&call_rcu_mutex); __cds_wfcq_splice_blocking(&default_call_rcu_data->cbs_head, &default_call_rcu_data->cbs_tail, &crdp->cbs_head, &crdp->cbs_tail); @@ -783,7 +787,6 @@ wake_call_rcu_thread(default_call_rcu_data); } - call_rcu_lock(&call_rcu_mutex); cds_list_del(&crdp->list); call_rcu_unlock(&call_rcu_mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/urcu-utils.h new/userspace-rcu-0.12.2/src/urcu-utils.h --- old/userspace-rcu-0.12.1/src/urcu-utils.h 2020-04-22 15:00:32.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/urcu-utils.h 2020-12-11 22:49:32.000000000 +0100 @@ -23,6 +23,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <urcu/config.h> + #define urcu_stringify(a) _urcu_stringify(a) #define _urcu_stringify(a) #a diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/src/urcu.c new/userspace-rcu-0.12.2/src/urcu.c --- old/userspace-rcu-0.12.1/src/urcu.c 2020-04-22 15:00:32.000000000 +0200 +++ new/userspace-rcu-0.12.2/src/urcu.c 2020-12-11 22:49:32.000000000 +0100 @@ -38,6 +38,7 @@ #include <stdbool.h> #include <poll.h> +#include <urcu/config.h> #include <urcu/arch.h> #include <urcu/wfcqueue.h> #include <urcu/map/urcu.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/userspace-rcu-0.12.1/tests/common/api.h new/userspace-rcu-0.12.2/tests/common/api.h --- old/userspace-rcu-0.12.1/tests/common/api.h 2020-04-22 14:58:46.000000000 +0200 +++ new/userspace-rcu-0.12.2/tests/common/api.h 2020-12-17 14:31:59.000000000 +0100 @@ -108,7 +108,7 @@ typedef pthread_t thread_id_t; -#define NR_THREADS 128 +#define NR_THREADS 4096 #define __THREAD_ID_MAP_EMPTY ((thread_id_t) 0) #define __THREAD_ID_MAP_WAITING ((thread_id_t) 1)