dev-libs/userspace-rcu: Sync with Gentoo

It's from Gentoo commit 7ac8ab26e34df8121e2d64cba7c655a137b07fd2.
This commit is contained in:
Krzesimir Nowak 2023-05-10 16:25:00 +02:00
parent f07a9cd5af
commit 642a47e3aa
8 changed files with 360 additions and 52 deletions

View File

@ -1,2 +1,2 @@
DIST userspace-rcu-0.13.0.tar.bz2 608434 BLAKE2B 11b5d13f4e1a577cc33ad430eb387b26cc2db2ba9ff32c7a09f9cb6c8a418548cd87c198ab4b63be3df884d8e3878046ba817106ff2f07cbab86dd60c9bb1d34 SHA512 7288b5a4a2dca6a75ecaa8553b942b9e7be9cae25776d2448fb0b0c950af9919c369791839607c6c1e6cbd32bbd1e1cafc18ee753f0e3bdc2ed7b65488612580
DIST userspace-rcu-0.13.1.tar.bz2 609961 BLAKE2B 96581fb3e90764870d2eb3eff6999e3c20bf206e3a0d5c910acfe693d55e0cb389fa5126a74d175f3c46655e740ecf1c1426c367eb3c28f3ef3a634848e51e83 SHA512 c86f2eb260cccb3cb6bd54ddbc0b46e60083fc99423e9403242ebed7f39a2a49c68af933ea6f373e2a9d4f9dc56f5befe030740891e28cf2fabe927a48ff8182
DIST userspace-rcu-0.13.2.tar.bz2 611448 BLAKE2B 6d502e0035b03df262c917ba70f7442e2bd81369091b2c521fe5c32f31ed2ef7404070759f3a8910b767153e05d28e354d5e5ece2a3ba17e4a31dd7db3e1924f SHA512 e5097a7f653f51b3a47a09f79e7a153aab8fd22c0504a1127a9b33d093a9ae6a941b97c0fe175ee168e2976097aefdcdf8d5ce030afbe565c1b72f64d6f5b60a
DIST userspace-rcu-0.14.0.tar.bz2 661322 BLAKE2B ba9fa4c6dec693d2616234187db531f00fc0ade65f7e2a57182d9441728ddfa6f3e9d4544b824ca5edf7c027a43c9231d998a309c01f4bbab1eeefe856344f77 SHA512 7297e51012f4c44ee27c0e18ed9d87bf24be34db68a5398394c1e683a045bb561cf74aa913398404c0ed5cb8011af728ea12947717fa5f27627e5ca78e63a40f

View File

@ -0,0 +1,181 @@
This is https://github.com/loongarch64/userspace-rcu/pull/2, yet to be
upstreamed but already reviewed and accepted by the LoongArch porting
community.
(and https://github.com/urcu/userspace-rcu/pull/11)
From 213197eea1a711da2f7cc0c04cdf33acb1b3c50e Mon Sep 17 00:00:00 2001
From: Wang Jing <wangjing@loongson.cn>
Date: Tue, 8 Jun 2021 19:44:49 +0800
Subject: [PATCH] Add LoongArch support
--- a/LICENSE
+++ b/LICENSE
@@ -44,6 +44,7 @@ MIT/X11 (BSD like) license apply to:
compiler.h
arch/s390.h
uatomic/alpha.h
+uatomic/loongarch.h
uatomic/mips.h
uatomic/nios2.h
uatomic/s390.h
--- a/README.md
+++ b/README.md
@@ -51,6 +51,7 @@ Currently, the following architectures are supported:
- hppa/PA-RISC
- m68k
- RISC-V
+ - LoongArch
Tested on:
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -7,6 +7,7 @@ nobase_include_HEADERS = \
urcu/arch.h \
urcu/arch/hppa.h \
urcu/arch/ia64.h \
+ urcu/arch/loongarch.h \
urcu/arch/m68k.h \
urcu/arch/mips.h \
urcu/arch/nios2.h \
@@ -67,6 +68,7 @@ nobase_include_HEADERS = \
urcu/uatomic.h \
urcu/uatomic/hppa.h \
urcu/uatomic/ia64.h \
+ urcu/uatomic/loongarch.h \
urcu/uatomic/m68k.h \
urcu/uatomic/mips.h \
urcu/uatomic/nios2.h \
--- a/include/urcu/arch.h
+++ b/include/urcu/arch.h
@@ -49,6 +49,7 @@
* URCU_ARCH_HPPA : All HP PA-RISC variants
* URCU_ARCH_M68K : All Motorola 68000 variants
* URCU_ARCH_RISCV : All RISC-V variants
+ * URCU_ARCH_LOONGARCH : All LoongArch variants
*/
#if (defined(__INTEL_OFFLOAD) || defined(__TARGET_ARCH_MIC) || defined(__MIC__))
@@ -157,6 +158,11 @@
#define URCU_ARCH_RISCV 1
#include <urcu/arch/riscv.h>
+#elif defined(__loongarch__)
+
+#define URCU_ARCH_LOONGARCH 1
+#include <urcu/arch/loongarch.h>
+
#else
#error "Cannot build: unrecognized architecture, see <urcu/arch.h>."
#endif
--- /dev/null
+++ b/include/urcu/arch/loongarch.h
@@ -0,0 +1,49 @@
+#ifndef _URCU_ARCH_LOONGARCH_H
+#define _URCU_ARCH_LOONGARCH_H
+
+/*
+ * arch/loongarch.h: trivial definitions for the LoongArch architecture.
+ *
+ * Copyright (c) 2021 Wang Jing <wangjing@loongson.cn>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <urcu/compiler.h>
+#include <urcu/config.h>
+#include <urcu/syscall-compat.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdlib.h>
+#include <sys/time.h>
+
+/*
+ * On Linux, define the membarrier system call number if not yet available in
+ * the system headers.
+ */
+#if (defined(__linux__) && !defined(__NR_membarrier))
+#define __NR_membarrier 283
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <urcu/arch/generic.h>
+
+#endif /* _URCU_ARCH_LOONGARCH_H */
--- a/include/urcu/uatomic.h
+++ b/include/urcu/uatomic.h
@@ -51,6 +51,8 @@
#include <urcu/uatomic/m68k.h>
#elif defined(URCU_ARCH_RISCV)
#include <urcu/uatomic/riscv.h>
+#elif defined(URCU_ARCH_LOONGARCH)
+#include <urcu/uatomic/loongarch.h>
#else
#error "Cannot build: unrecognized architecture, see <urcu/arch.h>."
#endif
--- /dev/null
+++ b/include/urcu/uatomic/loongarch.h
@@ -0,0 +1,44 @@
+#ifndef _URCU_UATOMIC_ARCH_LOONGARCH_H
+#define _URCU_UATOMIC_ARCH_LOONGARCH_H
+
+/*
+ * Atomic exchange operations for the LoongArch architecture. Let GCC do it.
+ *
+ * Copyright (c) 2021 Wang Jing <wangjing@loongson.cn>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include <urcu/compiler.h>
+#include <urcu/system.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UATOMIC_HAS_ATOMIC_BYTE
+#define UATOMIC_HAS_ATOMIC_SHORT
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <urcu/uatomic/generic.h>
+
+#endif /* _URCU_UATOMIC_ARCH_LOONGARCH_H */

View File

@ -0,0 +1,61 @@
https://github.com/urcu/userspace-rcu/commit/6fa8b4f80f1d2efbc90fc6d2a5fb0dc1d7fd2a19
From 6fa8b4f80f1d2efbc90fc6d2a5fb0dc1d7fd2a19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@sury.org>
Date: Fri, 17 Mar 2023 16:44:10 +0100
Subject: [PATCH] Fix: use __noreturn__ for C11-compatibility
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The noreturn convenience macro provided by stdnoreturn.h might get
included before urcu headers, use __noreturn__ for better compatibility
with code using <stdnoreturn.h> header.
Signed-off-by: Ondřej Surý <ondrej@sury.org>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
--- a/include/urcu/uatomic/generic.h
+++ b/include/urcu/uatomic/generic.h
@@ -38,7 +38,7 @@ extern "C" {
#endif
#if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR
-static inline __attribute__((always_inline, noreturn))
+static inline __attribute__((always_inline, __noreturn__))
void _uatomic_link_error(void)
{
#ifdef ILLEGAL_INSTR
--- a/src/urcu-call-rcu-impl.h
+++ b/src/urcu-call-rcu-impl.h
@@ -1064,7 +1064,7 @@ void urcu_register_rculfhash_atfork(struct urcu_atfork *atfork)
* This unregistration function is deprecated, meant only for internal
* use by rculfhash.
*/
-__attribute__((noreturn))
+__attribute__((__noreturn__))
void urcu_unregister_rculfhash_atfork(struct urcu_atfork *atfork __attribute__((unused)))
{
urcu_die(EPERM);
--- a/tests/regression/rcutorture.h
+++ b/tests/regression/rcutorture.h
@@ -572,7 +572,7 @@ int stresstest(int nreaders)
*/
static
-void usage(char *argv[]) __attribute__((noreturn));
+void usage(char *argv[]) __attribute__((__noreturn__));
static
void usage(char *argv[])
--- a/tests/utils/tap.h
+++ b/tests/utils/tap.h
@@ -41,7 +41,7 @@ __attribute__((format(TAP_PRINTF_FORMAT, 5, 6)))
unsigned int _gen_result(int, const char *, const char *, unsigned int, const char *, ...);
int plan_no_plan(void);
-__attribute__((noreturn))
+__attribute__((__noreturn__))
int plan_skip_all(const char *);
int plan_tests(unsigned int);

View File

@ -0,0 +1,51 @@
https://github.com/urcu/userspace-rcu/commit/106ed13754b1b836f4b59405f4e02aea4bf5eef0
From 106ed13754b1b836f4b59405f4e02aea4bf5eef0 Mon Sep 17 00:00:00 2001
From: Michael Jeanson <mjeanson@efficios.com>
Date: Thu, 23 Mar 2023 14:23:55 -0400
Subject: [PATCH] fix: warning 'noreturn' function does return on ppc
On a ppc64 system with gcc 9.5.0 I get the following error when building
with -O0 :
/usr/include/urcu/uatomic/generic.h: In function 'void _uatomic_link_error()':
/usr/include/urcu/uatomic/generic.h:53:1: warning: 'noreturn' function does return
53 | }
| ^
Split the inline function in 2 variants and apply the noreturn attribute
only on the builtin_trap one.
Change-Id: I5ae8e764c4cc27af0463924a653b9eaa9f698c34
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
--- a/include/urcu/uatomic/generic.h
+++ b/include/urcu/uatomic/generic.h
@@ -38,19 +38,23 @@ extern "C" {
#endif
#if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR
-static inline __attribute__((always_inline, __noreturn__))
+#ifdef ILLEGAL_INSTR
+static inline __attribute__((always_inline))
void _uatomic_link_error(void)
{
-#ifdef ILLEGAL_INSTR
/*
* generate an illegal instruction. Cannot catch this with
* linker tricks when optimizations are disabled.
*/
__asm__ __volatile__(ILLEGAL_INSTR);
+}
#else
+static inline __attribute__((always_inline, __noreturn__))
+void _uatomic_link_error(void)
+{
__builtin_trap();
-#endif
}
+#endif
#else /* #if !defined __OPTIMIZE__ || defined UATOMIC_NO_LINK_ERROR */
extern void _uatomic_link_error(void);

View File

@ -5,7 +5,7 @@
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
<use>
<flag name="regression-test">Run regression tests (requires FEATURES=test)</flag>
</use>
<upstream>
<remote-id type="github">urcu/userspace-rcu</remote-id>
</upstream>
</pkgmetadata>

View File

@ -1,45 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit autotools
DESCRIPTION="userspace RCU (read-copy-update) library"
HOMEPAGE="https://liburcu.org/"
SRC_URI="https://lttng.org/files/urcu/${P}.tar.bz2"
LICENSE="LGPL-2.1"
SLOT="0/8" # subslot = soname version
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~mips ppc ppc64 ~riscv sparc x86"
IUSE="static-libs regression-test test"
RESTRICT="!test? ( test )"
DEPEND="test? ( sys-process/time )"
src_prepare() {
default
# Refresh libtool (see https://github.com/gentoo/gentoo/pull/23973)
eautoreconf
}
src_configure() {
local myeconfargs=(
--enable-shared
$(use_enable static-libs static)
)
econf "${myeconfargs[@]}"
}
src_install() {
default
find "${ED}" -type f -name "*.la" -delete || die
}
src_test() {
default
if use regression-test ; then
emake -C tests/regression regtest
fi
}

View File

@ -1,7 +1,7 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
EAPI=8
inherit autotools
@ -11,7 +11,7 @@ SRC_URI="https://lttng.org/files/urcu/${P}.tar.bz2"
LICENSE="LGPL-2.1"
SLOT="0/8" # subslot = soname version
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
IUSE="static-libs test"
RESTRICT="!test? ( test )"
@ -19,6 +19,7 @@ BDEPEND="test? ( sys-process/time )"
PATCHES=(
"${FILESDIR}"/${PN}-0.13.1-tests-no-benchmark.patch
"${FILESDIR}"/${PN}-0.13.1-loong.patch
)
src_prepare() {
@ -26,6 +27,7 @@ src_prepare() {
# Needed for tests patch
# ... and refresh libtool (see https://github.com/gentoo/gentoo/pull/23973)
# ... and for build on loong (see https://github.com/gentoo/gentoo/pull/25189)
eautoreconf
}

View File

@ -0,0 +1,58 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit autotools
DESCRIPTION="Userspace RCU (read-copy-update) library"
HOMEPAGE="https://liburcu.org/"
SRC_URI="https://lttng.org/files/urcu/${P}.tar.bz2"
LICENSE="LGPL-2.1"
SLOT="0/8" # subslot = soname version
KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
IUSE="static-libs test"
RESTRICT="!test? ( test )"
BDEPEND="test? ( sys-process/time )"
PATCHES=(
"${FILESDIR}"/${PN}-0.13.1-tests-no-benchmark.patch
"${FILESDIR}"/${PN}-0.13.1-loong.patch
"${FILESDIR}"/${P}-c11.patch
"${FILESDIR}"/${P}-noreturn.patch
)
src_prepare() {
default
# Needed for tests patch
# ... and refresh libtool (see https://github.com/gentoo/gentoo/pull/23973)
# ... and for build on loong (see https://github.com/gentoo/gentoo/pull/25189)
eautoreconf
}
src_configure() {
local myeconfargs=(
--enable-shared
$(use_enable static-libs static)
)
econf "${myeconfargs[@]}"
}
src_test() {
default
emake -C tests/regression regtest
# We don't run the benchmark tests.
rm tests/benchmark/test-suite.log || die
}
src_install() {
default
find "${ED}" -type f -name "*.la" -delete || die
}