load library from same path as executable
diff --git a/unix/fsatrace.c b/unix/fsatrace.c
index 4851574..1aa98dc 100644
--- a/unix/fsatrace.c
+++ b/unix/fsatrace.c
@@ -9,6 +9,7 @@
#include <stdarg.h>
#include <fcntl.h>
#include <limits.h>
+#include <libproc.h>
#include "fsatrace.h"
extern char **environ;
@@ -60,6 +61,7 @@
int r;
char so [PATH_MAX];
char shname [PATH_MAX];
+ char fullpath [PATH_MAX];
int rc = EXIT_FAILURE;
int child;
const char *out;
@@ -75,12 +77,13 @@
r = ftruncate(fd, LOGSZ);
assert(!r);
buf = mmap(0, LOGSZ, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ proc_pidpath(getpid(), fullpath, sizeof(fullpath));
#ifdef __APPLE__
- snprintf(so, sizeof(so), "%s.dylib", argv[0]);
+ snprintf(so, sizeof(so), "%s.dylib", fullpath);
setenv("DYLD_INSERT_LIBRARIES", so, 1);
setenv("DYLD_FORCE_FLAT_NAMESPACE", "1", 1);
#else
- snprintf(so, sizeof(so), "%s.so", argv[0]);
+ snprintf(so, sizeof(so), "%s.so", fullpath);
setenv("LD_PRELOAD", so, 1);
#endif
setenv(ENVOUT, shname, 1);