From 2f3b9c49a5fa4e867b77b40191c4221db17f0a16 Mon Sep 17 00:00:00 2001 From: Tim Schumacher Date: Sun, 12 Jun 2022 20:16:06 +0200 Subject: [PATCH] LibPthread: Move the pthread and semaphore implementation to LibC This additionally adds some compatibility code to redirect linking attempts for LibPthread to LibC instead. --- Toolchain/Stubs/i686clang/libc.so | Bin 67712 -> 91032 bytes Toolchain/Stubs/i686clang/libpthread.so | Bin 4952 -> 0 bytes Toolchain/Stubs/x86_64clang/libc.so | Bin 80216 -> 107016 bytes Toolchain/Stubs/x86_64clang/libpthread.so | Bin 6160 -> 0 bytes Userland/DynamicLoader/CMakeLists.txt | 3 + Userland/Libraries/LibC/CMakeLists.txt | 5 +- .../Libraries/LibC/bits/pthread_forward.h | 29 ------ .../{LibPthread => LibC}/pthread.cpp | 0 .../Libraries/{LibPthread => LibC}/pthread.h | 0 .../{LibPthread => LibC}/pthread_cond.cpp | 0 Userland/Libraries/LibC/pthread_forward.cpp | 87 ------------------ .../{LibPthread => LibC}/pthread_once.cpp | 0 .../{LibPthread => LibC}/semaphore.cpp | 0 .../{LibPthread => LibC}/semaphore.h | 0 Userland/Libraries/LibPthread/CMakeLists.txt | 15 +-- Userland/Libraries/LibPthread/forward.cpp | 31 ------- 16 files changed, 11 insertions(+), 159 deletions(-) delete mode 100644 Toolchain/Stubs/i686clang/libpthread.so delete mode 100644 Toolchain/Stubs/x86_64clang/libpthread.so delete mode 100644 Userland/Libraries/LibC/bits/pthread_forward.h rename Userland/Libraries/{LibPthread => LibC}/pthread.cpp (100%) rename Userland/Libraries/{LibPthread => LibC}/pthread.h (100%) rename Userland/Libraries/{LibPthread => LibC}/pthread_cond.cpp (100%) delete mode 100644 Userland/Libraries/LibC/pthread_forward.cpp rename Userland/Libraries/{LibPthread => LibC}/pthread_once.cpp (100%) rename Userland/Libraries/{LibPthread => LibC}/semaphore.cpp (100%) rename Userland/Libraries/{LibPthread => LibC}/semaphore.h (100%) delete mode 100644 Userland/Libraries/LibPthread/forward.cpp diff --git a/Toolchain/Stubs/i686clang/libc.so b/Toolchain/Stubs/i686clang/libc.so index 99d7659f48acbff286feb9423704d1bc85a45a63..bf87ceff55dd6d6b218e801f23ca556a092cbcab 100644 GIT binary patch literal 91032 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 literal 67712 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 diff --git a/Toolchain/Stubs/i686clang/libpthread.so b/Toolchain/Stubs/i686clang/libpthread.so deleted file mode 100644 index 557e7200dcabc4621da39f5cae67d80c875c3b2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4952 zcmb<-^>JflWMqH=W(H;k1doAXf)GT;gh7FUfkA_Tm4O8!fJD|XAvhrAikt|(5(6W{ zSp=5>#Gi&F4^kh6#{b8P&;XMEfX07?#^1?-s{RHWg0IBDz+l0Q$`3?SAAsaxkbQ0J z2=yR7H=6q*(B!`$*#}a82F?6tH1nsUx&JX*_*EkXG0416X#5Z~`@W*t7l7tpW;Ffw zNa_U{7#Mz_xQCHJ3&lN*3`R)ii7_xR97hBX1IT@4Nalg~%4qyV6#E$&Qc?6XGT5Mm zCnLi~6#p?Y97VEUh=GxT7sY%=hAU|9uSL^;7bW}|85Gd$n~tV_3YvZ2(bVrlvo9G< zzX+OtSE7Zd0h)SCH1};n3m-W&{f21fd!fl^q49mt%sY-|UoDz{a?$+jisoKrH2cfY z%)5YQ{{yt}lr}lqZLU2#Gi@gzgjf+e?jAmqlXuo zduE`SzZOm22rYfiMl+8KEqv0^+~I~{X!5dX@^{eW4bj{)8_m7z(fn77 zCLe|tADn3Ze~8B4i{{_;Xz}+Q&3soh_g0~~_dS~X)}Z-!GMau)H2E~B{UBvx42%q? zq5gsKYtY=^k7oaKsCtkvD19-a`L6|PK1|*K&Am2g>J8BN1t5ojG&3-O({m!4d?<=M z14A#0eGCjgQSui9!v{3}b2L6fK}kkYYGO)!ZfQwsMSMzXaY<2rC8}s*Nl6igOi_7G zesVTespR~;6s!_h1&a$Z^Wdfzr{==hFqc7W!Vm`80vAjJxt<|D%FoEr+t4IFJ}ti} zH?btXEHS4v)icx8wJgXlINr!8q_QB@wJ5PTHN_3AARw_QF}K(iBxz_25ppWc%t=Wt zf`}PG!~znFic^bR1H8)^Kn^U(FD`+H5ZD<>Mfr&-$%(}!4Ds?PA$nx%uS8YLkOiKgb+~z4$OE^ zx{WVLEiTT?%`7g-Oa^Jo$xJG)EG|jS)ho_t$jMBC(NIr8MUz2vYEe;MK0|zbN-8{7 z(~3a0XXd4W#IcDM#}}6*CTD}JP6T-e?((es%sg;7<`<;qF%*{+<)r4pCBe~FoLW+x zoROMR07|NGDeR(P4e3}lU>D8K%*kPhhdM4fBRf7VF*65lNpfOdaw>wGT3DKh;DMvL zI5RyDNvt?CJvXs9o1r)}y`U&R8O(-;AT%d{{aTurlbM%|lvN<{Qc_e2iW<1};53RZ z2u+=!Bv^!^8YTfwk65M3A)@HXp)?Q09I&luVo7Z-C>P|Y*so?3z;1NRq-D9n)Ja7 znQ58HNTMLG!$qUaiz|zh6LWGr{mi^mi}F%)%!45U7O>jMHJ~imI6liYD9d zEdVt|@aqP*W>8x$3{Wo^!x%;|h9Ri7E6pp<%uCTL&esETleM)WYz77fP;=LWfq?jX`b$;S1~#KB&13Y9b3TK->g!0!SUm?I0}6g)kqa x7Q_RMgMj=AQl}!szyQJ?Q1e0ZAoD=o6e$J<29S9mu^b@=1`t*OaiADx9ssg_NKF6$ diff --git a/Toolchain/Stubs/x86_64clang/libc.so b/Toolchain/Stubs/x86_64clang/libc.so index 373cbddcec7e9ca51d1e4af32b046847b2ef0a7a..f4ae65b5eed9c30dd7264a24c0abb3ae2e26549e 100644 GIT binary patch literal 107016 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 z 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 literal 80216 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­l8FERCTIymc&% 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 diff --git a/Userland/DynamicLoader/CMakeLists.txt b/Userland/DynamicLoader/CMakeLists.txt index 55c86fc19e..4b2c9aadc2 100644 --- a/Userland/DynamicLoader/CMakeLists.txt +++ b/Userland/DynamicLoader/CMakeLists.txt @@ -25,6 +25,9 @@ if (ENABLE_UNDEFINED_SANITIZER) set(LOADER_SOURCES ${LOADER_SOURCES} ../Libraries/LibSanitizer/UBSanitizer.cpp) endif() +# pthread requires thread local storage, which DynamicLoader does not have. +list(FILTER LIBC_SOURCES1 EXCLUDE REGEX ".*/LibC/pthread\\.cpp") + add_definitions(-D_DYNAMIC_LOADER) set(SOURCES ${LOADER_SOURCES} ${AK_SOURCES} ${ELF_SOURCES} ${LIBC_SOURCES1} ${LIBC_SOURCES2} ${LIBC_SOURCES3} ${LIBSYSTEM_SOURCES}) diff --git a/Userland/Libraries/LibC/CMakeLists.txt b/Userland/Libraries/LibC/CMakeLists.txt index aa5c40d116..2319a241e1 100644 --- a/Userland/Libraries/LibC/CMakeLists.txt +++ b/Userland/Libraries/LibC/CMakeLists.txt @@ -27,8 +27,10 @@ set(LIBC_SOURCES netdb.cpp poll.cpp priority.cpp - pthread_forward.cpp + pthread.cpp + pthread_cond.cpp pthread_integration.cpp + pthread_once.cpp pthread_tls.cpp pty.cpp pwd.cpp @@ -38,6 +40,7 @@ set(LIBC_SOURCES scanf.cpp sched.cpp search.cpp + semaphore.cpp serenity.cpp shadow.cpp signal.cpp diff --git a/Userland/Libraries/LibC/bits/pthread_forward.h b/Userland/Libraries/LibC/bits/pthread_forward.h deleted file mode 100644 index 849220a967..0000000000 --- a/Userland/Libraries/LibC/bits/pthread_forward.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2021, Gunnar Beutner - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include - -struct PthreadFunctions { - int (*pthread_mutex_trylock)(pthread_mutex_t* mutex); - int (*pthread_mutex_destroy)(pthread_mutex_t*); - - int (*pthread_mutexattr_init)(pthread_mutexattr_t*); - int (*pthread_mutexattr_settype)(pthread_mutexattr_t*, int); - int (*pthread_mutexattr_destroy)(pthread_mutexattr_t*); - - int (*pthread_once)(pthread_once_t*, void (*)(void)); - - int (*pthread_cond_broadcast)(pthread_cond_t*); - int (*pthread_cond_init)(pthread_cond_t*, pthread_condattr_t const*); - int (*pthread_cond_signal)(pthread_cond_t*); - int (*pthread_cond_wait)(pthread_cond_t*, pthread_mutex_t*); - int (*pthread_cond_destroy)(pthread_cond_t*); - int (*pthread_cond_timedwait)(pthread_cond_t*, pthread_mutex_t*, const struct timespec*); -}; - -void __init_pthread_forward(PthreadFunctions); diff --git a/Userland/Libraries/LibPthread/pthread.cpp b/Userland/Libraries/LibC/pthread.cpp similarity index 100% rename from Userland/Libraries/LibPthread/pthread.cpp rename to Userland/Libraries/LibC/pthread.cpp diff --git a/Userland/Libraries/LibPthread/pthread.h b/Userland/Libraries/LibC/pthread.h similarity index 100% rename from Userland/Libraries/LibPthread/pthread.h rename to Userland/Libraries/LibC/pthread.h diff --git a/Userland/Libraries/LibPthread/pthread_cond.cpp b/Userland/Libraries/LibC/pthread_cond.cpp similarity index 100% rename from Userland/Libraries/LibPthread/pthread_cond.cpp rename to Userland/Libraries/LibC/pthread_cond.cpp diff --git a/Userland/Libraries/LibC/pthread_forward.cpp b/Userland/Libraries/LibC/pthread_forward.cpp deleted file mode 100644 index 32fcd015e7..0000000000 --- a/Userland/Libraries/LibC/pthread_forward.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2021, Gunnar Beutner - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#include -#include - -static PthreadFunctions s_pthread_functions; - -void __init_pthread_forward(PthreadFunctions funcs) -{ - s_pthread_functions = funcs; -} - -int pthread_mutex_trylock(pthread_mutex_t* mutex) -{ - VERIFY(s_pthread_functions.pthread_mutex_trylock); - return s_pthread_functions.pthread_mutex_trylock(mutex); -} - -int pthread_mutex_destroy(pthread_mutex_t* mutex) -{ - VERIFY(s_pthread_functions.pthread_mutex_destroy); - return s_pthread_functions.pthread_mutex_destroy(mutex); -} - -int pthread_mutexattr_init(pthread_mutexattr_t* attr) -{ - VERIFY(s_pthread_functions.pthread_mutexattr_init); - return s_pthread_functions.pthread_mutexattr_init(attr); -} - -int pthread_mutexattr_settype(pthread_mutexattr_t* attr, int type) -{ - VERIFY(s_pthread_functions.pthread_mutexattr_settype); - return s_pthread_functions.pthread_mutexattr_settype(attr, type); -} - -int pthread_mutexattr_destroy(pthread_mutexattr_t* attr) -{ - VERIFY(s_pthread_functions.pthread_mutexattr_destroy); - return s_pthread_functions.pthread_mutexattr_destroy(attr); -} - -int pthread_once(pthread_once_t* self, void (*callback)(void)) -{ - VERIFY(s_pthread_functions.pthread_once); - return s_pthread_functions.pthread_once(self, callback); -} - -int pthread_cond_broadcast(pthread_cond_t* cond) -{ - VERIFY(s_pthread_functions.pthread_cond_broadcast); - return s_pthread_functions.pthread_cond_broadcast(cond); -} - -int pthread_cond_init(pthread_cond_t* cond, pthread_condattr_t const* attr) -{ - VERIFY(s_pthread_functions.pthread_cond_init); - return s_pthread_functions.pthread_cond_init(cond, attr); -} - -int pthread_cond_signal(pthread_cond_t* cond) -{ - VERIFY(s_pthread_functions.pthread_cond_signal); - return s_pthread_functions.pthread_cond_signal(cond); -} - -int pthread_cond_wait(pthread_cond_t* cond, pthread_mutex_t* mutex) -{ - VERIFY(s_pthread_functions.pthread_cond_wait); - return s_pthread_functions.pthread_cond_wait(cond, mutex); -} - -int pthread_cond_destroy(pthread_cond_t* cond) -{ - VERIFY(s_pthread_functions.pthread_cond_destroy); - return s_pthread_functions.pthread_cond_destroy(cond); -} - -int pthread_cond_timedwait(pthread_cond_t* cond, pthread_mutex_t* mutex, const struct timespec* abstime) -{ - VERIFY(s_pthread_functions.pthread_cond_timedwait); - return s_pthread_functions.pthread_cond_timedwait(cond, mutex, abstime); -} diff --git a/Userland/Libraries/LibPthread/pthread_once.cpp b/Userland/Libraries/LibC/pthread_once.cpp similarity index 100% rename from Userland/Libraries/LibPthread/pthread_once.cpp rename to Userland/Libraries/LibC/pthread_once.cpp diff --git a/Userland/Libraries/LibPthread/semaphore.cpp b/Userland/Libraries/LibC/semaphore.cpp similarity index 100% rename from Userland/Libraries/LibPthread/semaphore.cpp rename to Userland/Libraries/LibC/semaphore.cpp diff --git a/Userland/Libraries/LibPthread/semaphore.h b/Userland/Libraries/LibC/semaphore.h similarity index 100% rename from Userland/Libraries/LibPthread/semaphore.h rename to Userland/Libraries/LibC/semaphore.h diff --git a/Userland/Libraries/LibPthread/CMakeLists.txt b/Userland/Libraries/LibPthread/CMakeLists.txt index bb6c95319b..ba5fc79edb 100644 --- a/Userland/Libraries/LibPthread/CMakeLists.txt +++ b/Userland/Libraries/LibPthread/CMakeLists.txt @@ -1,11 +1,4 @@ -set(SOURCES - forward.cpp - pthread.cpp - pthread_cond.cpp - pthread_once.cpp - semaphore.cpp -) - -serenity_libc(LibPthread pthread) -target_link_libraries(LibPthread LibC LibSystem) -target_include_directories(LibPthread PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +# Provide a dummy target and a linker script that tells everything to link against LibC instead. +add_library(LibPthread INTERFACE) +target_link_libraries(LibPthread INTERFACE LibC) +file(WRITE "${CMAKE_STAGING_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libpthread.so" "INPUT(libc.so)") diff --git a/Userland/Libraries/LibPthread/forward.cpp b/Userland/Libraries/LibPthread/forward.cpp deleted file mode 100644 index f8a964c580..0000000000 --- a/Userland/Libraries/LibPthread/forward.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2021, Gunnar Beutner - * Copyright (c) 2022, the SerenityOS developers. - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#include - -static constexpr PthreadFunctions s_functions = { - .pthread_mutex_trylock = pthread_mutex_trylock, - .pthread_mutex_destroy = pthread_mutex_destroy, - - .pthread_mutexattr_init = pthread_mutexattr_init, - .pthread_mutexattr_settype = pthread_mutexattr_settype, - .pthread_mutexattr_destroy = pthread_mutexattr_destroy, - - .pthread_once = pthread_once, - - .pthread_cond_broadcast = pthread_cond_broadcast, - .pthread_cond_init = pthread_cond_init, - .pthread_cond_signal = pthread_cond_signal, - .pthread_cond_wait = pthread_cond_wait, - .pthread_cond_destroy = pthread_cond_destroy, - .pthread_cond_timedwait = pthread_cond_timedwait, -}; - -[[gnu::constructor]] static void forward_pthread_functions() -{ - __init_pthread_forward(s_functions); -}