#include <stdio.h>
#include <string.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[]) {
void* handle = dlopen(RUN_DIR "/libfoo-symlink.dylib", RTLD_LAZY);
if ( handle == NULL ) {
FAIL("dlerror(): %s", dlerror());
}
const char* foundPath = NULL;
int count = _dyld_image_count();
for (int i=0; i < count; ++i) {
const char* path = _dyld_get_image_name(i);
LOG("path[%2d]=%s", i, path);
if ( strstr(path, "libfoo") != NULL ) {
if ( foundPath == NULL ) {
foundPath = path;
}
else {
FAIL("More than one libfoo found");
}
}
}
if ( foundPath == NULL ) {
FAIL("No libfoo found");
}
if ( strstr(foundPath, "libfoo-symlink") != NULL ) {
FAIL("Path is symlink not real path: %s", foundPath);
}
PASS("Success");
}