Skip to content

Commit 939c8f5

Browse files
authored
Merge pull request swiftlang#63103 from al45tair/eng/PR-103274667-5.8
Don't use tsd_private.h in compatibility libraries for ARMv7k.
2 parents aa8ff46 + 75edf01 commit 939c8f5

File tree

7 files changed

+29
-13
lines changed

7 files changed

+29
-13
lines changed

include/swift/Threading/Impl/Darwin.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -186,14 +186,16 @@ inline void once_impl(once_t &predicate, void (*fn)(void *), void *context) {
186186
// On Darwin, we want to use the reserved keys
187187
#define SWIFT_THREADING_USE_RESERVED_TLS_KEYS 1
188188

189-
#if __has_include(<pthread/tsd_private.h>)
189+
#if !(SWIFT_THREADING_IS_COMPATIBILITY_LIBRARY && __ARM_ARCH_7K__) && __has_include(<pthread/tsd_private.h>)
190190
} // namespace threading_impl
191191
} // namespace swift
192192

193193
extern "C" {
194194
#include <pthread/tsd_private.h>
195195
}
196196

197+
#define SWIFT_THREADING_USE_DIRECT_TSD 1
198+
197199
namespace swift {
198200
namespace threading_impl {
199201
#else
@@ -208,17 +210,12 @@ namespace threading_impl {
208210
#define __PTK_FRAMEWORK_SWIFT_KEY8 108
209211
#define __PTK_FRAMEWORK_SWIFT_KEY9 109
210212

213+
#define SWIFT_THREADING_USE_DIRECT_TSD 0
214+
211215
extern "C" {
212216

213217
extern int pthread_key_init_np(int, void (*)(void *));
214218

215-
inline bool _pthread_has_direct_tsd() { return false; }
216-
inline void *_pthread_getspecific_direct(pthread_key_t k) {
217-
return pthread_getspecific(k);
218-
}
219-
inline void _pthread_setspecific_direct(pthread_key_t k, void *v) {
220-
pthread_setspecific(k, v);
221-
}
222219
}
223220
#endif
224221

@@ -257,18 +254,22 @@ inline bool tls_alloc(tls_key_t &key, tls_dtor_t dtor) {
257254
}
258255

259256
inline void *tls_get(tls_key_t key) {
257+
#if SWIFT_THREADING_USE_DIRECT_TSD
260258
if (_pthread_has_direct_tsd())
261259
return _pthread_getspecific_direct(key);
262260
else
261+
#endif
263262
return pthread_getspecific(key);
264263
}
265264

266265
inline void *tls_get(tls_key key) { return tls_get(tls_get_key(key)); }
267266

268267
inline void tls_set(tls_key_t key, void *value) {
268+
#if SWIFT_THREADING_USE_DIRECT_TSD
269269
if (_pthread_has_direct_tsd())
270270
_pthread_setspecific_direct(key, value);
271271
else
272+
#endif
272273
pthread_setspecific(key, value);
273274
}
274275

stdlib/toolchain/Compatibility50/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ add_swift_target_library("${library_name}" STATIC
1010

1111
TARGET_SDKS ${SWIFT_DARWIN_PLATFORMS}
1212

13-
C_COMPILE_FLAGS ${CXX_COMPILE_FLAGS}
13+
C_COMPILE_FLAGS
14+
${CXX_COMPILE_FLAGS}
15+
"-DSWIFT_THREADING_IS_COMPATIBILITY_LIBRARY"
1416
LINK_FLAGS ${CXX_LINK_FLAGS}
1517
INCORPORATE_OBJECT_LIBRARIES swiftCompatibilityThreading
1618
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}

stdlib/toolchain/Compatibility51/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ add_swift_target_library("${library_name}" STATIC
1010

1111
TARGET_SDKS ${SWIFT_DARWIN_PLATFORMS}
1212

13-
C_COMPILE_FLAGS ${CXX_COMPILE_FLAGS}
13+
C_COMPILE_FLAGS
14+
${CXX_COMPILE_FLAGS}
15+
"-DSWIFT_THREADING_IS_COMPATIBILITY_LIBRARY"
1416
LINK_FLAGS ${CXX_LINK_FLAGS}
1517
INCORPORATE_OBJECT_LIBRARIES swiftCompatibilityThreading
1618
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}

stdlib/toolchain/Compatibility56/CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ add_swift_target_library("${library_name}" STATIC
1818

1919
TARGET_SDKS ${SWIFT_DARWIN_PLATFORMS}
2020

21-
C_COMPILE_FLAGS ${CXX_COMPILE_FLAGS} "-D__STDC_WANT_LIB_EXT1__=1"
21+
C_COMPILE_FLAGS
22+
${CXX_COMPILE_FLAGS}
23+
"-D__STDC_WANT_LIB_EXT1__=1"
24+
"-DSWIFT_THREADING_IS_COMPATIBILITY_LIBRARY"
2225
LINK_FLAGS ${CXX_LINK_FLAGS}
2326
INCORPORATE_OBJECT_LIBRARIES swiftCompatibilityThreading
2427
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}

stdlib/toolchain/CompatibilityConcurrency/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ add_swift_target_library("${library_name}" STATIC
55

66
TARGET_SDKS ${SWIFT_APPLE_PLATFORMS}
77

8-
C_COMPILE_FLAGS ${CXX_COMPILE_FLAGS}
8+
C_COMPILE_FLAGS
9+
${CXX_COMPILE_FLAGS}
10+
"-DSWIFT_THREADING_IS_COMPATIBILITY_LIBRARY"
911
LINK_FLAGS ${CXX_LINK_FLAGS}
1012
INCORPORATE_OBJECT_LIBRARIES swiftCompatibilityThreading
1113
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}

stdlib/toolchain/CompatibilityDynamicReplacements/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ add_swift_target_library("${library_name}" STATIC
55

66
TARGET_SDKS ${SWIFT_DARWIN_PLATFORMS}
77

8-
C_COMPILE_FLAGS ${CXX_COMPILE_FLAGS}
8+
C_COMPILE_FLAGS
9+
${CXX_COMPILE_FLAGS}
10+
"-DSWIFT_THREADING_IS_COMPATIBILITY_LIBRARY"
911
LINK_FLAGS ${CXX_LINK_FLAGS}
1012
INCORPORATE_OBJECT_LIBRARIES swiftCompatibilityThreading
1113
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}

stdlib/toolchain/CompatibilityThreading/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ add_swift_target_library(swiftCompatibilityThreading OBJECT_LIBRARY
88
"${SWIFT_SOURCE_DIR}/lib/Threading/Win32.cpp"
99
INSTALL_IN_COMPONENT never_install
1010
TARGET_SDKS ${SWIFT_DARWIN_PLATFORMS}
11+
12+
C_COMPILE_FLAGS
13+
${CXX_COMPILE_FLAGS}
14+
"-DSWIFT_THREADING_IS_COMPATIBILITY_LIBRARY"
1115
DEPLOYMENT_VERSION_OSX ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_OSX}
1216
DEPLOYMENT_VERSION_IOS ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_IOS}
1317
DEPLOYMENT_VERSION_TVOS ${COMPATIBILITY_MINIMUM_DEPLOYMENT_VERSION_TVOS}

0 commit comments

Comments
 (0)