diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2016-07-25 20:12:07 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2016-07-25 20:12:07 +0000 |
commit | a17e28e18db4858a49d5582d6d986a1e651fdb5a (patch) | |
tree | ae41eb6ed9a693771575c769be3f4e819d4b0ddb | |
parent | dbd3c6ee060c5d5f084786d966088e75ebdf089b (diff) |
Disable the code that allocates W|X memory. There is fallback code that
gets used if allocating W|X memory fails, which is probably a bit slower.
However, that is much better than commit a W^X violation which currently
gets you killed.
ok jca@
-rw-r--r-- | lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c | 12 | ||||
-rw-r--r-- | lib/mesa/src/mapi/u_execmem.c | 9 | ||||
-rw-r--r-- | lib/mesa/src/mesa/main/execmem.c | 15 |
3 files changed, 34 insertions, 2 deletions
diff --git a/lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c b/lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c index f7e605e95..edbb45970 100644 --- a/lib/mesa/src/gallium/auxiliary/rtasm/rtasm_execmem.c +++ b/lib/mesa/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/lib/mesa/src/mapi/u_execmem.c b/lib/mesa/src/mapi/u_execmem.c index 89d5c1d08..3af9d0ac9 100644 --- a/lib/mesa/src/mapi/u_execmem.c +++ b/lib/mesa/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/lib/mesa/src/mesa/main/execmem.c b/lib/mesa/src/mesa/main/execmem.c index 3a1338515..87e4a38ef 100644 --- a/lib/mesa/src/mesa/main/execmem.c +++ b/lib/mesa/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 |