Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> Signed-off-by: Fam Zheng <f...@redhat.com> --- util/oslib-posix.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/util/oslib-posix.c b/util/oslib-posix.c index c2eeb4f..3214e44 100644 --- a/util/oslib-posix.c +++ b/util/oslib-posix.c @@ -59,6 +59,12 @@ extern int daemon(int, int); #include <sys/mman.h> #include <libgen.h> +/* Get declaration of _NSGetExecutablePath on MacOS X 10.2 or newer. */ +#if defined(__APPLE__) && defined(__MACH__) +#define ENUM_DYLD_BOOL +#include <mach-o/dyld.h> +#endif + #ifdef CONFIG_LINUX #include <sys/syscall.h> #endif @@ -307,6 +313,15 @@ void qemu_init_exec_dir(const char *argv0) p = buf; } } +#elif defined(__APPLE__) && defined(__MACH__) + { + char result[PATH_MAX]; + uint32_t length = PATH_MAX; + if (_NSGetExecutablePath(result, &length) != 0 || result[0] != '/') { + return; + } + p = realpath(result, buf); + } #endif /* If we don't have any way of figuring out the actual executable location then try argv[0]. */ -- 1.8.5.4