dyld-625.13.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/main1.exe $BUILD_DIR/hideyhole/libfoo1.dylib -Wl,-dyld_env,DYLD_LIBRARY_PATH=@executable_path/hideyhole
6 // BUILD: $CC main.c -o $BUILD_DIR/main2.exe $BUILD_DIR/hideyhole/libfoo1.dylib -Wl,-dyld_env,DYLD_LIBRARY_PATH=@loader_path/hideyhole
7 // BUILD: $DYLD_ENV_VARS_ENABLE $BUILD_DIR/main1.exe
8 // BUILD: $DYLD_ENV_VARS_ENABLE $BUILD_DIR/main2.exe
9
10 // BUILD: $DYLD_ENV_VARS_ENABLE $BUILD_DIR/main1.exe
11 // BUILD: $DYLD_ENV_VARS_ENABLE $BUILD_DIR/main2.exe
12
13 // RUN: ./main1.exe
14 // RUN: ./main2.exe
15
16 #include <stdio.h>
17 #include <stdlib.h>
18 #include <dlfcn.h>
19
20 /// Test that main executable's LC_DYLD_ENVIRONMENT can set DYLD_LIBRARY_PATH with @executable_path or @loader_path relative paths
21
22 extern char* __progname;
23
24 int main()
25 {
26 printf("[BEGIN] LC_DYLD_ENV-DYLD_LIBRARY_PATH %s\n", __progname);
27
28 void*h = dlopen("/other/path/libfoo2.dylib", 0);
29
30 if ( h != NULL )
31 printf("[PASS] LC_DYLD_ENV-DYLD_LIBRARY_PATH %s\n", __progname);
32 else
33 printf("[FAIL] LC_DYLD_ENV-DYLD_LIBRARY_PATH %s\n", __progname);
34
35 return 0;
36 }
37