util/oslib-posix.c: Implement qemu_init_exec_dir() for Haiku

The qemu_init_exec_dir() function is inherently non-portable;
provide an implementation for Haiku hosts.

Signed-off-by: David Carlier <devnexen@gmail.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20200703145614.16684-9-peter.maydell@linaro.org
[PMM: Expanded commit message]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
stable-6.0
David CARLIER 2020-07-13 14:36:10 +01:00 committed by Peter Maydell
parent 81b7b1e21d
commit 2b9b9e7010
1 changed files with 19 additions and 0 deletions

View File

@ -60,6 +60,10 @@
#include <mach-o/dyld.h>
#endif
#ifdef __HAIKU__
#include <kernel/image.h>
#endif
#include "qemu/mmap-alloc.h"
#ifdef CONFIG_DEBUG_STACK_USAGE
@ -389,6 +393,21 @@ void qemu_init_exec_dir(const char *argv0)
}
}
}
#elif defined(__HAIKU__)
{
image_info ii;
int32_t c = 0;
*buf = '\0';
while (get_next_image_info(0, &c, &ii) == B_OK) {
if (ii.type == B_APP_IMAGE) {
strncpy(buf, ii.name, sizeof(buf));
buf[sizeof(buf) - 1] = 0;
p = buf;
break;
}
}
}
#endif
/* If we don't have any way of figuring out the actual executable
location then try argv[0]. */