Browse Source

Toolchain+Userland: Enable TLS for x86_64

This is not technically a toolchain change, but it does require
rebuilding the toolchain for x86_64 (and just that).
Gunnar Beutner 4 years ago
parent
commit
e1ff30a360

+ 0 - 5
CMakeLists.txt

@@ -93,11 +93,6 @@ set(CMAKE_CXX_STANDARD 20)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 set(CMAKE_CXX_EXTENSIONS OFF)
 
-if("${SERENITY_ARCH}" STREQUAL "x86_64")
-    # FIXME: Implement TLS support and get rid of this
-    add_compile_definitions(NO_TLS X86_64_NO_TLS)
-endif()
-
 add_compile_options(-Wno-literal-suffix)
 if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
     add_compile_options(-fconcepts)

+ 1 - 4
Userland/Libraries/LibC/pthread_tls.cpp

@@ -26,10 +26,7 @@ struct SpecificTable {
 
 static KeyTable s_keys;
 
-#    ifndef X86_64_NO_TLS
-__thread
-#    endif
-    SpecificTable t_specifics;
+__thread SpecificTable t_specifics;
 
 int __pthread_key_create(pthread_key_t* key, KeyDestructor destructor)
 {

+ 2 - 10
Userland/Libraries/LibDl/dlfcn.cpp

@@ -11,16 +11,8 @@
 #include <string.h>
 
 // FIXME: use thread_local and a String once TLS works
-#ifndef X86_64_NO_TLS
-__thread
-#endif
-    char* s_dlerror_text
-    = NULL;
-#ifndef X86_64_NO_TLS
-__thread
-#endif
-    bool s_dlerror_retrieved
-    = false;
+__thread char* s_dlerror_text = NULL;
+__thread bool s_dlerror_retrieved = false;
 
 static void store_error(const String& error)
 {

+ 2 - 8
Userland/Libraries/LibPthread/pthread.cpp

@@ -33,14 +33,8 @@ static constexpr size_t required_stack_alignment = 4 * MiB;
 static constexpr size_t highest_reasonable_guard_size = 32 * PAGE_SIZE;
 static constexpr size_t highest_reasonable_stack_size = 8 * MiB; // That's the default in Ubuntu?
 
-#ifndef X86_64_NO_TLS
-__thread
-#endif
-    void* s_stack_location;
-#ifndef X86_64_NO_TLS
-__thread
-#endif
-    size_t s_stack_size;
+__thread void* s_stack_location;
+__thread size_t s_stack_size;
 
 #define __RETURN_PTHREAD_ERROR(rc) \
     return ((rc) < 0 ? -(rc) : 0)