<div dir="ltr">Then the patch is?</div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-02-14 15:48 GMT+08:00 Alex Hornung <span dir="ltr"><<a href="mailto:alex@alexhornung.com" target="_blank">alex@alexhornung.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">In the relevant CALL_MMAP in src/lj_alloc.c, luajit tries to mmap at a specific address (MMAP_REGION_START). It then checks whether the address returned by mmap() is between MMAP_REGION_START and MMAP_REGION_END. If it isn't, it fails.<br>

<br>
However, our mmap() will not try to actually allocate at the passed address without MAP_TRYFIXED (for right or wrong - haven't looked at our mmap yet). Adding MAP_TRYFIXED to the MMAP_FLAGS solves the problem and luajit starts up.<br>

<br>
HTH,<br>
Alex<div><div class="h5"><br>
<br>
On 2014-02-14 07:17, lhmwzy wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
OK,here is the ktrace result<br>
<br>
# ktrace ./luajit<br>
./luajit: cannot create state: not enough memory<br>
# kdump<br>
 762 ktrace RET ktrace 0<br>
 762 ktrace CALL execve(0x7ffffffff987,<u></u>0x7ffffffff738,0x7ffffffff748)<br>
 762 ktrace NAMI "./luajit"<br>
 762 ktrace NAMI "/usr/libexec/ld-elf.so.2"<br>
 762 luajit RET execve 0<br>
 762 luajit CALL<br>
__sysctl(0x7fffffffeed0,0x2,<u></u>0x8008bdb60,0x7fffffffeec8,0,<u></u>0)<br>
 762 luajit RET __sysctl 0<br>
 762 luajit CALL<br>
mmap(0,0x8000,PROT_READ|PROT_<u></u>WRITE,MAP_PRIVATE|MAP_ANON,<u></u>0xffffffff,0,0)<br>
 762 luajit RET mmap 7057408/0x6bb000<br>
 762 luajit CALL issetugid<br>
 762 luajit RET issetugid 0<br>
 762 luajit CALL lstat(0x8006c0000,<u></u>0x7fffffffede0)<br>
 762 luajit NAMI "/etc"<br>
 762 luajit RET lstat 0<br>
 762 luajit CALL lstat(0x8006c0000,<u></u>0x7fffffffede0)<br>
 762 luajit NAMI "/etc/libmap.conf"<br>
 762 luajit RET lstat -1 errno 2 No such file or directory<br>
 762 luajit CALL open(0x8006c0000,O_CLOEXEC,<<u></u>unused>0)<br>
 762 luajit NAMI "/etc/libmap.conf"<br>
 762 luajit RET open -1 errno 2 No such file or directory<br>
 762 luajit CALL access(0x8006c0000,F_OK)<br>
 762 luajit NAMI "/usr/lib/gcc47/libm.so.4"<br>
 762 luajit RET access -1 errno 2 No such file or directory<br>
 762 luajit CALL open(0x8006b2906,O_CLOEXEC,<<u></u>unused>0x8)<br>
 762 luajit NAMI "/var/run/ld-elf.so.hints"<br>
 762 luajit RET open 3<br>
 762 luajit CALL read(0x3,0x7fffffffec50,0x80)<br>
 762 luajit GIO fd 3 read 128 bytes<br></div></div>
 "Ehnt^AM^@('<div class=""><br>
 "<br>
 762 luajit RET read 128/0x80<br>
 762 luajit CALL lseek(0x3,0,0x80,SEEK_SET)<br>
 762 luajit RET lseek 128/0x80<br>
 762 luajit CALL read(0x3,0x8006bc040,0x28)<br>
 762 luajit GIO fd 3 read 40 bytes<br>
 "/usr/lib:/usr/lib/compat:/<u></u>usr/local/lib"<br></div><div><div class="h5">
 762 luajit RET read 40/0x28<br>
 762 luajit CALL close(0x3)<br>
 762 luajit RET close 0<br>
 762 luajit CALL access(0x8006c0000,F_OK)<br>
 762 luajit NAMI "/usr/lib/libm.so.4"<br>
 762 luajit RET access 0<br>
 762 luajit CALL open(0x8006bf040,O_CLOEXEC,<<u></u>unused>0x8)<br>
 762 luajit NAMI "/usr/lib/libm.so.4"<br>
 762 luajit RET open 3<br>
 762 luajit CALL fstat(0x3,0x7fffffffee60)<br>
 762 luajit RET fstat 0<br>
 762 luajit CALL mmap(0,0x1000,PROT_READ,MAP_<u></u>PRIVATE,0x3,0,0)<br>
 762 luajit RET mmap 7090176/0x6c3000<br>
 762 luajit CALL<br>
mmap(0,0x22a000,PROT_NONE,MAP_<u></u>PRIVATE|MAP_ANON|MAP_NOCORE,<u></u>0xffffffff,0,0)<br>
 762 luajit RET mmap 9183232/0x8c2000<br>
 762 luajit CALL<br>
mmap(0x8008c2000,0x2a000,PROT_<u></u>READ|PROT_EXEC,MAP_PRIVATE|<u></u>MAP_FIXED|MAP_NOCORE,0x3,0,0)<br>
 762 luajit RET mmap 9183232/0x8c2000<br>
 762 luajit CALL<br>
mmap(0x800aeb000,0x1000,PROT_<u></u>READ|PROT_WRITE,MAP_PRIVATE|<u></u>MAP_FIXED,0x3,0,0x29000)<br>
 762 luajit RET mmap 11448320/0xaeb000<br>
 762 luajit CALL munmap(0x8006c3000,0x1000)<br>
 762 luajit RET munmap 0<br>
 762 luajit CALL close(0x3)<br>
 762 luajit RET close 0<br>
 762 luajit CALL access(0x8006c0000,F_OK)<br>
 762 luajit NAMI "/usr/lib/gcc47/libc.so.8"<br>
 762 luajit RET access -1 errno 2 No such file or directory<br>
 762 luajit CALL access(0x8006c0000,F_OK)<br>
 762 luajit NAMI "/usr/lib/libc.so.8"<br>
 762 luajit RET access 0<br>
 762 luajit CALL open(0x8006bf080,O_CLOEXEC,<<u></u>unused>0x8)<br>
 762 luajit NAMI "/usr/lib/libc.so.8"<br>
 762 luajit RET open 3<br>
 762 luajit CALL fstat(0x3,0x7fffffffee60)<br>
 762 luajit RET fstat 0<br>
 762 luajit CALL mmap(0,0x1000,PROT_READ,MAP_<u></u>PRIVATE,0x3,0,0)<br>
 762 luajit RET mmap 7090176/0x6c3000<br>
 762 luajit CALL<br>
mmap(0,0x34e000,PROT_NONE,MAP_<u></u>PRIVATE|MAP_ANON|MAP_NOCORE,<u></u>0xffffffff,0,0)<br>
 762 luajit RET mmap 11452416/0xaec000<br>
 762 luajit CALL<br>
mmap(0x800aec000,0x123000,<u></u>PROT_READ|PROT_EXEC,MAP_<u></u>PRIVATE|MAP_FIXED|MAP_NOCORE,<u></u>0x3,0,0)<br>
 762 luajit RET mmap 11452416/0xaec000<br>
 762 luajit CALL<br>
mmap(0x800e0f000,0xc000,PROT_<u></u>READ|PROT_WRITE,MAP_PRIVATE|<u></u>MAP_FIXED,0x3,0,0x123000)<br>
 762 luajit RET mmap 14741504/0xe0f000<br>
 762 luajit CALL<br>
mmap(0x800e1b000,0x1f000,PROT_<u></u>READ|PROT_WRITE,MAP_PRIVATE|<u></u>MAP_FIXED|MAP_ANON,0xffffffff,<u></u>0,0)<br>
 762 luajit RET mmap 14790656/0xe1b000<br>
 762 luajit CALL munmap(0x8006c3000,0x1000)<br>
 762 luajit RET munmap 0<br>
 762 luajit CALL close(0x3)<br>
 762 luajit RET close 0<br>
 762 luajit CALL<br>
mmap(0,0x19000,PROT_READ|PROT_<u></u>WRITE,MAP_PRIVATE|MAP_ANON,<u></u>0xffffffff,0x800000000,0)<br>
 762 luajit RET mmap 7090176/0x6c3000<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff770)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL set_tls_area(0,0x7ffffffff850,<u></u>0x10)<br>
 762 luajit RET set_tls_area 0<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff7a0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL issetugid<br>
 762 luajit RET issetugid 0<br>
 762 luajit CALL open(0x800be5388,O_RDONLY,<<u></u>unused>0xfffffffffffffff7)<br>
 762 luajit NAMI "/dev/urandom"<br>
 762 luajit RET open 3<br>
 762 luajit CALL read(0x3,0x800e1bea0,0x40)<br>
 762 luajit GIO fd 3 read 64 bytes<br></div></div>
 "EuIM^QM-FNM^AM-tM-oII_M-5KM^<u></u>NmKM-BM-~i{M-7^VM-;M-7KM-{ M^?M^EL<br>
 M-:M^SM^@j$M-oM-|M-/s9s$M-`Iv+<u></u>^UM-XM-"M^IM^^M-FM^SM^_M-PM-<u></u>AM^G<br>
 M-@M^LBM-oM^KM^F"<div><div class="h5"><br>
 762 luajit RET read 64/0x40<br>
 762 luajit CALL close(0x3)<br>
 762 luajit RET close 0<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff760)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff760)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff760)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL setrlimit(RLIMIT_DATA,<u></u>0x7ffffffff800)<br>
 762 luajit RET setrlimit 0<br>
 762 luajit CALL<br>
mmap(0x10000000,0x20000,PROT_<u></u>READ|PROT_WRITE,MAP_PRIVATE|<u></u>MAP_ANON,0xffffffff,0,0)<br>
 762 luajit RET mmap 7192576/0x6dc000<br>
 762 luajit CALL munmap(0x8006dc000,0x20000)<br>
 762 luajit RET munmap 0<br>
 762 luajit CALL<br>
mmap(0x10000000,0x20000,PROT_<u></u>READ|PROT_WRITE,MAP_PRIVATE|<u></u>MAP_ANON,0xffffffff,0,0)<br>
 762 luajit RET mmap 7192576/0x6dc000<br>
 762 luajit CALL munmap(0x8006dc000,0x20000)<br>
 762 luajit RET munmap 0<br>
 762 luajit CALL write(0x2,0x7ffffffff120,0xa)<br>
 762 luajit GIO fd 2 wrote 10 bytes<br>
 "./luajit: "<br>
 762 luajit RET write 10/0xa<br>
 762 luajit CALL write(0x2,0x7ffffffff120,0x27)<br>
 762 luajit GIO fd 2 wrote 39 bytes<br>
 "cannot create state: not enough memory<br>
 "<br>
 762 luajit RET write 39/0x27<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff710)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff6b0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff6b0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_BLOCK,<u></u>0x8008bda10,0x7ffffffff6b0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL sigprocmask(SIG_SETMASK,<u></u>0x8008bda30,0)<br>
 762 luajit RET sigprocmask 0<br>
 762 luajit CALL exit(0x1)<br>
#<br>
<br>
2014-02-14 15:13 GMT+08:00 lhmwzy <<a href="mailto:lhmwzy@gmail.com" target="_blank">lhmwzy@gmail.com</a>>:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
OK,I find the reason.<br>
<br>
ktrace must be config in kernel<br>
I will build the custom kernel and try again.<br>
<br>
2014-02-14 15:06 GMT+08:00 lhmwzy <<a href="mailto:lhmwzy@gmail.com" target="_blank">lhmwzy@gmail.com</a>>:<br>
<br>
I'd like to provide,but how to<br>
<br>
#cd cd LuaJIT-2.0.2.patch/src<br>
#ktrace luajit<br>
ktrace: ktrace.out: Function not implemented<br>
<br>
2014-02-14 14:50 GMT+08:00 Alex Hornung <<a href="mailto:alex@alexhornung.com" target="_blank">alex@alexhornung.com</a>>:<br>
<br>
Can you provide a ktrace(1) output? Just ktrace luajit, and then<br>
kdump and get the output.<br>
<br>
Cheers,<br>
Alex<br>
<br>
On 14/02/14 01:22, lhmwzy wrote:<br>
<br>
I have tried as fllowing<br>
<br>
diff -Nur LuaJIT-2.0.2/src/lj_alloc.c<br>
LuaJIT-2.0.2.patch/src/lj_<u></u>alloc.c<br>
--- LuaJIT-2.0.2/src/lj_alloc.c 2013-06-03 19:00:00.000000000 +0000<br>
+++ LuaJIT-2.0.2.patch/src/lj_<u></u>alloc.c 2014-02-14 07:19:53.948397000<br>
+0000<br>
@@ -188,7 +188,7 @@<br>
return ptr;<br>
}<br>
<br>
-#elif LJ_TARGET_OSX || defined(__FreeBSD__) ||<br>
defined(__FreeBSD_kernel__) || defined(__OpenBSD__) ||<br>
defined(__sun__)<br>
+#elif LJ_TARGET_OSX || defined(__FreeBSD__) ||<br>
defined(__FreeBSD_kernel__) || defined(__OpenBSD__) ||<br>
defined(__sun__)||defined(__<u></u>DragonFly__)<br>
<br>
/* OSX and FreeBSD mmap() use a naive first-fit linear search.<br>
** That's perfect for us. Except that -pagezero_size must be set<br>
for OSX,<br>
@@ -202,7 +202,7 @@<br>
#endif<br>
#define MMAP_REGION_END ((uintptr_t)0x80000000)<br>
<br>
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)<br>
+#if defined(__FreeBSD__) ||<br>
defined(__FreeBSD_kernel__)||<u></u>defined(__DragonFly__)<br>
#include <sys/resource.h><br>
#endif<br>
<br>
@@ -212,7 +212,7 @@<br>
/* Hint for next allocation. Doesn't need to be thread-safe. */<br>
static uintptr_t alloc_hint = MMAP_REGION_START;<br>
int retry = 0;<br>
-#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)<br>
+#if defined(__FreeBSD__) ||<br>
defined(__FreeBSD_kernel__)||<u></u>defined(__DragonFly__)<br>
static int rlimit_modified = 0;<br>
if (LJ_UNLIKELY(rlimit_modified == 0)) {<br>
struct rlimit rlim;<br>
diff -Nur LuaJIT-2.0.2/src/lj_arch.h<br>
LuaJIT-2.0.2.patch/src/lj_<u></u>arch.h<br>
--- LuaJIT-2.0.2/src/lj_arch.h 2013-06-03 19:00:00.000000000 +0000<br>
+++ LuaJIT-2.0.2.patch/src/lj_<u></u>arch.h 2014-02-14 07:21:18.628483000<br>
+0000<br>
@@ -67,7 +67,7 @@<br>
#elif defined(__MACH__) && defined(__APPLE__)<br>
#define LUAJIT_OS LUAJIT_OS_OSX<br>
#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ||<br>
- defined(__NetBSD__) || defined(__OpenBSD__)<br>
+ defined(__NetBSD__) ||<br>
defined(__OpenBSD__)||defined(<u></u>__DragonFly__)<br>
#define LUAJIT_OS LUAJIT_OS_BSD<br>
#elif (defined(__sun__) && defined(__svr4__)) ||<br>
defined(__CYGWIN__)<br>
#define LUAJIT_OS LUAJIT_OS_POSIX<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
cd LuaJIT-2.0.2.patch/<br>
cd src<br>
/usr/local/bin/make<br>
</blockquote>
HOSTCC host/minilua.o<br>
HOSTLINK host/minilua<br>
DYNASM host/buildvm_arch.h<br>
HOSTCC host/buildvm.o<br>
HOSTCC host/buildvm_asm.o<br>
HOSTCC host/buildvm_peobj.o<br>
HOSTCC host/buildvm_lib.o<br>
HOSTCC host/buildvm_fold.o<br>
HOSTLINK host/buildvm<br>
BUILDVM lj_vm.s<br>
ASM lj_vm.o<br>
CC lj_gc.o<br>
BUILDVM lj_ffdef.h<br>
CC lj_err.o<br>
CC lj_char.o<br>
BUILDVM lj_bcdef.h<br>
CC lj_bc.o<br>
CC lj_obj.o<br>
CC lj_str.o<br>
CC lj_tab.o<br>
CC lj_func.o<br>
CC lj_udata.o<br>
CC lj_meta.o<br>
CC lj_debug.o<br>
CC lj_state.o<br>
CC lj_dispatch.o<br>
CC lj_vmevent.o<br>
CC lj_vmmath.o<br>
CC lj_strscan.o<br>
CC lj_api.o<br>
CC lj_lex.o<br>
CC lj_parse.o<br>
CC lj_bcread.o<br>
CC lj_bcwrite.o<br>
CC lj_load.o<br>
CC lj_ir.o<br>
CC lj_opt_mem.o<br>
BUILDVM lj_folddef.h<br>
CC lj_opt_fold.o<br>
CC lj_opt_narrow.o<br>
CC lj_opt_dce.o<br>
CC lj_opt_loop.o<br>
CC lj_opt_split.o<br>
CC lj_opt_sink.o<br>
CC lj_mcode.o<br>
CC lj_snap.o<br>
CC lj_record.o<br>
CC lj_crecord.o<br>
BUILDVM lj_recdef.h<br>
CC lj_ffrecord.o<br>
CC lj_asm.o<br>
CC lj_trace.o<br>
CC lj_gdbjit.o<br>
CC lj_ctype.o<br>
CC lj_cdata.o<br>
CC lj_cconv.o<br>
CC lj_ccall.o<br>
CC lj_ccallback.o<br>
CC lj_carith.o<br>
CC lj_clib.o<br>
CC lj_cparse.o<br>
CC lj_lib.o<br>
CC lj_alloc.o<br>
CC lib_aux.o<br>
BUILDVM lj_libdef.h<br>
CC lib_base.o<br>
CC lib_math.o<br>
CC lib_bit.o<br>
CC lib_string.o<br>
CC lib_table.o<br>
CC lib_io.o<br>
CC lib_os.o<br>
CC lib_package.o<br>
CC lib_debug.o<br>
CC lib_jit.o<br>
CC lib_ffi.o<br>
CC lib_init.o<br>
AR libluajit.a<br>
CC luajit.o<br>
BUILDVM jit/vmdef.lua<br>
DYNLINK libluajit.so<br>
LINK luajit<br>
OK Successfully built LuaJIT<br>
<br>
All seems good,but when run<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
./luajit<br>
</blockquote>
./luajit: cannot create state: not enough memory<br>
<br>
2014-02-14 9:19 GMT+08:00 Justin Sherrill<br>
<<a href="mailto:justin@shiningsilence.com" target="_blank">justin@shiningsilence.com</a>>:<br>
<br>
It looks like it's trying something specific; assuming it's really<br>
not supported on DragonFly, you could look in the file and see if it<br>
has a fallback for other operating systems that don't support this<br>
feature and add DragonFly to that fallback.<br>
<br>
On Thu, Feb 13, 2014 at 4:01 AM, lhmwzy <<a href="mailto:lhmwzy@gmail.com" target="_blank">lhmwzy@gmail.com</a>> wrote:<br>
<br>
LuaJIT-2.1-20140109<br>
<br>
use GNU make to make<br>
<br>
the error info:<br>
lj_mcode.c:123:2: error: #error "Missing OS support for explicit<br>
placement of executable memory"<br>
lj_mcode.c: In function 'mcode_protect':<br>
lj_mcode.c:197:5: warning: implicit declaration of function<br>
'mcode_setprot' [-Wimplicit-function-<u></u>declaration]<br>
lj_mcode.c: In function 'mcode_alloc':<br>
lj_mcode.c:235:7: warning: implicit declaration of function<br>
'mcode_alloc_at' [-Wimplicit-function-<u></u>declaration]<br>
lj_mcode.c:235:45: error: 'MCPROT_RW' undeclared (first use in this<br>
function)<br>
lj_mcode.c:235:45: note: each undeclared identifier is reported<br>
only once for each function it appears in<br>
lj_mcode.c:240:7: warning: implicit declaration of function<br>
'mcode_free' [-Wimplicit-function-<u></u>declaration]<br>
lj_mcode.c: In function 'mcode_allocarea':<br>
lj_mcode.c:275:15: error: 'MCPROT_RW' undeclared (first use in this<br>
function)<br>
lj_mcode.c: In function 'lj_mcode_reserve':<br>
lj_mcode.c:304:22: error: 'MCPROT_RW' undeclared (first use in this<br>
function)<br>
lj_mcode.c: In function 'lj_mcode_commit':<br>
lj_mcode.c:313:20: error: 'MCPROT_RX' undeclared (first use in this<br>
function)<br>
lj_mcode.c: In function 'lj_mcode_abort':<br>
lj_mcode.c:320:22: error: 'MCPROT_RX' undeclared (first use in this<br>
function)<br>
lj_mcode.c: In function 'lj_mcode_patch':<br>
lj_mcode.c:332:24: error: 'MCPROT_RX' undeclared (first use in this<br>
function)<br>
lj_mcode.c:340:24: error: 'MCPROT_RW' undeclared (first use in this<br>
function)<br>
Makefile:642: recipe for target 'lj_mcode.o' failed<br>
<br>
try LuaJIT-2.0.2<br>
the error info :<br>
lj_mcode.c:122:2: error: #error "Missing OS support for explicit<br>
placement of executable memory"<br>
lj_mcode.c: In function 'mcode_protect':<br>
lj_mcode.c:187:5: warning: implicit declaration of function<br>
'mcode_setprot' [-Wimplicit-function-<u></u>declaration]<br>
lj_mcode.c: In function 'mcode_alloc':<br>
lj_mcode.c:224:7: warning: implicit declaration of function<br>
'mcode_alloc_at' [-Wimplicit-function-<u></u>declaration]<br>
lj_mcode.c:224:45: error: 'MCPROT_RW' undeclared (first use in this<br>
function)<br>
lj_mcode.c:224:45: note: each undeclared identifier is reported<br>
only once for each function it appears in<br>
lj_mcode.c:229:7: warning: implicit declaration of function<br>
'mcode_free' [-Wimplicit-function-<u></u>declaration]<br>
lj_mcode.c: In function 'mcode_allocarea':<br>
lj_mcode.c:264:15: error: 'MCPROT_RW' undeclared (first use in this<br>
function)<br>
lj_mcode.c: In function 'lj_mcode_reserve':<br>
lj_mcode.c:293:22: error: 'MCPROT_RW' undeclared (first use in this<br>
function)<br>
lj_mcode.c: In function 'lj_mcode_commit':<br>
lj_mcode.c:302:20: error: 'MCPROT_RX' undeclared (first use in this<br>
function)<br>
lj_mcode.c: In function 'lj_mcode_abort':<br>
lj_mcode.c:308:20: error: 'MCPROT_RX' undeclared (first use in this<br>
function)<br>
lj_mcode.c: In function 'lj_mcode_patch':<br>
lj_mcode.c:320:24: error: 'MCPROT_RX' undeclared (first use in this<br>
function)<br>
lj_mcode.c:328:24: error: 'MCPROT_RW' undeclared (first use in this<br>
function)<br>
<br>
My os:<br>
uname -a:<br>
DragonFly . 3.6-RELEASE DragonFly v3.6.0.24.gf2d5f-RELEASE #4: Tue<br>
Feb 11 14:22:27 UTC 2014 lhm@.:/usr/obj/usr/src/sys/<br>
<br>
lhmwzy x86_64<br>
<br>
Any suggestion?<br>
</blockquote></div></div></blockquote>
</blockquote></div><br></div>