immunio 1.2.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -5
- data/ext/immunio/Rakefile +14 -6
- data/lib/immunio/context.rb +2 -0
- data/lib/immunio/plugins/action_view.rb +7 -668
- data/lib/immunio/plugins/action_view/action_view.rb +22 -0
- data/lib/immunio/plugins/action_view/active_support_hash.rb +29 -0
- data/lib/immunio/plugins/action_view/cache_store.rb +24 -0
- data/lib/immunio/plugins/action_view/erubi.rb +38 -0
- data/lib/immunio/plugins/action_view/erubis.rb +39 -0
- data/lib/immunio/plugins/action_view/fragment_caching.rb +29 -0
- data/lib/immunio/plugins/action_view/haml.rb +46 -0
- data/lib/immunio/plugins/action_view/slim.rb +42 -0
- data/lib/immunio/plugins/action_view/template.rb +431 -0
- data/lib/immunio/plugins/action_view/template_rendering.rb +45 -0
- data/lib/immunio/plugins/http_tracker.rb +2 -0
- data/lib/immunio/plugins/io.rb +34 -0
- data/lib/immunio/version.rb +1 -1
- data/lua-hooks/Makefile +36 -9
- data/lua-hooks/ext/luajit/COPYRIGHT +1 -1
- data/lua-hooks/ext/luajit/Makefile +22 -15
- data/lua-hooks/ext/luajit/README +2 -2
- data/lua-hooks/ext/luajit/doc/bluequad-print.css +1 -1
- data/lua-hooks/ext/luajit/doc/bluequad.css +1 -1
- data/lua-hooks/ext/luajit/doc/changes.html +69 -3
- data/lua-hooks/ext/luajit/doc/contact.html +10 -3
- data/lua-hooks/ext/luajit/doc/ext_c_api.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +3 -4
- data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +2 -2
- data/lua-hooks/ext/luajit/doc/ext_jit.html +3 -3
- data/lua-hooks/ext/luajit/doc/ext_profiler.html +2 -2
- data/lua-hooks/ext/luajit/doc/extensions.html +47 -20
- data/lua-hooks/ext/luajit/doc/faq.html +2 -2
- data/lua-hooks/ext/luajit/doc/install.html +74 -45
- data/lua-hooks/ext/luajit/doc/luajit.html +5 -5
- data/lua-hooks/ext/luajit/doc/running.html +3 -3
- data/lua-hooks/ext/luajit/doc/status.html +13 -8
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +8 -5
- data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +66 -11
- data/lua-hooks/ext/luajit/dynasm/dasm_mips64.lua +12 -0
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +1 -1
- data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +5 -1
- data/lua-hooks/ext/luajit/dynasm/dynasm.lua +2 -2
- data/lua-hooks/ext/luajit/etc/luajit.1 +1 -1
- data/lua-hooks/ext/luajit/etc/luajit.pc +1 -1
- data/lua-hooks/ext/luajit/src/Makefile +15 -11
- data/lua-hooks/ext/luajit/src/Makefile.dep +16 -16
- data/lua-hooks/ext/luajit/src/host/buildvm.c +2 -2
- data/lua-hooks/ext/luajit/src/host/buildvm.h +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +9 -4
- data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +2 -2
- data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/host/buildvm_libbc.h +14 -3
- data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +27 -3
- data/lua-hooks/ext/luajit/src/host/genlibbc.lua +1 -1
- data/lua-hooks/ext/luajit/src/host/genminilua.lua +6 -5
- data/lua-hooks/ext/luajit/src/host/minilua.c +1 -1
- data/lua-hooks/ext/luajit/src/jit/bc.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/bcsave.lua +8 -8
- data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_arm64.lua +1216 -0
- data/lua-hooks/ext/luajit/src/jit/dis_arm64be.lua +12 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +35 -20
- data/lua-hooks/ext/luajit/src/jit/dis_mips64.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mips64el.lua +17 -0
- data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +1 -1
- data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +7 -4
- data/lua-hooks/ext/luajit/src/jit/dump.lua +17 -12
- data/lua-hooks/ext/luajit/src/jit/p.lua +3 -2
- data/lua-hooks/ext/luajit/src/jit/v.lua +2 -2
- data/lua-hooks/ext/luajit/src/jit/zone.lua +1 -1
- data/lua-hooks/ext/luajit/src/lauxlib.h +14 -20
- data/lua-hooks/ext/luajit/src/lib_aux.c +38 -27
- data/lua-hooks/ext/luajit/src/lib_base.c +12 -5
- data/lua-hooks/ext/luajit/src/lib_bit.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_debug.c +5 -5
- data/lua-hooks/ext/luajit/src/lib_ffi.c +2 -2
- data/lua-hooks/ext/luajit/src/lib_init.c +16 -16
- data/lua-hooks/ext/luajit/src/lib_io.c +6 -7
- data/lua-hooks/ext/luajit/src/lib_jit.c +14 -4
- data/lua-hooks/ext/luajit/src/lib_math.c +1 -5
- data/lua-hooks/ext/luajit/src/lib_os.c +1 -1
- data/lua-hooks/ext/luajit/src/lib_package.c +14 -23
- data/lua-hooks/ext/luajit/src/lib_string.c +1 -5
- data/lua-hooks/ext/luajit/src/lib_table.c +21 -1
- data/lua-hooks/ext/luajit/src/lj.supp +3 -3
- data/lua-hooks/ext/luajit/src/lj_alloc.c +174 -83
- data/lua-hooks/ext/luajit/src/lj_api.c +97 -18
- data/lua-hooks/ext/luajit/src/lj_arch.h +54 -22
- data/lua-hooks/ext/luajit/src/lj_asm.c +172 -53
- data/lua-hooks/ext/luajit/src/lj_asm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_asm_arm.h +19 -16
- data/lua-hooks/ext/luajit/src/lj_asm_arm64.h +2022 -0
- data/lua-hooks/ext/luajit/src/lj_asm_mips.h +564 -158
- data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +19 -18
- data/lua-hooks/ext/luajit/src/lj_asm_x86.h +578 -92
- data/lua-hooks/ext/luajit/src/lj_bc.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_bc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcdump.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcread.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_bcwrite.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_buf.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_buf.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_carith.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_carith.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ccall.c +172 -7
- data/lua-hooks/ext/luajit/src/lj_ccall.h +21 -5
- data/lua-hooks/ext/luajit/src/lj_ccallback.c +71 -17
- data/lua-hooks/ext/luajit/src/lj_ccallback.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cconv.c +4 -2
- data/lua-hooks/ext/luajit/src/lj_cconv.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cdata.c +7 -5
- data/lua-hooks/ext/luajit/src/lj_cdata.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_clib.c +5 -5
- data/lua-hooks/ext/luajit/src/lj_clib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_cparse.c +11 -6
- data/lua-hooks/ext/luajit/src/lj_cparse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_crecord.c +70 -14
- data/lua-hooks/ext/luajit/src/lj_crecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_ctype.h +8 -8
- data/lua-hooks/ext/luajit/src/lj_debug.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_debug.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_def.h +6 -9
- data/lua-hooks/ext/luajit/src/lj_dispatch.c +3 -3
- data/lua-hooks/ext/luajit/src/lj_dispatch.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_emit_arm.h +5 -4
- data/lua-hooks/ext/luajit/src/lj_emit_arm64.h +419 -0
- data/lua-hooks/ext/luajit/src/lj_emit_mips.h +100 -20
- data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +4 -4
- data/lua-hooks/ext/luajit/src/lj_emit_x86.h +116 -25
- data/lua-hooks/ext/luajit/src/lj_err.c +34 -13
- data/lua-hooks/ext/luajit/src/lj_err.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_errmsg.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ff.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ffrecord.c +58 -49
- data/lua-hooks/ext/luajit/src/lj_ffrecord.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_frame.h +33 -6
- data/lua-hooks/ext/luajit/src/lj_func.c +4 -2
- data/lua-hooks/ext/luajit/src/lj_func.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gc.c +16 -7
- data/lua-hooks/ext/luajit/src/lj_gc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.c +31 -1
- data/lua-hooks/ext/luajit/src/lj_gdbjit.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_ir.c +69 -96
- data/lua-hooks/ext/luajit/src/lj_ir.h +29 -18
- data/lua-hooks/ext/luajit/src/lj_ircall.h +24 -30
- data/lua-hooks/ext/luajit/src/lj_iropt.h +9 -9
- data/lua-hooks/ext/luajit/src/lj_jit.h +67 -9
- data/lua-hooks/ext/luajit/src/lj_lex.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_lex.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_lib.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_lib.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_load.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_mcode.c +11 -10
- data/lua-hooks/ext/luajit/src/lj_mcode.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_meta.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_obj.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_obj.h +7 -3
- data/lua-hooks/ext/luajit/src/lj_opt_dce.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_fold.c +84 -17
- data/lua-hooks/ext/luajit/src/lj_opt_loop.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_opt_mem.c +3 -3
- data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +24 -22
- data/lua-hooks/ext/luajit/src/lj_opt_sink.c +11 -6
- data/lua-hooks/ext/luajit/src/lj_opt_split.c +11 -2
- data/lua-hooks/ext/luajit/src/lj_parse.c +9 -7
- data/lua-hooks/ext/luajit/src/lj_parse.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_profile.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_profile.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_record.c +201 -117
- data/lua-hooks/ext/luajit/src/lj_record.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_snap.c +72 -26
- data/lua-hooks/ext/luajit/src/lj_snap.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_state.c +6 -6
- data/lua-hooks/ext/luajit/src/lj_state.h +2 -2
- data/lua-hooks/ext/luajit/src/lj_str.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_str.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_strfmt.c +7 -3
- data/lua-hooks/ext/luajit/src/lj_strfmt.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_strfmt_num.c +4 -3
- data/lua-hooks/ext/luajit/src/lj_strscan.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_strscan.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_tab.c +1 -2
- data/lua-hooks/ext/luajit/src/lj_tab.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target.h +3 -3
- data/lua-hooks/ext/luajit/src/lj_target_arm.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_arm64.h +239 -7
- data/lua-hooks/ext/luajit/src/lj_target_mips.h +111 -22
- data/lua-hooks/ext/luajit/src/lj_target_ppc.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_target_x86.h +21 -4
- data/lua-hooks/ext/luajit/src/lj_trace.c +63 -18
- data/lua-hooks/ext/luajit/src/lj_trace.h +2 -1
- data/lua-hooks/ext/luajit/src/lj_traceerr.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_udata.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_udata.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_vm.h +5 -1
- data/lua-hooks/ext/luajit/src/lj_vmevent.c +1 -1
- data/lua-hooks/ext/luajit/src/lj_vmevent.h +1 -1
- data/lua-hooks/ext/luajit/src/lj_vmmath.c +1 -1
- data/lua-hooks/ext/luajit/src/ljamalg.c +1 -1
- data/lua-hooks/ext/luajit/src/lua.h +9 -1
- data/lua-hooks/ext/luajit/src/luaconf.h +3 -7
- data/lua-hooks/ext/luajit/src/luajit.c +69 -54
- data/lua-hooks/ext/luajit/src/luajit.h +4 -4
- data/lua-hooks/ext/luajit/src/lualib.h +1 -1
- data/lua-hooks/ext/luajit/src/msvcbuild.bat +12 -4
- data/lua-hooks/ext/luajit/src/vm_arm.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_arm64.dasc +255 -32
- data/lua-hooks/ext/luajit/src/vm_mips.dasc +26 -23
- data/lua-hooks/ext/luajit/src/vm_mips64.dasc +5062 -0
- data/lua-hooks/ext/luajit/src/vm_ppc.dasc +1 -1
- data/lua-hooks/ext/luajit/src/vm_x64.dasc +24 -25
- data/lua-hooks/ext/luajit/src/vm_x86.dasc +77 -4
- data/lua-hooks/libluahooks.darwin.a +0 -0
- data/lua-hooks/libluahooks.linux.a +0 -0
- data/lua-hooks/options.mk +1 -1
- metadata +37 -77
- data/lua-hooks/ext/all.c +0 -69
- data/lua-hooks/ext/libinjection/COPYING +0 -37
- data/lua-hooks/ext/libinjection/libinjection.h +0 -65
- data/lua-hooks/ext/libinjection/libinjection_html5.c +0 -847
- data/lua-hooks/ext/libinjection/libinjection_html5.h +0 -54
- data/lua-hooks/ext/libinjection/libinjection_sqli.c +0 -2301
- data/lua-hooks/ext/libinjection/libinjection_sqli.h +0 -295
- data/lua-hooks/ext/libinjection/libinjection_sqli_data.h +0 -9349
- data/lua-hooks/ext/libinjection/libinjection_xss.c +0 -531
- data/lua-hooks/ext/libinjection/libinjection_xss.h +0 -21
- data/lua-hooks/ext/libinjection/lualib.c +0 -145
- data/lua-hooks/ext/libinjection/module.mk +0 -5
- data/lua-hooks/ext/lpeg/HISTORY +0 -96
- data/lua-hooks/ext/lpeg/lpcap.c +0 -537
- data/lua-hooks/ext/lpeg/lpcap.h +0 -56
- data/lua-hooks/ext/lpeg/lpcode.c +0 -1014
- data/lua-hooks/ext/lpeg/lpcode.h +0 -40
- data/lua-hooks/ext/lpeg/lpeg-128.gif +0 -0
- data/lua-hooks/ext/lpeg/lpeg.html +0 -1445
- data/lua-hooks/ext/lpeg/lpprint.c +0 -244
- data/lua-hooks/ext/lpeg/lpprint.h +0 -36
- data/lua-hooks/ext/lpeg/lptree.c +0 -1303
- data/lua-hooks/ext/lpeg/lptree.h +0 -82
- data/lua-hooks/ext/lpeg/lptypes.h +0 -149
- data/lua-hooks/ext/lpeg/lpvm.c +0 -364
- data/lua-hooks/ext/lpeg/lpvm.h +0 -58
- data/lua-hooks/ext/lpeg/makefile +0 -55
- data/lua-hooks/ext/lpeg/module.mk +0 -6
- data/lua-hooks/ext/lpeg/re.html +0 -498
- data/lua-hooks/ext/lua-cmsgpack/.gitignore +0 -13
- data/lua-hooks/ext/lua-cmsgpack/CMakeLists.txt +0 -45
- data/lua-hooks/ext/lua-cmsgpack/README.md +0 -115
- data/lua-hooks/ext/lua-cmsgpack/lua_cmsgpack.c +0 -970
- data/lua-hooks/ext/lua-cmsgpack/module.mk +0 -2
- data/lua-hooks/ext/lua-cmsgpack/test.lua +0 -570
- data/lua-hooks/ext/lua-snapshot/LICENSE +0 -7
- data/lua-hooks/ext/lua-snapshot/Makefile +0 -12
- data/lua-hooks/ext/lua-snapshot/README.md +0 -18
- data/lua-hooks/ext/lua-snapshot/dump.lua +0 -15
- data/lua-hooks/ext/lua-snapshot/module.mk +0 -2
- data/lua-hooks/ext/lua-snapshot/snapshot.c +0 -462
- data/lua-hooks/ext/luautf8/README.md +0 -152
- data/lua-hooks/ext/luautf8/lutf8lib.c +0 -1274
- data/lua-hooks/ext/luautf8/module.mk +0 -2
- data/lua-hooks/ext/luautf8/unidata.h +0 -3064
- data/lua-hooks/ext/module.mk +0 -15
- data/lua-hooks/ext/modules.h +0 -17
- data/lua-hooks/ext/perf/luacpu.c +0 -114
- data/lua-hooks/ext/perf/lualoadavg.c +0 -40
- data/lua-hooks/ext/perf/luameminfo.c +0 -38
- data/lua-hooks/ext/perf/luaoslib.c +0 -203
- data/lua-hooks/ext/perf/module.mk +0 -5
- data/lua-hooks/ext/sha1/luasha1.c +0 -74
- data/lua-hooks/ext/sha1/module.mk +0 -5
- data/lua-hooks/ext/sha1/sha1.c +0 -145
- data/lua-hooks/ext/sha2/luasha256.c +0 -77
- data/lua-hooks/ext/sha2/module.mk +0 -5
- data/lua-hooks/ext/sha2/sha256.c +0 -196
- data/lua-hooks/ext/sysutils/lua_utils.c +0 -56
- data/lua-hooks/ext/sysutils/module.mk +0 -2
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>Lua/C API Extensions</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -179,7 +179,7 @@ Also note that this mechanism is not without overhead.
|
|
179
179
|
</div>
|
180
180
|
<div id="foot">
|
181
181
|
<hr class="hide">
|
182
|
-
Copyright © 2005-
|
182
|
+
Copyright © 2005-2017 Mike Pall
|
183
183
|
<span class="noprint">
|
184
184
|
·
|
185
185
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>FFI Library</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -322,7 +322,7 @@ without undue conversion penalties.
|
|
322
322
|
</div>
|
323
323
|
<div id="foot">
|
324
324
|
<hr class="hide">
|
325
|
-
Copyright © 2005-
|
325
|
+
Copyright © 2005-2017 Mike Pall
|
326
326
|
<span class="noprint">
|
327
327
|
·
|
328
328
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>ffi.* API Functions</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -560,7 +560,7 @@ named <tt>i</tt>.
|
|
560
560
|
</div>
|
561
561
|
<div id="foot">
|
562
562
|
<hr class="hide">
|
563
|
-
Copyright © 2005-
|
563
|
+
Copyright © 2005-2017 Mike Pall
|
564
564
|
<span class="noprint">
|
565
565
|
·
|
566
566
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>FFI Semantics</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -1221,13 +1221,12 @@ The following operations are currently not compiled and may exhibit
|
|
1221
1221
|
suboptimal performance, especially when used in inner loops:
|
1222
1222
|
</p>
|
1223
1223
|
<ul>
|
1224
|
-
<li>Bitfield accesses and initializations.</li>
|
1225
1224
|
<li>Vector operations.</li>
|
1226
1225
|
<li>Table initializers.</li>
|
1227
1226
|
<li>Initialization of nested <tt>struct</tt>/<tt>union</tt> types.</li>
|
1228
1227
|
<li>Non-default initialization of VLA/VLS or large C types
|
1229
1228
|
(> 128 bytes or > 16 array elements.</li>
|
1230
|
-
<li>
|
1229
|
+
<li>Bitfield initializations.</li>
|
1231
1230
|
<li>Pointer differences for element sizes that are not a power of
|
1232
1231
|
two.</li>
|
1233
1232
|
<li>Calls to C functions with aggregates passed or returned by
|
@@ -1253,7 +1252,7 @@ compiled.</li>
|
|
1253
1252
|
</div>
|
1254
1253
|
<div id="foot">
|
1255
1254
|
<hr class="hide">
|
1256
|
-
Copyright © 2005-
|
1255
|
+
Copyright © 2005-2017 Mike Pall
|
1257
1256
|
<span class="noprint">
|
1258
1257
|
·
|
1259
1258
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>FFI Tutorial</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -593,7 +593,7 @@ it to a local variable in the function scope is unnecessary.
|
|
593
593
|
</div>
|
594
594
|
<div id="foot">
|
595
595
|
<hr class="hide">
|
596
|
-
Copyright © 2005-
|
596
|
+
Copyright © 2005-2017 Mike Pall
|
597
597
|
<span class="noprint">
|
598
598
|
·
|
599
599
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>jit.* Library</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -153,7 +153,7 @@ Contains the target OS name:
|
|
153
153
|
<h3 id="jit_arch"><tt>jit.arch</tt></h3>
|
154
154
|
<p>
|
155
155
|
Contains the target architecture name:
|
156
|
-
"x86", "x64", "arm", "ppc", or "
|
156
|
+
"x86", "x64", "arm", "arm64", "ppc", "mips" or "mips64".
|
157
157
|
</p>
|
158
158
|
|
159
159
|
<h2 id="jit_opt"><tt>jit.opt.*</tt> — JIT compiler optimization control</h2>
|
@@ -191,7 +191,7 @@ if you want to know more.
|
|
191
191
|
</div>
|
192
192
|
<div id="foot">
|
193
193
|
<hr class="hide">
|
194
|
-
Copyright © 2005-
|
194
|
+
Copyright © 2005-2017 Mike Pall
|
195
195
|
<span class="noprint">
|
196
196
|
·
|
197
197
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>Profiler</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -355,7 +355,7 @@ use.
|
|
355
355
|
</div>
|
356
356
|
<div id="foot">
|
357
357
|
<hr class="hide">
|
358
|
-
Copyright © 2005-
|
358
|
+
Copyright © 2005-2017 Mike Pall
|
359
359
|
<span class="noprint">
|
360
360
|
·
|
361
361
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>Extensions</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -210,7 +210,8 @@ bytecode (e.g. from Lua 5.1) is incompatible and cannot be loaded.
|
|
210
210
|
<p>
|
211
211
|
Note: <tt>LJ_GC64</tt> mode requires a different frame layout, which implies
|
212
212
|
a different, incompatible bytecode format for ports that use this mode (e.g.
|
213
|
-
ARM64). This may be rectified
|
213
|
+
ARM64 or MIPS64) or when explicitly enabled for x64. This may be rectified
|
214
|
+
in the future.
|
214
215
|
</p>
|
215
216
|
|
216
217
|
<h3 id="table_new"><tt>table.new(narray, nhash)</tt> allocates a pre-sized table</h3>
|
@@ -291,8 +292,8 @@ enabled:
|
|
291
292
|
<li><tt>load(string|reader [, chunkname [,mode [,env]]])</tt>.</li>
|
292
293
|
<li><tt>loadstring()</tt> is an alias for <tt>load()</tt>.</li>
|
293
294
|
<li><tt>loadfile(filename [,mode [,env]])</tt>.</li>
|
294
|
-
<li><tt>math.log(x [,base])</tt
|
295
|
-
<li><tt>string.rep(s, n [,sep])</tt
|
295
|
+
<li><tt>math.log(x [,base])</tt>.</li>
|
296
|
+
<li><tt>string.rep(s, n [,sep])</tt>.</li>
|
296
297
|
<li><tt>string.format()</tt>: <tt>%q</tt> reversible.
|
297
298
|
<tt>%s</tt> checks <tt>__tostring</tt>.
|
298
299
|
<tt>%a</tt> and <tt>"%A</tt> added.</li>
|
@@ -311,6 +312,26 @@ indexes for varargs.</li>
|
|
311
312
|
<li><tt>debug.getupvalue()</tt> and <tt>debug.setupvalue()</tt> handle
|
312
313
|
C functions.</li>
|
313
314
|
<li><tt>debug.upvalueid()</tt> and <tt>debug.upvaluejoin()</tt>.</li>
|
315
|
+
<li>Lua/C API extensions:
|
316
|
+
<tt>lua_version()</tt>
|
317
|
+
<tt>lua_upvalueid()</tt>
|
318
|
+
<tt>lua_upvaluejoin()</tt>
|
319
|
+
<tt>lua_loadx()</tt>
|
320
|
+
<tt>lua_copy()</tt>
|
321
|
+
<tt>lua_tonumberx()</tt>
|
322
|
+
<tt>lua_tointegerx()</tt>
|
323
|
+
<tt>luaL_fileresult()</tt>
|
324
|
+
<tt>luaL_execresult()</tt>
|
325
|
+
<tt>luaL_loadfilex()</tt>
|
326
|
+
<tt>luaL_loadbufferx()</tt>
|
327
|
+
<tt>luaL_traceback()</tt>
|
328
|
+
<tt>luaL_setfuncs()</tt>
|
329
|
+
<tt>luaL_pushmodule()</tt>
|
330
|
+
<tt>luaL_newlibtable()</tt>
|
331
|
+
<tt>luaL_newlib()</tt>
|
332
|
+
<tt>luaL_testudata()</tt>
|
333
|
+
<tt>luaL_setmetatable()</tt>
|
334
|
+
</li>
|
314
335
|
<li>Command line option <tt>-E</tt>.</li>
|
315
336
|
<li>Command line checks <tt>__tostring</tt> for errors.</li>
|
316
337
|
</ul>
|
@@ -335,7 +356,9 @@ instead of <tt>true</tt>.</li>
|
|
335
356
|
exit status.</li>
|
336
357
|
<li><tt>debug.setmetatable()</tt> returns object.</li>
|
337
358
|
<li><tt>debug.getuservalue()</tt> and <tt>debug.setuservalue()</tt>.</li>
|
338
|
-
<li>Remove <tt>math.mod()</tt>, <tt>string.gfind()</tt
|
359
|
+
<li>Remove <tt>math.mod()</tt>, <tt>string.gfind()</tt>.</li>
|
360
|
+
<li><tt>package.searchers</tt>.</li>
|
361
|
+
<li><tt>module()</tt> returns the module table.</li>
|
339
362
|
</ul>
|
340
363
|
<p>
|
341
364
|
Note: this provides only partial compatibility with Lua 5.2 at the
|
@@ -349,6 +372,13 @@ break the Lua/C API and ABI (e.g. <tt>_ENV</tt>).
|
|
349
372
|
LuaJIT supports some extensions from Lua 5.3:
|
350
373
|
<ul>
|
351
374
|
<li>Unicode escape <tt>'\u{XX...}'</tt> embeds the UTF-8 encoding in string literals.</li>
|
375
|
+
<li>The argument table <tt>arg</tt> can be read (and modified) by <tt>LUA_INIT</tt> and <tt>-e</tt> chunks.</li>
|
376
|
+
<li><tt>io.read()</tt> and <tt>file:read()</tt> accept formats with or without a leading <tt>*</tt>.</li>
|
377
|
+
<li><tt>table.move(a1, f, e, t [,a2])</tt>.</li>
|
378
|
+
<li><tt>coroutine.isyieldable()</tt>.</li>
|
379
|
+
<li>Lua/C API extensions:
|
380
|
+
<tt>lua_isyieldable()</tt>
|
381
|
+
</li>
|
352
382
|
</ul>
|
353
383
|
|
354
384
|
<h2 id="exceptions">C++ Exception Interoperability</h2>
|
@@ -365,25 +395,30 @@ the toolchain used to compile LuaJIT:
|
|
365
395
|
</tr>
|
366
396
|
<tr class="odd separate">
|
367
397
|
<td class="excplatform">POSIX/x64, DWARF2 unwinding</td>
|
368
|
-
<td class="exccompiler">GCC 4.3
|
398
|
+
<td class="exccompiler">GCC 4.3+, Clang</td>
|
369
399
|
<td class="excinterop"><b style="color: #00a000;">Full</b></td>
|
370
400
|
</tr>
|
371
401
|
<tr class="even">
|
402
|
+
<td class="excplatform">ARM <tt>-DLUAJIT_UNWIND_EXTERNAL</tt></td>
|
403
|
+
<td class="exccompiler">GCC, Clang</td>
|
404
|
+
<td class="excinterop"><b style="color: #00a000;">Full</b></td>
|
405
|
+
</tr>
|
406
|
+
<tr class="odd">
|
372
407
|
<td class="excplatform">Other platforms, DWARF2 unwinding</td>
|
373
|
-
<td class="exccompiler">GCC</td>
|
408
|
+
<td class="exccompiler">GCC, Clang</td>
|
374
409
|
<td class="excinterop"><b style="color: #c06000;">Limited</b></td>
|
375
410
|
</tr>
|
376
|
-
<tr class="
|
411
|
+
<tr class="even">
|
377
412
|
<td class="excplatform">Windows/x64</td>
|
378
413
|
<td class="exccompiler">MSVC or WinSDK</td>
|
379
414
|
<td class="excinterop"><b style="color: #00a000;">Full</b></td>
|
380
415
|
</tr>
|
381
|
-
<tr class="
|
416
|
+
<tr class="odd">
|
382
417
|
<td class="excplatform">Windows/x86</td>
|
383
418
|
<td class="exccompiler">Any</td>
|
384
|
-
<td class="excinterop"><b style="color: #
|
419
|
+
<td class="excinterop"><b style="color: #00a000;">Full</b></td>
|
385
420
|
</tr>
|
386
|
-
<tr class="
|
421
|
+
<tr class="even">
|
387
422
|
<td class="excplatform">Other platforms</td>
|
388
423
|
<td class="exccompiler">Other compilers</td>
|
389
424
|
<td class="excinterop"><b style="color: #a00000;">No</b></td>
|
@@ -432,20 +467,12 @@ C++ destructors.</li>
|
|
432
467
|
<li>Lua errors <b>cannot</b> be caught on the C++ side.</li>
|
433
468
|
<li>Throwing Lua errors across C++ frames will <b>not</b> call
|
434
469
|
C++ destructors.</li>
|
435
|
-
<li>Additionally, on Windows/x86 with SEH-based C++ exceptions:
|
436
|
-
it's <b>not</b> safe to throw a Lua error across any frames containing
|
437
|
-
a C++ function with any try/catch construct or using variables with
|
438
|
-
(implicit) destructors. This also applies to any functions which may be
|
439
|
-
inlined in such a function. It doesn't matter whether <tt>lua_error()</tt>
|
440
|
-
is called inside or outside of a try/catch or whether any object actually
|
441
|
-
needs to be destroyed: the SEH chain is corrupted and this will eventually
|
442
|
-
lead to the termination of the process.</li>
|
443
470
|
</ul>
|
444
471
|
<br class="flush">
|
445
472
|
</div>
|
446
473
|
<div id="foot">
|
447
474
|
<hr class="hide">
|
448
|
-
Copyright © 2005-
|
475
|
+
Copyright © 2005-2017 Mike Pall
|
449
476
|
<span class="noprint">
|
450
477
|
·
|
451
478
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>Frequently Asked Questions (FAQ)</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -176,7 +176,7 @@ the development of certain features, if they are important to you.
|
|
176
176
|
</div>
|
177
177
|
<div id="foot">
|
178
178
|
<hr class="hide">
|
179
|
-
Copyright © 2005-
|
179
|
+
Copyright © 2005-2017 Mike Pall
|
180
180
|
<span class="noprint">
|
181
181
|
·
|
182
182
|
<a href="contact.html">Contact</a>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<title>Installation</title>
|
5
5
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
6
6
|
<meta name="Author" content="Mike Pall">
|
7
|
-
<meta name="Copyright" content="Copyright (C) 2005-
|
7
|
+
<meta name="Copyright" content="Copyright (C) 2005-2017, Mike Pall">
|
8
8
|
<meta name="Language" content="en">
|
9
9
|
<link rel="stylesheet" type="text/css" href="bluequad.css" media="screen">
|
10
10
|
<link rel="stylesheet" type="text/css" href="bluequad-print.css" media="print">
|
@@ -122,7 +122,7 @@ operating systems, CPUs and compilers:
|
|
122
122
|
<tr class="even">
|
123
123
|
<td class="compatcpu">x64 (64 bit)</td>
|
124
124
|
<td class="compatos">GCC 4.2+</td>
|
125
|
-
<td class="compatos">ORBIS (<a href="#ps4">PS4</a>)</td>
|
125
|
+
<td class="compatos">GCC 4.2+<br>ORBIS (<a href="#ps4">PS4</a>)</td>
|
126
126
|
<td class="compatos">XCode 5.0+<br>Clang</td>
|
127
127
|
<td class="compatos">MSVC + SDK v7.0<br>WinSDK v7.0<br>Durango (<a href="#xboxone">Xbox One</a>)</td>
|
128
128
|
</tr>
|
@@ -148,7 +148,7 @@ operating systems, CPUs and compilers:
|
|
148
148
|
<td class="compatos">XEDK (<a href="#xbox360">Xbox 360</a>)</td>
|
149
149
|
</tr>
|
150
150
|
<tr class="even">
|
151
|
-
<td class="compatcpu"><a href="#cross2">
|
151
|
+
<td class="compatcpu"><a href="#cross2">MIPS32<br>MIPS64</a></td>
|
152
152
|
<td class="compatos">GCC 4.3+</td>
|
153
153
|
<td class="compatos">GCC 4.3+</td>
|
154
154
|
<td class="compatos compatno"> </td>
|
@@ -175,6 +175,14 @@ MSVC or WinSDK.</li>
|
|
175
175
|
Please read the instructions given in these files, before changing
|
176
176
|
any settings.
|
177
177
|
</p>
|
178
|
+
<p>
|
179
|
+
LuaJIT on x64 currently uses 32 bit GC objects by default.
|
180
|
+
<tt>LJ_GC64</tt> mode may be explicitly enabled:
|
181
|
+
add <tt>XCFLAGS=-DLUAJIT_ENABLE_GC64</tt> to the make command or run
|
182
|
+
<tt>msvcbuild gc64</tt> for MSVC/WinSDK. Please check the note
|
183
|
+
about the <a href="extensions.html#string_dump">bytecode format</a>
|
184
|
+
differences, too.
|
185
|
+
</p>
|
178
186
|
|
179
187
|
<h2 id="posix">POSIX Systems (Linux, OSX, *BSD etc.)</h2>
|
180
188
|
<h3>Prerequisites</h3>
|
@@ -190,8 +198,8 @@ open a terminal window and change to this directory. Now unpack the archive
|
|
190
198
|
and change to the newly created directory:
|
191
199
|
</p>
|
192
200
|
<pre class="code">
|
193
|
-
tar zxf LuaJIT-2.0.
|
194
|
-
cd LuaJIT-2.0.
|
201
|
+
tar zxf LuaJIT-2.0.5.tar.gz
|
202
|
+
cd LuaJIT-2.0.5</pre>
|
195
203
|
<h3>Building LuaJIT</h3>
|
196
204
|
<p>
|
197
205
|
The supplied Makefiles try to auto-detect the settings needed for your
|
@@ -202,7 +210,7 @@ which is probably the default on your system, anyway. Simply run:
|
|
202
210
|
make
|
203
211
|
</pre>
|
204
212
|
<p>
|
205
|
-
This always builds a native
|
213
|
+
This always builds a native binary, depending on the host OS
|
206
214
|
you're running this command on. Check the section on
|
207
215
|
<a href="#cross">cross-compilation</a> for more options.
|
208
216
|
</p>
|
@@ -333,22 +341,36 @@ directory where <tt>luajit.exe</tt> is installed
|
|
333
341
|
|
334
342
|
<h2 id="cross">Cross-compiling LuaJIT</h2>
|
335
343
|
<p>
|
344
|
+
First, let's clear up some terminology:
|
345
|
+
</p>
|
346
|
+
<ul>
|
347
|
+
<li>Host: This is your development system, usually based on a x64 or x86 CPU.</li>
|
348
|
+
<li>Target: This is the target system you want LuaJIT to run on, e.g. Android/ARM.</li>
|
349
|
+
<li>Toolchain: This comprises a C compiler, linker, assembler and a matching C library.</li>
|
350
|
+
<li>Host (or system) toolchain: This is the toolchain used to build native binaries for your host system.</li>
|
351
|
+
<li>Cross-compile toolchain: This is the toolchain used to build binaries for the target system. They can only be run on the target system.</li>
|
352
|
+
</ul>
|
353
|
+
<p>
|
336
354
|
The GNU Makefile-based build system allows cross-compiling on any host
|
337
|
-
for any supported target
|
338
|
-
pointer size. If you want to cross-compile to any 32 bit target on an
|
339
|
-
x64 OS, you need to install the multilib development package (e.g.
|
340
|
-
<tt>libc6-dev-i386</tt> on Debian/Ubuntu) and build a 32 bit host part
|
341
|
-
(<tt>HOST_CC="gcc -m32"</tt>).
|
355
|
+
for any supported target:
|
342
356
|
</p>
|
357
|
+
<ul>
|
358
|
+
<li>Yes, you need a toolchain for both your host <em>and</em> your target!</li>
|
359
|
+
<li>Both host and target architectures must have the same pointer size.</li>
|
360
|
+
<li>E.g. if you want to cross-compile to a 32 bit target on a 64 bit host, you need to install the multilib development package (e.g. <tt>libc6-dev-i386</tt> on Debian/Ubuntu) and build a 32 bit host part (<tt>HOST_CC="gcc -m32"</tt>).</li>
|
361
|
+
<li>64 bit targets always require compilation on a 64 bit host.</li>
|
362
|
+
</ul>
|
343
363
|
<p>
|
344
364
|
You need to specify <tt>TARGET_SYS</tt> whenever the host OS and the
|
345
|
-
target OS differ, or you'll get assembler or linker errors
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
<tt>src/Makefile</tt> and use <tt>TARGET_SYS=Other</tt
|
350
|
-
|
351
|
-
|
365
|
+
target OS differ, or you'll get assembler or linker errors:
|
366
|
+
</p>
|
367
|
+
<ul>
|
368
|
+
<li>E.g. if you're compiling on a Windows or OSX host for embedded Linux or Android, you need to add <tt>TARGET_SYS=Linux</tt> to the examples below.</li>
|
369
|
+
<li>For a minimal target OS, you may need to disable the built-in allocator in <tt>src/Makefile</tt> and use <tt>TARGET_SYS=Other</tt>.</li>
|
370
|
+
<li>Don't forget to specify the same <tt>TARGET_SYS</tt> for the install step, too.</li>
|
371
|
+
</ul>
|
372
|
+
<p>
|
373
|
+
Here are some examples where host and target have the same CPU:
|
352
374
|
</p>
|
353
375
|
<pre class="code">
|
354
376
|
# Cross-compile to a 32 bit binary on a multilib x64 OS
|
@@ -366,38 +388,47 @@ use the canonical toolchain triplets for Linux.
|
|
366
388
|
</p>
|
367
389
|
<p>
|
368
390
|
Since there's often no easy way to detect CPU features at runtime, it's
|
369
|
-
important to compile with the proper CPU or architecture settings
|
370
|
-
|
371
|
-
<
|
372
|
-
|
373
|
-
|
374
|
-
CPU
|
391
|
+
important to compile with the proper CPU or architecture settings:
|
392
|
+
</o>
|
393
|
+
<ul>
|
394
|
+
<li>The best way to get consistent results is to specify the correct settings when building the toolchain yourself.</li>
|
395
|
+
<li>For a pre-built, generic toolchain add <tt>-mcpu=...</tt> or <tt>-march=...</tt> and other necessary flags to <tt>TARGET_CFLAGS</tt>.</li>
|
396
|
+
<li>For ARM it's important to have the correct <tt>-mfloat-abi=...</tt> setting, too. Otherwise LuaJIT may not run at the full performance of your target CPU.</li>
|
397
|
+
<li>For MIPS it's important to select a supported ABI (o32 on MIPS32, n64 on MIPS64) and consistently compile your project either with hard-float or soft-float compiler settings.</li>
|
398
|
+
</ul>
|
399
|
+
<p>
|
400
|
+
Here are some examples for targets with a different CPU than the host:
|
375
401
|
</p>
|
376
402
|
<pre class="code">
|
377
403
|
# ARM soft-float
|
378
404
|
make HOST_CC="gcc -m32" CROSS=arm-linux-gnueabi- \
|
379
405
|
TARGET_CFLAGS="-mfloat-abi=soft"
|
380
406
|
|
381
|
-
# ARM soft-float ABI with VFP (example for Cortex-
|
407
|
+
# ARM soft-float ABI with VFP (example for Cortex-A9)
|
382
408
|
make HOST_CC="gcc -m32" CROSS=arm-linux-gnueabi- \
|
383
|
-
TARGET_CFLAGS="-mcpu=cortex-
|
409
|
+
TARGET_CFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp"
|
384
410
|
|
385
|
-
# ARM hard-float ABI with VFP (armhf,
|
411
|
+
# ARM hard-float ABI with VFP (armhf, most modern toolchains)
|
386
412
|
make HOST_CC="gcc -m32" CROSS=arm-linux-gnueabihf-
|
387
413
|
|
388
|
-
# ARM64
|
414
|
+
# ARM64
|
389
415
|
make CROSS=aarch64-linux-
|
390
416
|
|
391
417
|
# PPC
|
392
418
|
make HOST_CC="gcc -m32" CROSS=powerpc-linux-gnu-
|
393
419
|
|
394
|
-
#
|
420
|
+
# MIPS32 big-endian
|
395
421
|
make HOST_CC="gcc -m32" CROSS=mips-linux-
|
396
|
-
#
|
422
|
+
# MIPS32 little-endian
|
397
423
|
make HOST_CC="gcc -m32" CROSS=mipsel-linux-
|
424
|
+
|
425
|
+
# MIPS64 big-endian
|
426
|
+
make CROSS=mips-linux- TARGET_CFLAGS="-mips64r2 -mabi=64"
|
427
|
+
# MIPS64 little-endian
|
428
|
+
make CROSS=mipsel-linux- TARGET_CFLAGS="-mips64r2 -mabi=64"
|
398
429
|
</pre>
|
399
430
|
<p>
|
400
|
-
You can cross-compile for <b id="android">Android</b> using the <a href="
|
431
|
+
You can cross-compile for <b id="android">Android</b> using the <a href="https://developer.android.com/ndk/index.html">Android NDK</a>.
|
401
432
|
The environment variables need to match the install locations and the
|
402
433
|
desired target platform. E.g. Android 4.0 corresponds to ABI level 14.
|
403
434
|
For details check the folder <tt>docs</tt> in the NDK directory.
|
@@ -411,7 +442,7 @@ to build/deploy or which lowest common denominator you want to pick:
|
|
411
442
|
# Android/ARM, armeabi (ARMv5TE soft-float), Android 2.2+ (Froyo)
|
412
443
|
NDK=/opt/android/ndk
|
413
444
|
NDKABI=8
|
414
|
-
NDKVER=$NDK/toolchains/arm-linux-androideabi-4.
|
445
|
+
NDKVER=$NDK/toolchains/arm-linux-androideabi-4.9
|
415
446
|
NDKP=$NDKVER/prebuilt/linux-x86/bin/arm-linux-androideabi-
|
416
447
|
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"
|
417
448
|
make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF"
|
@@ -419,16 +450,16 @@ make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF"
|
|
419
450
|
# Android/ARM, armeabi-v7a (ARMv7 VFP), Android 4.0+ (ICS)
|
420
451
|
NDK=/opt/android/ndk
|
421
452
|
NDKABI=14
|
422
|
-
NDKVER=$NDK/toolchains/arm-linux-androideabi-4.
|
453
|
+
NDKVER=$NDK/toolchains/arm-linux-androideabi-4.9
|
423
454
|
NDKP=$NDKVER/prebuilt/linux-x86/bin/arm-linux-androideabi-
|
424
455
|
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"
|
425
456
|
NDKARCH="-march=armv7-a -mfloat-abi=softfp -Wl,--fix-cortex-a8"
|
426
457
|
make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF $NDKARCH"
|
427
458
|
|
428
|
-
# Android/MIPS,
|
459
|
+
# Android/MIPS, mipsel (MIPS32R1 hard-float), Android 4.0+ (ICS)
|
429
460
|
NDK=/opt/android/ndk
|
430
461
|
NDKABI=14
|
431
|
-
NDKVER=$NDK/toolchains/mipsel-linux-android-4.
|
462
|
+
NDKVER=$NDK/toolchains/mipsel-linux-android-4.9
|
432
463
|
NDKP=$NDKVER/prebuilt/linux-x86/bin/mipsel-linux-android-
|
433
464
|
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-mips"
|
434
465
|
make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF"
|
@@ -436,7 +467,7 @@ make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF"
|
|
436
467
|
# Android/x86, x86 (i686 SSE3), Android 4.0+ (ICS)
|
437
468
|
NDK=/opt/android/ndk
|
438
469
|
NDKABI=14
|
439
|
-
NDKVER=$NDK/toolchains/x86-4.
|
470
|
+
NDKVER=$NDK/toolchains/x86-4.9
|
440
471
|
NDKP=$NDKVER/prebuilt/linux-x86/bin/i686-linux-android-
|
441
472
|
NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-x86"
|
442
473
|
make HOST_CC="gcc -m32" CROSS=$NDKP TARGET_FLAGS="$NDKF"
|
@@ -456,14 +487,15 @@ Or use Android. :-p
|
|
456
487
|
ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
|
457
488
|
ICC=$(xcrun --sdk iphoneos --find clang)
|
458
489
|
ISDKF="-arch armv7 -isysroot $ISDKP"
|
459
|
-
make HOST_CC="clang -m32 -arch i386"
|
460
|
-
TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
|
490
|
+
make DEFAULT_CC=clang HOST_CC="clang -m32 -arch i386" \
|
491
|
+
CROSS="$(dirname $ICC)/" TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
|
461
492
|
|
462
493
|
# iOS/ARM64
|
463
494
|
ISDKP=$(xcrun --sdk iphoneos --show-sdk-path)
|
464
495
|
ICC=$(xcrun --sdk iphoneos --find clang)
|
465
496
|
ISDKF="-arch arm64 -isysroot $ISDKP"
|
466
|
-
make CROSS="$(dirname $ICC)/"
|
497
|
+
make DEFAULT_CC=clang CROSS="$(dirname $ICC)/" \
|
498
|
+
TARGET_FLAGS="$ISDKF" TARGET_SYS=iOS
|
467
499
|
</pre>
|
468
500
|
|
469
501
|
<h3 id="consoles">Cross-compiling for consoles</h3>
|
@@ -560,14 +592,11 @@ intend to load Lua/C modules at runtime.
|
|
560
592
|
</li>
|
561
593
|
<li>
|
562
594
|
If you're building a 64 bit application on OSX which links directly or
|
563
|
-
indirectly against LuaJIT
|
564
|
-
with these flags:
|
595
|
+
indirectly against LuaJIT which is not built for <tt>LJ_GC64</tt> mode,
|
596
|
+
you need to link your main executable with these flags:
|
565
597
|
<pre class="code">
|
566
598
|
-pagezero_size 10000 -image_base 100000000
|
567
599
|
</pre>
|
568
|
-
Also, it's recommended to <tt>rebase</tt> all (self-compiled) shared libraries
|
569
|
-
which are loaded at runtime on OSX/x64 (e.g. C extension modules for Lua).
|
570
|
-
See: <tt>man rebase</tt>
|
571
600
|
</li>
|
572
601
|
</ul>
|
573
602
|
<p>Additional hints for initializing LuaJIT using the C API functions:</p>
|
@@ -653,7 +682,7 @@ to me (the upstream) and not you (the package maintainer), anyway.
|
|
653
682
|
</div>
|
654
683
|
<div id="foot">
|
655
684
|
<hr class="hide">
|
656
|
-
Copyright © 2005-
|
685
|
+
Copyright © 2005-2017 Mike Pall
|
657
686
|
<span class="noprint">
|
658
687
|
·
|
659
688
|
<a href="contact.html">Contact</a>
|