forked from Mirrors/tinycc
FreeBSD fixes
parent
dc685c6b7d
commit
a6c5e2f9ca
20
bcheck.c
20
bcheck.c
|
@ -21,7 +21,9 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#ifndef __FreeBSD__
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
//#define BOUND_DEBUG
|
//#define BOUND_DEBUG
|
||||||
|
|
||||||
|
@ -32,6 +34,14 @@
|
||||||
/* use malloc hooks. Currently the code cannot be reliable if no hooks */
|
/* use malloc hooks. Currently the code cannot be reliable if no hooks */
|
||||||
#define CONFIG_TCC_MALLOC_HOOKS
|
#define CONFIG_TCC_MALLOC_HOOKS
|
||||||
|
|
||||||
|
#define HAVE_MEMALIGN
|
||||||
|
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
#warning Bound checking not fully supported on FreeBSD
|
||||||
|
#undef CONFIG_TCC_MALLOC_HOOKS
|
||||||
|
#undef HAVE_MEMALIGN
|
||||||
|
#endif
|
||||||
|
|
||||||
#define BOUND_T1_BITS 13
|
#define BOUND_T1_BITS 13
|
||||||
#define BOUND_T2_BITS 11
|
#define BOUND_T2_BITS 11
|
||||||
#define BOUND_T3_BITS (32 - BOUND_T1_BITS - BOUND_T2_BITS)
|
#define BOUND_T3_BITS (32 - BOUND_T1_BITS - BOUND_T2_BITS)
|
||||||
|
@ -713,10 +723,20 @@ void *__bound_memalign(size_t size, size_t align, const void *caller)
|
||||||
|
|
||||||
restore_malloc_hooks();
|
restore_malloc_hooks();
|
||||||
|
|
||||||
|
#ifndef HAVE_MEMALIGN
|
||||||
|
if (align > 4) {
|
||||||
|
/* XXX: handle it ? */
|
||||||
|
ptr = NULL;
|
||||||
|
} else {
|
||||||
|
/* we suppose that malloc aligns to at least four bytes */
|
||||||
|
ptr = malloc(size + 1);
|
||||||
|
}
|
||||||
|
#else
|
||||||
/* we allocate one more byte to ensure the regions will be
|
/* we allocate one more byte to ensure the regions will be
|
||||||
separated by at least one byte. With the glibc malloc, it may
|
separated by at least one byte. With the glibc malloc, it may
|
||||||
be in fact not necessary */
|
be in fact not necessary */
|
||||||
ptr = memalign(size + 1, align);
|
ptr = memalign(size + 1, align);
|
||||||
|
#endif
|
||||||
|
|
||||||
install_malloc_hooks();
|
install_malloc_hooks();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue