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).
This commit is contained in:
Gunnar Beutner 2021-07-03 00:50:22 +02:00 committed by Andreas Kling
parent 371c852fc0
commit e1ff30a360
Notes: sideshowbarker 2024-07-18 10:31:35 +09:00
4 changed files with 5 additions and 27 deletions

View file

@ -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)

View file

@ -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)
{

View file

@ -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)
{

View file

@ -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)