OpenBSD now has strict W^X enforcement. Processes that violate the policy get killed by the kernel. Don't attempt to use executable memory on OpenBSD to avoid this.
Patch from Mark Kettenis. Cc: 11.2 12.0 <mesa-sta...@lists.freedesktop.org> Signed-off-by: Mark Kettenis <kette...@openbsd.org> Signed-off-by: Jonathan Gray <j...@jsg.id.au> --- src/gallium/auxiliary/rtasm/rtasm_execmem.c | 12 ++++++++++++ src/mapi/u_execmem.c | 9 ++++++++- src/mesa/main/execmem.c | 15 ++++++++++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/rtasm/rtasm_execmem.c b/src/gallium/auxiliary/rtasm/rtasm_execmem.c index f7e605e..edbb459 100644 --- a/src/gallium/auxiliary/rtasm/rtasm_execmem.c +++ b/src/gallium/auxiliary/rtasm/rtasm_execmem.c @@ -69,6 +69,16 @@ static struct mem_block *exec_heap = NULL; static unsigned char *exec_mem = NULL; +#ifdef __OpenBSD__ + +static int +init_heap(void) +{ + return 0; +} + +#else + static int init_heap(void) { @@ -83,6 +93,8 @@ init_heap(void) return (exec_mem != MAP_FAILED); } +#endif + void * rtasm_exec_malloc(size_t size) diff --git a/src/mapi/u_execmem.c b/src/mapi/u_execmem.c index 89d5c1d..3af9d0a 100644 --- a/src/mapi/u_execmem.c +++ b/src/mapi/u_execmem.c @@ -45,8 +45,15 @@ static unsigned int head = 0; static unsigned char *exec_mem = (unsigned char *)0; +#if defined(__OpenBSD__) -#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__) +static int +init_map(void) +{ + return 0; +} + +#elif defined(__linux__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__) #include <unistd.h> #include <sys/mman.h> diff --git a/src/mesa/main/execmem.c b/src/mesa/main/execmem.c index 3a13385..87e4a38 100644 --- a/src/mesa/main/execmem.c +++ b/src/mesa/main/execmem.c @@ -36,7 +36,20 @@ -#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__) +#if defined(__OpenBSD__) + +void * +_mesa_exec_malloc(GLuint size) +{ + return NULL; +} + +void +_mesa_exec_free(void *addr) +{ +} + +#elif defined(__linux__) || defined(_NetBSD__) || defined(__sun) || defined(__HAIKU__) /* * Allocate a large block of memory which can hold code then dole it out -- 2.9.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev