dyld-732.8.tar.gz
[apple/dyld.git] / testing / test-cases / LC_DYLD_ENV-DYLD_LIBRARY_PATH.dtest / main.c
1
2 // BUILD: mkdir -p $BUILD_DIR/hideyhole
3 // BUILD: $CC foo.c -dynamiclib -o $BUILD_DIR/hideyhole/libfoo1.dylib -install_name /bad/path/libfoo1.dylib
4 // BUILD: $CC foo.c -dynamiclib -o $BUILD_DIR/hideyhole/libfoo2.dylib -install_name /bad/path2/libfoo2.dylib
5 // BUILD: $CC main.c -o $BUILD_DIR/LC_DYLD_ENV-DYLD_LIBRARY_PATH-main1.exe $BUILD_DIR/hideyhole/libfoo1.dylib -Wl,-dyld_env,DYLD_LIBRARY_PATH=@executable_path/hideyhole
6 // BUILD: $CC main.c -o $BUILD_DIR/LC_DYLD_ENV-DYLD_LIBRARY_PATH-main2.exe $BUILD_DIR/hideyhole/libfoo1.dylib -Wl,-dyld_env,DYLD_LIBRARY_PATH=@loader_path/hideyhole
7 // BUILD: $DYLD_ENV_VARS_ENABLE $BUILD_DIR/LC_DYLD_ENV-DYLD_LIBRARY_PATH-main1.exe
8 // BUILD: $DYLD_ENV_VARS_ENABLE $BUILD_DIR/LC_DYLD_ENV-DYLD_LIBRARY_PATH-main2.exe
9
10 // RUN: ./LC_DYLD_ENV-DYLD_LIBRARY_PATH-main1.exe
11 // RUN: ./LC_DYLD_ENV-DYLD_LIBRARY_PATH-main2.exe
12
13 #include <stdio.h>
14 #include <stdlib.h>
15 #include <dlfcn.h>
16
17 /// Test that main executable's LC_DYLD_ENVIRONMENT can set DYLD_LIBRARY_PATH with @executable_path or @loader_path relative paths
18
19 extern char* __progname;
20
21 int main()
22 {
23 printf("[BEGIN] LC_DYLD_ENV-DYLD_LIBRARY_PATH %s\n", __progname);
24
25 void*h = dlopen("/other/path/libfoo2.dylib", 0);
26
27 if ( h != NULL )
28 printf("[PASS] LC_DYLD_ENV-DYLD_LIBRARY_PATH %s\n", __progname);
29 else
30 printf("[FAIL] LC_DYLD_ENV-DYLD_LIBRARY_PATH %s\n", __progname);
31
32 return 0;
33 }
34