mirror of
https://github.com/SerenityOS/serenity
synced 2024-09-06 17:06:31 +00:00
![Daniel Bertalan](/assets/img/avatar_default.png)
The setup is a bit peculiar: both the definition and the use site of these TLS variables have to be in a shared library, otherwise the linker might relax the global-dynamic access mode to something that doesn't require a `__tls_get_addr` call.
22 lines
468 B
C++
22 lines
468 B
C++
/*
|
|
* Copyright (c) 2023, Daniel Bertalan <dani@danielbertalan.dev>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibTest/Macros.h>
|
|
|
|
__thread int one = 1;
|
|
__thread int two = 2;
|
|
[[gnu::tls_model("initial-exec")]] __thread int three = 3;
|
|
[[gnu::tls_model("initial-exec")]] __thread int four = 4;
|
|
|
|
void check_increment_worked();
|
|
void check_increment_worked()
|
|
{
|
|
EXPECT_EQ(one, 2);
|
|
EXPECT_EQ(two, 3);
|
|
EXPECT_EQ(three, 4);
|
|
EXPECT_EQ(four, 5);
|
|
}
|