#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <mach-o/dyld.h>
#include <mach-o/dyld_priv.h>
#include "test_support.h"
int main(int argc, const char* argv[], const char* envp[], const char* apple[]) {
size_t cacheLen;
uintptr_t cacheStart = (uintptr_t)_dyld_get_shared_cache_range(&cacheLen);
const char* selName = _dyld_get_objc_selector("retain");
if ( cacheStart != 0 ) {
if ( selName == NULL ) {
FAIL("_dyld_get_objc_selector() returned null for selector in shared cache");
}
if ( ((uintptr_t)selName < cacheStart) || ((uintptr_t)selName >= (cacheStart + cacheLen)) ) {
FAIL("_dyld_get_objc_selector() pointer outside of shared cache range");
}
} else {
if ( selName != NULL ) {
FAIL("_dyld_get_objc_selector() returned non-null for selector without shared cache");
}
}
PASS("Success");
}