diff options
author | Bernhard Froehlich <decke@FreeBSD.org> | 2013-05-15 21:22:21 +0000 |
---|---|---|
committer | Bernhard Froehlich <decke@FreeBSD.org> | 2013-05-15 21:22:21 +0000 |
commit | 2931f65e37596cae6de663dfbe1c15c68c8cf3c4 (patch) | |
tree | 199cdec14ebbcd7da90f2d745d08e5ff6f139181 /emulators/virtualbox-ose-additions/files | |
parent | 07722cdcee696ddeb4fd160619e752f2e2781678 (diff) | |
download | ports-2931f65e37596cae6de663dfbe1c15c68c8cf3c4.tar.gz ports-2931f65e37596cae6de663dfbe1c15c68c8cf3c4.zip |
Notes
Diffstat (limited to 'emulators/virtualbox-ose-additions/files')
3 files changed, 176 insertions, 0 deletions
diff --git a/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-common-crOpenGL-Makefile.kmk b/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-common-crOpenGL-Makefile.kmk new file mode 100644 index 000000000000..59962fd217b3 --- /dev/null +++ b/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-common-crOpenGL-Makefile.kmk @@ -0,0 +1,40 @@ +--- src/VBox/Additions/common/crOpenGL/Makefile.kmk.orig 2013-04-12 12:35:06.000000000 +0200 ++++ src/VBox/Additions/common/crOpenGL/Makefile.kmk 2013-05-02 23:33:26.523212251 +0200 +@@ -42,7 +42,7 @@ + + if1of ($(KBUILD_TARGET), linux solaris freebsd) + #VBoxOGL_DRI = 1 +- ifn1of ($(KBUILD_TARGET),solaris freebsd) # No DRI on Solaris yet ++ ifn1of ($(KBUILD_TARGET),solaris) # No DRI on Solaris yet + VBoxOGL_FAKEDRI = 1 + endif + +@@ -209,8 +209,13 @@ + $(PATH_STAGE_LIB)/libXfixes.so \ + $(PATH_STAGE_LIB)/libXext.so + ifdef VBoxOGL_FAKEDRI +- VBoxOGL_LIBS += \ ++ ifeq ($(KBUILD_TARGET), freebsd) ++ VBoxOGL_LIBS += \ ++ elf ++ else ++ VBoxOGL_LIBS += \ + dl ++ endif + endif + endif + ifdef VBOX_WITH_CRHGSMI +@@ -368,6 +373,13 @@ + | $$(dir $$@) + $(call MSG_GENERATE,python,$@,$<) + $(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) ++ else ifeq ($(KBUILD_TARGET),freebsd) ++$(VBOX_PATH_CROGL_GENFILES)/freebsd_exports.c: \ ++ $(PATH_SUB_CURRENT)/FreeBSD_exports.py \ ++ $(VBOX_CROGL_API_FILES) $(PATH_SUB_CURRENT)/entrypoints.py \ ++ | $$(dir $$@) ++ $(call MSG_GENERATE,python,$@,$<) ++ $(QUIET)$(call VBOX_CROGL_PYTHON_ENV,$(VBOX_PATH_CROGL_PYTHON_INCLUDE),$@) $(VBOX_BLD_PYTHON) $< $(VBOX_PATH_CROGL_GLAPI) + else + $(VBOX_PATH_CROGL_GENFILES)/linux_exports.c: \ + $(PATH_SUB_CURRENT)/Linux_exports.py \ diff --git a/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-common-crOpenGL-fakedri_drv.c b/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-common-crOpenGL-fakedri_drv.c new file mode 100644 index 000000000000..30e49b85c315 --- /dev/null +++ b/emulators/virtualbox-ose-additions/files/patch-src-VBox-Additions-common-crOpenGL-fakedri_drv.c @@ -0,0 +1,120 @@ +--- src/VBox/Additions/common/crOpenGL/fakedri_drv.c.orig 2012-12-19 13:25:04.000000000 -0500 ++++ src/VBox/Additions/common/crOpenGL/fakedri_drv.c 2013-01-27 17:57:04.000000000 -0500 +@@ -29,6 +29,15 @@ + #include <dlfcn.h> + #include <elf.h> + #include <unistd.h> ++ ++#include <sys/param.h> ++#if defined(BSD) ++#include <fcntl.h> ++#include <gelf.h> ++#include <libelf.h> ++#include <string.h> ++#endif ++ + /** X server message type definitions. */ + typedef enum { + X_PROBED, /* Value was probed */ +@@ -50,11 +59,11 @@ + + //@todo this could be different... + #ifdef RT_ARCH_AMD64 +-# define DRI_DEFAULT_DRIVER_DIR "/usr/lib64/dri:/usr/lib/dri:/usr/lib/x86_64-linux-gnu/dri" +-# define DRI_XORG_DRV_DIR "/usr/lib/xorg/modules/drivers/" ++# define DRI_DEFAULT_DRIVER_DIR "/usr/local/lib/dri" ++# define DRI_XORG_DRV_DIR "/usr/local/lib/xorg/modules/drivers/" + #else +-# define DRI_DEFAULT_DRIVER_DIR "/usr/lib/dri:/usr/lib/i386-linux-gnu/dri" +-# define DRI_XORG_DRV_DIR "/usr/lib/xorg/modules/drivers/" ++# define DRI_DEFAULT_DRIVER_DIR "/usr/local/lib/dri" ++# define DRI_XORG_DRV_DIR "/usr/local/lib/xorg/modules/drivers/" + #endif + + #ifdef DEBUG_DRI_CALLS +@@ -209,6 +218,85 @@ + + #define FAKEDRI_JMP64_PATCH_SIZE 13 + ++#if defined(BSD) ++/* Provide basic dladdr1 flags */ ++enum { ++ RTLD_DL_SYMENT = 1 ++}; ++ ++/* Provide a minimal local version of dladdr1 */ ++static int ++dladdr1(const void *address, Dl_info *dlip, void **info, int flags) ++{ ++ static DRI_ELFSYM desym; ++ GElf_Sym sym; ++ GElf_Shdr shdr; ++ Elf *elf; ++ Elf_Scn *scn; ++ Elf_Data *data; ++ int ret, fd, count, i; ++ ++ /* Initialize variables */ ++ fd = -1; ++ elf = NULL; ++ ++ /* Call dladdr first */ ++ ret = dladdr(address, dlip); ++ if (ret == 0) goto err_exit; ++ ++ /* Check for supported flags */ ++ if (flags != RTLD_DL_SYMENT) return 1; ++ ++ /* Open shared library's ELF file */ ++ if (elf_version(EV_CURRENT) == EV_NONE) goto err_exit; ++ fd = open(dlip->dli_fname, O_RDONLY); ++ if (fd < 0) goto err_exit; ++ elf = elf_begin(fd, ELF_C_READ, NULL); ++ if (elf == NULL) goto err_exit; ++ ++ /* Find the '.dynsym' section */ ++ scn = elf_nextscn(elf, NULL); ++ while (scn != NULL) { ++ if (gelf_getshdr(scn, &shdr) == NULL) goto err_exit; ++ if (shdr.sh_type == SHT_DYNSYM) break; ++ scn = elf_nextscn(elf, scn); ++ } ++ if (scn == NULL) goto err_exit; ++ ++ /* Search for the requested symbol by name and offset */ ++ data = elf_getdata(scn, NULL); ++ count = shdr.sh_size / shdr.sh_entsize; ++ for (i = 0; i < count; i++) { ++ gelf_getsym(data, i, &sym); ++ if ((strcmp(dlip->dli_sname, ++ elf_strptr(elf, shdr.sh_link, sym.st_name)) == 0) && ++ (sym.st_value == (dlip->dli_saddr - dlip->dli_fbase))) { ++ break; ++ } ++ } ++ ++ /* Close ELF file */ ++ elf_end(elf); ++ close(fd); ++ ++ /* Return symbol entry in native format */ ++ desym.st_name = sym.st_name; ++ desym.st_info = sym.st_info; ++ desym.st_other = sym.st_other; ++ desym.st_shndx = sym.st_shndx; ++ desym.st_value = sym.st_value; ++ desym.st_size = sym.st_size; ++ *info = &desym; ++ return 1; ++ ++ /* Error handler */ ++err_exit: ++ if (elf != NULL) elf_end(elf); ++ if (fd >= 0) close(fd); ++ return 0; ++} ++#endif ++ + static void + vboxPatchMesaExport(const char* psFuncName, const void *pStart, const void *pEnd) + { diff --git a/emulators/virtualbox-ose-additions/files/vboxguest.in b/emulators/virtualbox-ose-additions/files/vboxguest.in index f542b22ef472..ade179f1e22f 100644 --- a/emulators/virtualbox-ose-additions/files/vboxguest.in +++ b/emulators/virtualbox-ose-additions/files/vboxguest.in @@ -32,10 +32,26 @@ vboxguest_start() return 1 fi fi + if ! kldstat -q -m vgapci/vboxvideo; + then + if ! kldload vboxvideo > /dev/null 2>&1; + then + warn "Can't load vboxvideo module." + return 1 + fi + fi } vboxguest_stop() { + if kldstat -q -m vgapci/vboxvideo; + then + if ! kldunload vboxvideo > /dev/null 2>&1; + then + warn "Can't unload vboxvideo module." + return 1 + fi + fi if kldstat -q -m pci/vboxguest; then if ! kldunload vboxguest > /dev/null 2>&1; |