From 4846a714a9b8e01bac8f9fc1de0eb2a5f00ea79b Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 7 Oct 2014 16:17:29 +0200 Subject: [PATCH] Fix DragonFly build (unsupported). Thanks to Robin Hahling, Alex Hornung and Joris Giovannangeli. --- src/jit/bcsave.lua | 2 +- src/lj_alloc.c | 6 +++--- src/lj_arch.h | 3 ++- src/lj_gdbjit.c | 2 ++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/jit/bcsave.lua b/src/jit/bcsave.lua index f55bda97..122bb24b 100644 --- a/src/jit/bcsave.lua +++ b/src/jit/bcsave.lua @@ -69,7 +69,7 @@ local map_arch = { local map_os = { linux = true, windows = true, osx = true, freebsd = true, netbsd = true, - openbsd = true, solaris = true, + openbsd = true, dragonfly = true, solaris = true, } local function checkarg(str, map, err) diff --git a/src/lj_alloc.c b/src/lj_alloc.c index facccee5..7c7ec678 100644 --- a/src/lj_alloc.c +++ b/src/lj_alloc.c @@ -194,14 +194,14 @@ static LJ_AINLINE void *CALL_MMAP(size_t size) return ptr; } -#elif LJ_TARGET_OSX || LJ_TARGET_PS4 || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sun__) +#elif LJ_TARGET_OSX || LJ_TARGET_PS4 || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__sun__) /* OSX and FreeBSD mmap() use a naive first-fit linear search. ** That's perfect for us. Except that -pagezero_size must be set for OSX, ** otherwise the lower 4GB are blocked. And the 32GB RLIMIT_DATA needs ** to be reduced to 250MB on FreeBSD. */ -#if LJ_TARGET_OSX +#if LJ_TARGET_OSX || defined(__DragonFly__) #define MMAP_REGION_START ((uintptr_t)0x10000) #elif LJ_TARGET_PS4 #define MMAP_REGION_START ((uintptr_t)0x4000) @@ -238,7 +238,7 @@ static LJ_AINLINE void *CALL_MMAP(size_t size) return p; } if (p != CMFAIL) munmap(p, size); -#ifdef __sun__ +#if defined(__sun__) || defined(__DragonFly__) alloc_hint += 0x1000000; /* Need near-exhaustive linear scan. */ if (alloc_hint + size < MMAP_REGION_END) continue; #endif diff --git a/src/lj_arch.h b/src/lj_arch.h index f04da3bf..f1c6e5e0 100644 --- a/src/lj_arch.h +++ b/src/lj_arch.h @@ -67,7 +67,8 @@ #elif defined(__MACH__) && defined(__APPLE__) #define LUAJIT_OS LUAJIT_OS_OSX #elif (defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \ - defined(__NetBSD__) || defined(__OpenBSD__)) && !defined(__ORBIS__) + defined(__NetBSD__) || defined(__OpenBSD__) || \ + defined(__DragonFly__)) && !defined(__ORBIS__) #define LUAJIT_OS LUAJIT_OS_BSD #elif (defined(__sun__) && defined(__svr4__)) || defined(__CYGWIN__) #define LUAJIT_OS LUAJIT_OS_POSIX diff --git a/src/lj_gdbjit.c b/src/lj_gdbjit.c index 5e7fca1c..d999986e 100644 --- a/src/lj_gdbjit.c +++ b/src/lj_gdbjit.c @@ -356,6 +356,8 @@ static const ELFheader elfhdr_template = { .eosabi = 2, #elif defined(__OpenBSD__) .eosabi = 12, +#elif defined(__DragonFly__) + .eosabi = 0, #elif (defined(__sun__) && defined(__svr4__)) .eosabi = 6, #else