Something installed this library on my machine, so it came up when
looking for future fallout.
Patch looks simple, 'nm libtbb.so.* | grep syscall' shows the symbol
gone and check_syms agrees:
/l/lib/libtbb.so.1.0 -->
/p/pobj/tbb-2020.3.3/fake-amd64/usr/local/lib/libtbb.so.1.0
Dynamic export changes:
removed:
_ZN3tbb8internal3rml14private_worker14wake_or_launchEv
External reference changes:
removed:
syscall
PLT removed:
_ZN3tbb8internal3rml14private_worker14wake_or_launchEv
I don't know or use tbb or any of its reverse dependencies, hence this
diff not being tested; 'make test' is still running...
Index: Makefile
===================================================================
RCS file: /cvs/ports/devel/tbb/Makefile,v
diff -u -p -r1.7 Makefile
--- Makefile 29 May 2023 17:50:03 -0000 1.7
+++ Makefile 27 Oct 2023 20:15:27 -0000
@@ -7,8 +7,9 @@ GH_ACCOUNT = oneapi-src
GH_PROJECT = oneTBB
GH_TAGNAME = v${V}
PKGNAME = tbb-${V}
+REVISION = 0
-SHARED_LIBS += tbb 1.0 #2020.3
+SHARED_LIBS += tbb 2.0 #2020.3
SHARED_LIBS += tbbmalloc 1.0 #2020.3
CATEGORIES = devel
Index: patches/patch-include_tbb_machine_linux_common_h
===================================================================
RCS file: patches/patch-include_tbb_machine_linux_common_h
diff -N patches/patch-include_tbb_machine_linux_common_h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-include_tbb_machine_linux_common_h 27 Oct 2023 20:15:58
-0000
@@ -0,0 +1,44 @@
+Use futex(2) not syscall(2)
+
+Index: include/tbb/machine/linux_common.h
+--- include/tbb/machine/linux_common.h.orig
++++ include/tbb/machine/linux_common.h
+@@ -22,8 +22,6 @@
+ #define __TBB_Yield() sched_yield()
+
+ #include <unistd.h>
+-/* Futex definitions */
+-#include <sys/syscall.h>
+
+ #if defined(SYS_futex)
+ /* This header file is included for Linux and some other systems that may
support futexes.*/
+@@ -77,8 +75,8 @@ namespace tbb {
+
+ namespace internal {
+
+-inline int futex_wait( void *futex, int comparand ) {
+- int r = syscall( SYS_futex,futex,__TBB_FUTEX_WAIT,comparand,NULL,NULL,0 );
++inline int futex_wait( void *uaddr, int comparand ) {
++ int r = futex(uaddr,FUTEX_WAIT,comparand,NULL,NULL );
+ #if TBB_USE_ASSERT
+ int e = errno;
+ __TBB_ASSERT( r==0||r==EWOULDBLOCK||(r==-1&&(e==EAGAIN||e==EINTR)),
"futex_wait failed." );
+@@ -86,14 +84,14 @@ inline int futex_wait( void *futex, int comparand ) {
+ return r;
+ }
+
+-inline int futex_wakeup_one( void *futex ) {
+- int r = ::syscall( SYS_futex,futex,__TBB_FUTEX_WAKE,1,NULL,NULL,0 );
++inline int futex_wakeup_one( void *uaddr ) {
++ int r = futex(uaddr,__TBB_FUTEX_WAKE,1,NULL,NULL );
+ __TBB_ASSERT( r==0||r==1, "futex_wakeup_one: more than one thread woken
up?" );
+ return r;
+ }
+
+-inline int futex_wakeup_all( void *futex ) {
+- int r = ::syscall( SYS_futex,futex,__TBB_FUTEX_WAKE,INT_MAX,NULL,NULL,0 );
++inline int futex_wakeup_all( void *uaddr ) {
++ int r = futex(uaddr,__TBB_FUTEX_WAKE,INT_MAX,NULL,NULL );
+ __TBB_ASSERT( r>=0, "futex_wakeup_all: error in waking up threads" );
+ return r;
+ }