@@ -220,21 +220,6 @@ static Class getSwiftNativeNSErrorClass() {
220
220
object_dispose ((id )error);
221
221
}
222
222
223
- // / Look up a symbol that points to something else. Treats the symbol as
224
- // / a void** and dereferences it if it's non-NULL. Returns NULL if the
225
- // / symbol can't be found or if the value is NULL.
226
- static void *dynamicLookupSymbol (const char *name) {
227
- void **ptr = reinterpret_cast <void **>(dlsym (RTLD_DEFAULT, name));
228
- if (!ptr) return nullptr ;
229
- return *ptr;
230
- }
231
-
232
- // / Look up an indirect pointer to a mangled Swift symbol, automatically
233
- // / prepending the ErrorObjectLookup_ prefix. Used to find the various
234
- // / Foundation overlay symbols for Error bridging.
235
- #define DYNAMIC_LOOKUP_SYMBOL (symbol ) \
236
- dynamicLookupSymbol (" ErrorObjectLookup_" MANGLE_AS_STRING(MANGLE_SYM(symbol)))
237
-
238
223
static const WitnessTable *getNSErrorConformanceToError () {
239
224
// CFError and NSError are toll-free-bridged, so we can use either type's
240
225
// witness table interchangeably. CFError's is potentially slightly more
@@ -243,7 +228,8 @@ static Class getSwiftNativeNSErrorClass() {
243
228
// to assume that that's been linked in if a user is using NSError in their
244
229
// Swift source.
245
230
246
- auto TheWitnessTable = SWIFT_LAZY_CONSTANT (DYNAMIC_LOOKUP_SYMBOL (So10CFErrorRefas5Error10FoundationWa));
231
+ auto TheWitnessTable = SWIFT_LAZY_CONSTANT (dlsym (RTLD_DEFAULT,
232
+ MANGLE_AS_STRING (MANGLE_SYM (So10CFErrorRefas5Error10FoundationWa))));
247
233
assert (TheWitnessTable &&
248
234
" Foundation overlay not loaded, or 'CFError : Error' conformance "
249
235
" not available" );
@@ -252,7 +238,8 @@ static Class getSwiftNativeNSErrorClass() {
252
238
}
253
239
254
240
static const HashableWitnessTable *getNSErrorConformanceToHashable () {
255
- auto TheWitnessTable = SWIFT_LAZY_CONSTANT (DYNAMIC_LOOKUP_SYMBOL (So8NSObjectCs8Hashable10ObjectiveCWa));
241
+ auto TheWitnessTable = SWIFT_LAZY_CONSTANT (dlsym (RTLD_DEFAULT,
242
+ MANGLE_AS_STRING (MANGLE_SYM (So8NSObjectCs8Hashable10ObjectiveCWa))));
256
243
assert (TheWitnessTable &&
257
244
" ObjectiveC overlay not loaded, or 'NSObject : Hashable' conformance "
258
245
" not available" );
@@ -392,7 +379,8 @@ typedef SWIFT_CC(swift)
392
379
// public func Foundation._getErrorDefaultUserInfo<T: Error>(_ error: T)
393
380
// -> AnyObject?
394
381
auto foundationGetDefaultUserInfo = SWIFT_LAZY_CONSTANT (
395
- reinterpret_cast <GetDefaultFn*> (DYNAMIC_LOOKUP_SYMBOL (10Foundation24_getErrorDefaultUserInfoyyXlSgxs0C0RzlF)));
382
+ reinterpret_cast <GetDefaultFn*> (dlsym (RTLD_DEFAULT,
383
+ MANGLE_AS_STRING (MANGLE_SYM (10Foundation24_getErrorDefaultUserInfoyyXlSgxs0C0RzlF)))));
396
384
if (!foundationGetDefaultUserInfo) {
397
385
SWIFT_CC_PLUSONE_GUARD (T->vw_destroy (error));
398
386
return nullptr ;
@@ -521,10 +509,12 @@ typedef SWIFT_CC(swift)
521
509
bool BridgeFn (NSError *, OpaqueValue*, const Metadata *,
522
510
const WitnessTable *);
523
511
auto bridgeNSErrorToError = SWIFT_LAZY_CONSTANT (
524
- reinterpret_cast <BridgeFn*>(DYNAMIC_LOOKUP_SYMBOL (10Foundation21_bridgeNSErrorToError_3outSbSo0C0C_SpyxGtAA021_ObjectiveCBridgeableE0RzlF)));
512
+ reinterpret_cast <BridgeFn*>(dlsym (RTLD_DEFAULT,
513
+ MANGLE_AS_STRING (MANGLE_SYM (10Foundation21_bridgeNSErrorToError_3outSbSo0C0C_SpyxGtAA021_ObjectiveCBridgeableE0RzlF)))));
525
514
// protocol _ObjectiveCBridgeableError
526
515
auto TheObjectiveCBridgeableError = SWIFT_LAZY_CONSTANT (
527
- reinterpret_cast <const ProtocolDescriptor *>(DYNAMIC_LOOKUP_SYMBOL (10Foundation26_ObjectiveCBridgeableErrorMp)));
516
+ reinterpret_cast <const ProtocolDescriptor *>(dlsym (RTLD_DEFAULT,
517
+ MANGLE_AS_STRING (MANGLE_SYM (10Foundation26_ObjectiveCBridgeableErrorMp)))));
528
518
529
519
// If the Foundation overlay isn't loaded, then arbitrary NSErrors can't be
530
520
// bridged.
0 commit comments