diff --git a/src/Makefile b/src/Makefile index a96c1997..667fff56 100644 --- a/src/Makefile +++ b/src/Makefile @@ -212,7 +212,7 @@ TARGET_CC= $(STATIC_CC) TARGET_STCC= $(STATIC_CC) TARGET_DYNCC= $(DYNAMIC_CC) TARGET_LD= $(CROSS)$(CC) -TARGET_AR= $(CROSS)ar rcus +TARGET_AR= $(CROSS)ar rcus 2>/dev/null TARGET_STRIP= $(CROSS)strip TARGET_LIBPATH= $(or $(PREFIX),/usr/local)/$(or $(MULTILIB),lib) @@ -312,7 +312,6 @@ ifeq (Windows,$(TARGET_SYS)) TARGET_XSHLDFLAGS= -shared -Wl,--out-implib,$(TARGET_DLLDOTANAME) TARGET_DYNXLDOPTS= else - TARGET_AR+= 2>/dev/null ifeq (,$(shell $(TARGET_CC) -o /dev/null -c -x c /dev/null -fno-stack-protector 2>/dev/null || echo 1)) TARGET_XCFLAGS+= -fno-stack-protector endif diff --git a/src/lj_alloc.c b/src/lj_alloc.c index a12ec8b4..70ca1e3b 100644 --- a/src/lj_alloc.c +++ b/src/lj_alloc.c @@ -302,7 +302,7 @@ static void *mmap_probe(size_t size) #if LJ_ALLOC_MMAP32 -#if defined(__sun__) +#if LJ_TARGET_SOLARIS #define LJ_ALLOC_MMAP32_START ((uintptr_t)0x1000) #else #define LJ_ALLOC_MMAP32_START ((uintptr_t)0) diff --git a/src/lj_arch.h b/src/lj_arch.h index d65bc551..3e3581c2 100644 --- a/src/lj_arch.h +++ b/src/lj_arch.h @@ -8,6 +8,8 @@ #include "lua.h" +/* -- Target definitions -------------------------------------------------- */ + /* Target endianess. */ #define LUAJIT_LE 0 #define LUAJIT_BE 1 @@ -38,6 +40,14 @@ #define LUAJIT_OS_BSD 4 #define LUAJIT_OS_POSIX 5 +/* Number mode. */ +#define LJ_NUMMODE_SINGLE 0 /* Single-number mode only. */ +#define LJ_NUMMODE_SINGLE_DUAL 1 /* Default to single-number mode. */ +#define LJ_NUMMODE_DUAL 2 /* Dual-number mode only. */ +#define LJ_NUMMODE_DUAL_SINGLE 3 /* Default to dual-number mode. */ + +/* -- Target detection ---------------------------------------------------- */ + /* Select native target if no target defined. */ #ifndef LUAJIT_TARGET @@ -74,7 +84,10 @@ defined(__NetBSD__) || defined(__OpenBSD__) || \ defined(__DragonFly__)) && !defined(__ORBIS__) #define LUAJIT_OS LUAJIT_OS_BSD -#elif (defined(__sun__) && defined(__svr4__)) || defined(__HAIKU__) +#elif (defined(__sun__) && defined(__svr4__)) +#define LJ_TARGET_SOLARIS 1 +#define LUAJIT_OS LUAJIT_OS_POSIX +#elif defined(__HAIKU__) #define LUAJIT_OS LUAJIT_OS_POSIX #elif defined(__CYGWIN__) #define LJ_TARGET_CYGWIN 1 @@ -103,6 +116,7 @@ #define LJ_TARGET_WINDOWS (LUAJIT_OS == LUAJIT_OS_WINDOWS) #define LJ_TARGET_LINUX (LUAJIT_OS == LUAJIT_OS_LINUX) #define LJ_TARGET_OSX (LUAJIT_OS == LUAJIT_OS_OSX) +#define LJ_TARGET_BSD (LUAJIT_OS == LUAJIT_OS_BSD) #define LJ_TARGET_IOS (LJ_TARGET_OSX && (LUAJIT_TARGET == LUAJIT_ARCH_ARM || LUAJIT_TARGET == LUAJIT_ARCH_ARM64)) #define LJ_TARGET_POSIX (LUAJIT_OS > LUAJIT_OS_WINDOWS) #define LJ_TARGET_DLOPEN LJ_TARGET_POSIX @@ -142,10 +156,7 @@ #endif #endif -#define LJ_NUMMODE_SINGLE 0 /* Single-number mode only. */ -#define LJ_NUMMODE_SINGLE_DUAL 1 /* Default to single-number mode. */ -#define LJ_NUMMODE_DUAL 2 /* Dual-number mode only. */ -#define LJ_NUMMODE_DUAL_SINGLE 3 /* Default to dual-number mode. */ +/* -- Arch-specific settings ---------------------------------------------- */ /* Set target architecture properties. */ #if LUAJIT_TARGET == LUAJIT_ARCH_X86 @@ -407,9 +418,7 @@ #error "No target architecture defined" #endif -#ifndef LJ_PAGESIZE -#define LJ_PAGESIZE 4096 -#endif +/* -- Checks for requirements --------------------------------------------- */ /* Check for minimum required compiler versions. */ #if defined(__GNUC__) @@ -485,6 +494,8 @@ #endif #endif +/* -- Derived defines ----------------------------------------------------- */ + /* Enable or disable the dual-number mode for the VM. */ #if (LJ_ARCH_NUMMODE == LJ_NUMMODE_SINGLE && LUAJIT_NUMMODE == 2) || \ (LJ_ARCH_NUMMODE == LJ_NUMMODE_DUAL && LUAJIT_NUMMODE == 1) @@ -582,6 +593,10 @@ #define LJ_TARGET_UNALIGNED 0 #endif +#ifndef LJ_PAGESIZE +#define LJ_PAGESIZE 4096 +#endif + /* Various workarounds for embedded operating systems or weak C runtimes. */ #if defined(__ANDROID__) || defined(__symbian__) || LJ_TARGET_XBOX360 || LJ_TARGET_WINDOWS #define LUAJIT_NO_LOG2 diff --git a/src/lj_gdbjit.c b/src/lj_gdbjit.c index 69585e51..5b9fe0ad 100644 --- a/src/lj_gdbjit.c +++ b/src/lj_gdbjit.c @@ -363,7 +363,7 @@ static const ELFheader elfhdr_template = { .eosabi = 12, #elif defined(__DragonFly__) .eosabi = 0, -#elif (defined(__sun__) && defined(__svr4__)) +#elif LJ_TARGET_SOLARIS .eosabi = 6, #else .eosabi = 0, diff --git a/src/ps4build.bat b/src/ps4build.bat index e4a7defe..e83c674a 100644 --- a/src/ps4build.bat +++ b/src/ps4build.bat @@ -27,12 +27,12 @@ @set DASMDIR=..\dynasm @set DASM=%DASMDIR%\dynasm.lua @set ALL_LIB=lib_base.c lib_math.c lib_bit.c lib_string.c lib_table.c lib_io.c lib_os.c lib_package.c lib_debug.c lib_jit.c lib_ffi.c -@set GC64=-DLUAJIT_ENABLE_GC64 +@set GC64= @set DASC=vm_x64.dasc @if "%1" neq "gc32" goto :NOGC32 @shift -@set GC64= +@set GC64=-DLUAJIT_DISABLE_GC64 @set DASC=vm_x86.dasc :NOGC32 diff --git a/src/vm_x64.dasc b/src/vm_x64.dasc index c714f4c7..77a579d5 100644 --- a/src/vm_x64.dasc +++ b/src/vm_x64.dasc @@ -4734,7 +4734,7 @@ static void emit_asm_debug(BuildCtx *ctx) ".LEFDE1:\n\n", (int)ctx->codesz - fcofs); #endif #if !LJ_NO_UNWIND -#if (defined(__sun__) && defined(__svr4__)) +#if LJ_TARGET_SOLARIS fprintf(ctx->fp, "\t.section .eh_frame,\"a\",@unwind\n"); #else fprintf(ctx->fp, "\t.section .eh_frame,\"a\",@progbits\n"); diff --git a/src/vm_x86.dasc b/src/vm_x86.dasc index c3999e7c..57c8e4fc 100644 --- a/src/vm_x86.dasc +++ b/src/vm_x86.dasc @@ -5548,7 +5548,7 @@ static void emit_asm_debug(BuildCtx *ctx) ".LEFDE1:\n\n", (int)ctx->codesz - fcofs); #endif #if !LJ_NO_UNWIND -#if (defined(__sun__) && defined(__svr4__)) +#if LJ_TARGET_SOLARIS #if LJ_64 fprintf(ctx->fp, "\t.section .eh_frame,\"a\",@unwind\n"); #else diff --git a/src/xb1build.bat b/src/xb1build.bat index 847e84a5..12c73dd6 100644 --- a/src/xb1build.bat +++ b/src/xb1build.bat @@ -9,7 +9,7 @@ @setlocal @echo ---- Host compiler ---- -@set LJCOMPILE=cl /nologo /c /MD /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE /DLUAJIT_ENABLE_GC64 +@set LJCOMPILE=cl /nologo /c /MD /O2 /W3 /D_CRT_SECURE_NO_DEPRECATE @set LJLINK=link /nologo @set LJMT=mt /nologo @set DASMDIR=..\dynasm