diff --git a/src/jit/bcsave.lua b/src/jit/bcsave.lua index fa68bf56..8303263d 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 10ff5529..da16a193 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 1e1ac31f..7135833b 100644 --- a/src/lj_gdbjit.c +++ b/src/lj_gdbjit.c @@ -358,6 +358,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