immunio 1.1.2 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (228) hide show
  1. checksums.yaml +4 -4
  2. data/lib/immunio/version.rb +1 -1
  3. data/lua-hooks/Makefile +56 -109
  4. data/lua-hooks/ext/all.c +3 -14
  5. data/lua-hooks/ext/libinjection/module.mk +5 -0
  6. data/lua-hooks/ext/lpeg/module.mk +6 -0
  7. data/lua-hooks/ext/lua-cmsgpack/module.mk +2 -0
  8. data/lua-hooks/ext/lua-snapshot/module.mk +2 -0
  9. data/lua-hooks/ext/luajit/COPYRIGHT +1 -1
  10. data/lua-hooks/ext/luajit/Makefile +2 -2
  11. data/lua-hooks/ext/luajit/README +2 -2
  12. data/lua-hooks/ext/luajit/doc/bluequad-print.css +1 -1
  13. data/lua-hooks/ext/luajit/doc/bluequad.css +1 -1
  14. data/lua-hooks/ext/luajit/doc/changes.html +15 -2
  15. data/lua-hooks/ext/luajit/doc/contact.html +3 -3
  16. data/lua-hooks/ext/luajit/doc/ext_c_api.html +2 -2
  17. data/lua-hooks/ext/luajit/doc/ext_ffi.html +2 -2
  18. data/lua-hooks/ext/luajit/doc/ext_ffi_api.html +2 -2
  19. data/lua-hooks/ext/luajit/doc/ext_ffi_semantics.html +4 -2
  20. data/lua-hooks/ext/luajit/doc/ext_ffi_tutorial.html +2 -2
  21. data/lua-hooks/ext/luajit/doc/ext_jit.html +2 -2
  22. data/lua-hooks/ext/luajit/doc/ext_profiler.html +2 -2
  23. data/lua-hooks/ext/luajit/doc/extensions.html +9 -2
  24. data/lua-hooks/ext/luajit/doc/faq.html +2 -2
  25. data/lua-hooks/ext/luajit/doc/install.html +22 -18
  26. data/lua-hooks/ext/luajit/doc/luajit.html +3 -3
  27. data/lua-hooks/ext/luajit/doc/running.html +2 -2
  28. data/lua-hooks/ext/luajit/doc/status.html +2 -2
  29. data/lua-hooks/ext/luajit/dynasm/dasm_arm.h +1 -1
  30. data/lua-hooks/ext/luajit/dynasm/dasm_arm.lua +4 -4
  31. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.h +1 -1
  32. data/lua-hooks/ext/luajit/dynasm/dasm_arm64.lua +4 -4
  33. data/lua-hooks/ext/luajit/dynasm/dasm_mips.h +1 -1
  34. data/lua-hooks/ext/luajit/dynasm/dasm_mips.lua +4 -4
  35. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.h +1 -1
  36. data/lua-hooks/ext/luajit/dynasm/dasm_ppc.lua +4 -4
  37. data/lua-hooks/ext/luajit/dynasm/dasm_proto.h +3 -3
  38. data/lua-hooks/ext/luajit/dynasm/dasm_x64.lua +1 -1
  39. data/lua-hooks/ext/luajit/dynasm/dasm_x86.h +34 -7
  40. data/lua-hooks/ext/luajit/dynasm/dasm_x86.lua +427 -102
  41. data/lua-hooks/ext/luajit/dynasm/dynasm.lua +5 -5
  42. data/lua-hooks/ext/luajit/etc/luajit.1 +1 -1
  43. data/lua-hooks/ext/luajit/etc/luajit.pc +1 -1
  44. data/lua-hooks/ext/luajit/src/Makefile +36 -21
  45. data/lua-hooks/ext/luajit/src/Makefile.dep +3 -1
  46. data/lua-hooks/ext/luajit/src/host/buildvm.c +1 -1
  47. data/lua-hooks/ext/luajit/src/host/buildvm.h +1 -1
  48. data/lua-hooks/ext/luajit/src/host/buildvm_asm.c +10 -1
  49. data/lua-hooks/ext/luajit/src/host/buildvm_fold.c +1 -1
  50. data/lua-hooks/ext/luajit/src/host/buildvm_lib.c +1 -1
  51. data/lua-hooks/ext/luajit/src/host/buildvm_peobj.c +1 -1
  52. data/lua-hooks/ext/luajit/src/host/genlibbc.lua +1 -1
  53. data/lua-hooks/ext/luajit/src/host/genminilua.lua +1 -1
  54. data/lua-hooks/ext/luajit/src/jit/bc.lua +1 -1
  55. data/lua-hooks/ext/luajit/src/jit/bcsave.lua +2 -2
  56. data/lua-hooks/ext/luajit/src/jit/dis_arm.lua +1 -1
  57. data/lua-hooks/ext/luajit/src/jit/dis_mips.lua +1 -1
  58. data/lua-hooks/ext/luajit/src/jit/dis_mipsel.lua +1 -1
  59. data/lua-hooks/ext/luajit/src/jit/dis_ppc.lua +1 -1
  60. data/lua-hooks/ext/luajit/src/jit/dis_x64.lua +1 -1
  61. data/lua-hooks/ext/luajit/src/jit/dis_x86.lua +163 -73
  62. data/lua-hooks/ext/luajit/src/jit/dump.lua +2 -1
  63. data/lua-hooks/ext/luajit/src/jit/p.lua +1 -1
  64. data/lua-hooks/ext/luajit/src/jit/v.lua +1 -1
  65. data/lua-hooks/ext/luajit/src/jit/zone.lua +1 -1
  66. data/lua-hooks/ext/luajit/src/lib_aux.c +1 -1
  67. data/lua-hooks/ext/luajit/src/lib_base.c +4 -5
  68. data/lua-hooks/ext/luajit/src/lib_bit.c +1 -1
  69. data/lua-hooks/ext/luajit/src/lib_debug.c +1 -1
  70. data/lua-hooks/ext/luajit/src/lib_ffi.c +2 -5
  71. data/lua-hooks/ext/luajit/src/lib_init.c +1 -1
  72. data/lua-hooks/ext/luajit/src/lib_io.c +2 -3
  73. data/lua-hooks/ext/luajit/src/lib_jit.c +1 -1
  74. data/lua-hooks/ext/luajit/src/lib_math.c +1 -1
  75. data/lua-hooks/ext/luajit/src/lib_os.c +2 -2
  76. data/lua-hooks/ext/luajit/src/lib_package.c +1 -1
  77. data/lua-hooks/ext/luajit/src/lib_string.c +1 -1
  78. data/lua-hooks/ext/luajit/src/lib_table.c +1 -1
  79. data/lua-hooks/ext/luajit/src/lj.supp +15 -0
  80. data/lua-hooks/ext/luajit/src/lj_alloc.c +1 -1
  81. data/lua-hooks/ext/luajit/src/lj_api.c +4 -1
  82. data/lua-hooks/ext/luajit/src/lj_arch.h +33 -7
  83. data/lua-hooks/ext/luajit/src/lj_asm.c +12 -5
  84. data/lua-hooks/ext/luajit/src/lj_asm.h +1 -1
  85. data/lua-hooks/ext/luajit/src/lj_asm_arm.h +3 -13
  86. data/lua-hooks/ext/luajit/src/lj_asm_mips.h +337 -71
  87. data/lua-hooks/ext/luajit/src/lj_asm_ppc.h +2 -2
  88. data/lua-hooks/ext/luajit/src/lj_asm_x86.h +2 -2
  89. data/lua-hooks/ext/luajit/src/lj_bc.c +1 -1
  90. data/lua-hooks/ext/luajit/src/lj_bc.h +1 -1
  91. data/lua-hooks/ext/luajit/src/lj_bcdump.h +1 -1
  92. data/lua-hooks/ext/luajit/src/lj_bcread.c +1 -1
  93. data/lua-hooks/ext/luajit/src/lj_bcwrite.c +1 -1
  94. data/lua-hooks/ext/luajit/src/lj_buf.c +2 -4
  95. data/lua-hooks/ext/luajit/src/lj_buf.h +1 -3
  96. data/lua-hooks/ext/luajit/src/lj_carith.c +1 -1
  97. data/lua-hooks/ext/luajit/src/lj_carith.h +1 -1
  98. data/lua-hooks/ext/luajit/src/lj_ccall.c +37 -14
  99. data/lua-hooks/ext/luajit/src/lj_ccall.h +3 -3
  100. data/lua-hooks/ext/luajit/src/lj_ccallback.c +16 -7
  101. data/lua-hooks/ext/luajit/src/lj_ccallback.h +1 -1
  102. data/lua-hooks/ext/luajit/src/lj_cconv.c +1 -1
  103. data/lua-hooks/ext/luajit/src/lj_cconv.h +1 -1
  104. data/lua-hooks/ext/luajit/src/lj_cdata.c +10 -1
  105. data/lua-hooks/ext/luajit/src/lj_cdata.h +3 -1
  106. data/lua-hooks/ext/luajit/src/lj_clib.c +1 -1
  107. data/lua-hooks/ext/luajit/src/lj_clib.h +1 -1
  108. data/lua-hooks/ext/luajit/src/lj_cparse.c +27 -6
  109. data/lua-hooks/ext/luajit/src/lj_cparse.h +1 -1
  110. data/lua-hooks/ext/luajit/src/lj_crecord.c +1 -1
  111. data/lua-hooks/ext/luajit/src/lj_crecord.h +1 -1
  112. data/lua-hooks/ext/luajit/src/lj_ctype.c +10 -8
  113. data/lua-hooks/ext/luajit/src/lj_ctype.h +1 -1
  114. data/lua-hooks/ext/luajit/src/lj_debug.c +1 -1
  115. data/lua-hooks/ext/luajit/src/lj_debug.h +1 -1
  116. data/lua-hooks/ext/luajit/src/lj_def.h +1 -1
  117. data/lua-hooks/ext/luajit/src/lj_dispatch.c +1 -1
  118. data/lua-hooks/ext/luajit/src/lj_dispatch.h +21 -4
  119. data/lua-hooks/ext/luajit/src/lj_emit_arm.h +1 -1
  120. data/lua-hooks/ext/luajit/src/lj_emit_mips.h +7 -5
  121. data/lua-hooks/ext/luajit/src/lj_emit_ppc.h +1 -1
  122. data/lua-hooks/ext/luajit/src/lj_emit_x86.h +1 -1
  123. data/lua-hooks/ext/luajit/src/lj_err.c +69 -31
  124. data/lua-hooks/ext/luajit/src/lj_err.h +1 -1
  125. data/lua-hooks/ext/luajit/src/lj_errmsg.h +1 -1
  126. data/lua-hooks/ext/luajit/src/lj_ff.h +1 -1
  127. data/lua-hooks/ext/luajit/src/lj_ffrecord.c +10 -40
  128. data/lua-hooks/ext/luajit/src/lj_ffrecord.h +1 -1
  129. data/lua-hooks/ext/luajit/src/lj_frame.h +12 -1
  130. data/lua-hooks/ext/luajit/src/lj_func.c +1 -1
  131. data/lua-hooks/ext/luajit/src/lj_func.h +1 -1
  132. data/lua-hooks/ext/luajit/src/lj_gc.c +2 -2
  133. data/lua-hooks/ext/luajit/src/lj_gc.h +1 -1
  134. data/lua-hooks/ext/luajit/src/lj_gdbjit.c +1 -1
  135. data/lua-hooks/ext/luajit/src/lj_gdbjit.h +1 -1
  136. data/lua-hooks/ext/luajit/src/lj_ir.c +31 -15
  137. data/lua-hooks/ext/luajit/src/lj_ir.h +1 -1
  138. data/lua-hooks/ext/luajit/src/lj_ircall.h +29 -1
  139. data/lua-hooks/ext/luajit/src/lj_iropt.h +2 -1
  140. data/lua-hooks/ext/luajit/src/lj_jit.h +2 -1
  141. data/lua-hooks/ext/luajit/src/lj_lex.c +28 -1
  142. data/lua-hooks/ext/luajit/src/lj_lex.h +1 -1
  143. data/lua-hooks/ext/luajit/src/lj_lib.c +1 -1
  144. data/lua-hooks/ext/luajit/src/lj_lib.h +1 -1
  145. data/lua-hooks/ext/luajit/src/lj_load.c +1 -1
  146. data/lua-hooks/ext/luajit/src/lj_mcode.c +1 -1
  147. data/lua-hooks/ext/luajit/src/lj_mcode.h +1 -1
  148. data/lua-hooks/ext/luajit/src/lj_meta.c +8 -8
  149. data/lua-hooks/ext/luajit/src/lj_meta.h +1 -1
  150. data/lua-hooks/ext/luajit/src/lj_obj.c +1 -1
  151. data/lua-hooks/ext/luajit/src/lj_obj.h +1 -1
  152. data/lua-hooks/ext/luajit/src/lj_opt_dce.c +1 -1
  153. data/lua-hooks/ext/luajit/src/lj_opt_fold.c +1 -1
  154. data/lua-hooks/ext/luajit/src/lj_opt_loop.c +1 -1
  155. data/lua-hooks/ext/luajit/src/lj_opt_mem.c +1 -1
  156. data/lua-hooks/ext/luajit/src/lj_opt_narrow.c +1 -1
  157. data/lua-hooks/ext/luajit/src/lj_opt_sink.c +1 -1
  158. data/lua-hooks/ext/luajit/src/lj_opt_split.c +10 -5
  159. data/lua-hooks/ext/luajit/src/lj_parse.c +1 -1
  160. data/lua-hooks/ext/luajit/src/lj_parse.h +1 -1
  161. data/lua-hooks/ext/luajit/src/lj_profile.c +1 -1
  162. data/lua-hooks/ext/luajit/src/lj_profile.h +1 -1
  163. data/lua-hooks/ext/luajit/src/lj_record.c +13 -5
  164. data/lua-hooks/ext/luajit/src/lj_record.h +1 -1
  165. data/lua-hooks/ext/luajit/src/lj_snap.c +20 -23
  166. data/lua-hooks/ext/luajit/src/lj_snap.h +1 -1
  167. data/lua-hooks/ext/luajit/src/lj_state.c +1 -1
  168. data/lua-hooks/ext/luajit/src/lj_state.h +1 -1
  169. data/lua-hooks/ext/luajit/src/lj_str.c +1 -1
  170. data/lua-hooks/ext/luajit/src/lj_str.h +1 -1
  171. data/lua-hooks/ext/luajit/src/lj_strfmt.c +12 -98
  172. data/lua-hooks/ext/luajit/src/lj_strfmt.h +4 -4
  173. data/lua-hooks/ext/luajit/src/lj_strfmt_num.c +591 -0
  174. data/lua-hooks/ext/luajit/src/lj_strscan.c +1 -1
  175. data/lua-hooks/ext/luajit/src/lj_strscan.h +1 -1
  176. data/lua-hooks/ext/luajit/src/lj_tab.c +1 -1
  177. data/lua-hooks/ext/luajit/src/lj_tab.h +1 -1
  178. data/lua-hooks/ext/luajit/src/lj_target.h +1 -1
  179. data/lua-hooks/ext/luajit/src/lj_target_arm.h +1 -1
  180. data/lua-hooks/ext/luajit/src/lj_target_arm64.h +1 -1
  181. data/lua-hooks/ext/luajit/src/lj_target_mips.h +30 -2
  182. data/lua-hooks/ext/luajit/src/lj_target_ppc.h +1 -1
  183. data/lua-hooks/ext/luajit/src/lj_target_x86.h +1 -1
  184. data/lua-hooks/ext/luajit/src/lj_trace.c +7 -2
  185. data/lua-hooks/ext/luajit/src/lj_trace.h +1 -1
  186. data/lua-hooks/ext/luajit/src/lj_traceerr.h +1 -3
  187. data/lua-hooks/ext/luajit/src/lj_udata.c +1 -1
  188. data/lua-hooks/ext/luajit/src/lj_udata.h +1 -1
  189. data/lua-hooks/ext/luajit/src/lj_vm.h +5 -3
  190. data/lua-hooks/ext/luajit/src/lj_vmevent.c +1 -1
  191. data/lua-hooks/ext/luajit/src/lj_vmevent.h +1 -1
  192. data/lua-hooks/ext/luajit/src/lj_vmmath.c +15 -15
  193. data/lua-hooks/ext/luajit/src/ljamalg.c +2 -1
  194. data/lua-hooks/ext/luajit/src/lua.h +1 -0
  195. data/lua-hooks/ext/luajit/src/luaconf.h +2 -2
  196. data/lua-hooks/ext/luajit/src/luajit.c +1 -1
  197. data/lua-hooks/ext/luajit/src/luajit.h +4 -4
  198. data/lua-hooks/ext/luajit/src/lualib.h +1 -1
  199. data/lua-hooks/ext/luajit/src/msvcbuild.bat +1 -1
  200. data/lua-hooks/ext/luajit/src/ps4build.bat +26 -6
  201. data/lua-hooks/ext/luajit/src/vm_arm.dasc +17 -9
  202. data/lua-hooks/ext/luajit/src/vm_arm64.dasc +1 -1
  203. data/lua-hooks/ext/luajit/src/vm_mips.dasc +1562 -656
  204. data/lua-hooks/ext/luajit/src/vm_ppc.dasc +3 -7
  205. data/lua-hooks/ext/luajit/src/vm_x64.dasc +10 -2
  206. data/lua-hooks/ext/luajit/src/vm_x86.dasc +5 -8
  207. data/lua-hooks/ext/luautf8/module.mk +2 -0
  208. data/lua-hooks/ext/module.mk +15 -0
  209. data/lua-hooks/ext/modules.h +17 -0
  210. data/lua-hooks/ext/perf/luacpu.c +1 -1
  211. data/lua-hooks/ext/perf/lualoadavg.c +1 -1
  212. data/lua-hooks/ext/perf/luameminfo.c +1 -1
  213. data/lua-hooks/ext/perf/luaoslib.c +124 -2
  214. data/lua-hooks/ext/perf/module.mk +5 -0
  215. data/lua-hooks/ext/sha1/luasha1.c +4 -2
  216. data/lua-hooks/ext/sha1/module.mk +5 -0
  217. data/lua-hooks/ext/sha2/luasha256.c +4 -2
  218. data/lua-hooks/ext/sha2/module.mk +5 -0
  219. data/lua-hooks/ext/sysutils/lua_utils.c +56 -0
  220. data/lua-hooks/ext/sysutils/module.mk +2 -0
  221. data/lua-hooks/lib/boot.lua +2 -1
  222. data/lua-hooks/lib/hooks/module.mk +31 -0
  223. data/lua-hooks/lib/hooks/xss/module.mk +4 -0
  224. data/lua-hooks/lib/lexers/module.mk +10 -0
  225. data/lua-hooks/lib/module.mk +38 -0
  226. data/lua-hooks/lib/schema/module.mk +3 -0
  227. data/lua-hooks/options.mk +59 -0
  228. metadata +21 -2
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** PPC IR assembler (SSA IR -> machine code).
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  /* -- Register allocator extensions --------------------------------------- */
@@ -298,7 +298,7 @@ static void asm_gencall(ASMState *as, const CCallInfo *ci, IRRef *args)
298
298
  static void asm_setupresult(ASMState *as, IRIns *ir, const CCallInfo *ci)
299
299
  {
300
300
  RegSet drop = RSET_SCRATCH;
301
- int hiop = ((ir+1)->o == IR_HIOP);
301
+ int hiop = ((ir+1)->o == IR_HIOP && !irt_isnil((ir+1)->t));
302
302
  if ((ci->flags & CCI_NOFPRCLOBBER))
303
303
  drop &= ~RSET_FPR;
304
304
  if (ra_hasreg(ir->r))
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** x86/x64 IR assembler (SSA IR -> machine code).
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  /* -- Guard handling ------------------------------------------------------ */
@@ -531,7 +531,7 @@ static void asm_gencall(ASMState *as, const CCallInfo *ci, IRRef *args)
531
531
  static void asm_setupresult(ASMState *as, IRIns *ir, const CCallInfo *ci)
532
532
  {
533
533
  RegSet drop = RSET_SCRATCH;
534
- int hiop = (LJ_32 && (ir+1)->o == IR_HIOP);
534
+ int hiop = (LJ_32 && (ir+1)->o == IR_HIOP && !irt_isnil((ir+1)->t));
535
535
  if ((ci->flags & CCI_NOFPRCLOBBER))
536
536
  drop &= ~RSET_FPR;
537
537
  if (ra_hasreg(ir->r))
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** Bytecode instruction modes.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #define lj_bc_c
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** Bytecode instruction format.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_BC_H
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** Bytecode dump definitions.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_BCDUMP_H
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** Bytecode reader.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #define lj_bcread_c
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** Bytecode writer.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #define lj_bcwrite_c
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** Buffer handling.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #define lj_buf_c
@@ -77,7 +77,6 @@ SBuf *lj_buf_putmem(SBuf *sb, const void *q, MSize len)
77
77
  return sb;
78
78
  }
79
79
 
80
- #if LJ_HASJIT
81
80
  SBuf * LJ_FASTCALL lj_buf_putchar(SBuf *sb, int c)
82
81
  {
83
82
  char *p = lj_buf_more(sb, 1);
@@ -85,7 +84,6 @@ SBuf * LJ_FASTCALL lj_buf_putchar(SBuf *sb, int c)
85
84
  setsbufP(sb, p);
86
85
  return sb;
87
86
  }
88
- #endif
89
87
 
90
88
  SBuf * LJ_FASTCALL lj_buf_putstr(SBuf *sb, GCstr *s)
91
89
  {
@@ -186,7 +184,7 @@ SBuf *lj_buf_puttab(SBuf *sb, GCtab *t, GCstr *sep, int32_t i, int32_t e)
186
184
  } else if (tvisint(o)) {
187
185
  p = lj_strfmt_wint(lj_buf_more(sb, STRFMT_MAXBUF_INT+seplen), intV(o));
188
186
  } else if (tvisnum(o)) {
189
- p = lj_strfmt_wnum(lj_buf_more(sb, STRFMT_MAXBUF_NUM+seplen), o);
187
+ p = lj_buf_more(lj_strfmt_putfnum(sb, STRFMT_G14, numV(o)), seplen);
190
188
  } else {
191
189
  goto badtype;
192
190
  }
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** Buffer handling.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_BUF_H
@@ -67,9 +67,7 @@ static LJ_AINLINE char *lj_buf_more(SBuf *sb, MSize sz)
67
67
 
68
68
  /* Low-level buffer put operations */
69
69
  LJ_FUNC SBuf *lj_buf_putmem(SBuf *sb, const void *q, MSize len);
70
- #if LJ_HASJIT
71
70
  LJ_FUNC SBuf * LJ_FASTCALL lj_buf_putchar(SBuf *sb, int c);
72
- #endif
73
71
  LJ_FUNC SBuf * LJ_FASTCALL lj_buf_putstr(SBuf *sb, GCstr *s);
74
72
 
75
73
  static LJ_AINLINE char *lj_buf_wmem(char *p, const void *q, MSize len)
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** C data arithmetic.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #include "lj_obj.h"
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** C data arithmetic.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_CARITH_H
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** FFI C call handling.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #include "lj_obj.h"
@@ -418,6 +418,18 @@
418
418
  /* Complex values are returned in 1 or 2 FPRs. */ \
419
419
  cc->retref = 0;
420
420
 
421
+ #if LJ_ABI_SOFTFP
422
+ #define CCALL_HANDLE_COMPLEXRET2 \
423
+ if (ctr->size == 2*sizeof(float)) { /* Copy complex float from GPRs. */ \
424
+ ((intptr_t *)dp)[0] = cc->gpr[0]; \
425
+ ((intptr_t *)dp)[1] = cc->gpr[1]; \
426
+ } else { /* Copy complex double from GPRs. */ \
427
+ ((intptr_t *)dp)[0] = cc->gpr[0]; \
428
+ ((intptr_t *)dp)[1] = cc->gpr[1]; \
429
+ ((intptr_t *)dp)[2] = cc->gpr[2]; \
430
+ ((intptr_t *)dp)[3] = cc->gpr[3]; \
431
+ }
432
+ #else
421
433
  #define CCALL_HANDLE_COMPLEXRET2 \
422
434
  if (ctr->size == 2*sizeof(float)) { /* Copy complex float from FPRs. */ \
423
435
  ((float *)dp)[0] = cc->fpr[0].f; \
@@ -426,6 +438,7 @@
426
438
  ((double *)dp)[0] = cc->fpr[0].d; \
427
439
  ((double *)dp)[1] = cc->fpr[1].d; \
428
440
  }
441
+ #endif
429
442
 
430
443
  #define CCALL_HANDLE_STRUCTARG \
431
444
  /* Pass all structs by value in registers and/or on the stack. */
@@ -433,6 +446,22 @@
433
446
  #define CCALL_HANDLE_COMPLEXARG \
434
447
  /* Pass complex by value in 2 or 4 GPRs. */
435
448
 
449
+ #define CCALL_HANDLE_GPR \
450
+ if ((d->info & CTF_ALIGN) > CTALIGN_PTR) \
451
+ ngpr = (ngpr + 1u) & ~1u; /* Align to regpair. */ \
452
+ if (ngpr < maxgpr) { \
453
+ dp = &cc->gpr[ngpr]; \
454
+ if (ngpr + n > maxgpr) { \
455
+ nsp += ngpr + n - maxgpr; /* Assumes contiguous gpr/stack fields. */ \
456
+ if (nsp > CCALL_MAXSTACK) goto err_nyi; /* Too many arguments. */ \
457
+ ngpr = maxgpr; \
458
+ } else { \
459
+ ngpr += n; \
460
+ } \
461
+ goto done; \
462
+ }
463
+
464
+ #if !LJ_ABI_SOFTFP /* MIPS32 hard-float */
436
465
  #define CCALL_HANDLE_REGARG \
437
466
  if (isfp && nfpr < CCALL_NARG_FPR && !(ct->info & CTF_VARARG)) { \
438
467
  /* Try to pass argument in FPRs. */ \
@@ -441,24 +470,18 @@
441
470
  goto done; \
442
471
  } else { /* Try to pass argument in GPRs. */ \
443
472
  nfpr = CCALL_NARG_FPR; \
444
- if ((d->info & CTF_ALIGN) > CTALIGN_PTR) \
445
- ngpr = (ngpr + 1u) & ~1u; /* Align to regpair. */ \
446
- if (ngpr < maxgpr) { \
447
- dp = &cc->gpr[ngpr]; \
448
- if (ngpr + n > maxgpr) { \
449
- nsp += ngpr + n - maxgpr; /* Assumes contiguous gpr/stack fields. */ \
450
- if (nsp > CCALL_MAXSTACK) goto err_nyi; /* Too many arguments. */ \
451
- ngpr = maxgpr; \
452
- } else { \
453
- ngpr += n; \
454
- } \
455
- goto done; \
456
- } \
473
+ CCALL_HANDLE_GPR \
457
474
  }
475
+ #else /* MIPS32 soft-float */
476
+ #define CCALL_HANDLE_REGARG CCALL_HANDLE_GPR
477
+ #endif
458
478
 
479
+ #if !LJ_ABI_SOFTFP
480
+ /* On MIPS64 soft-float, position of float return values is endian-dependant. */
459
481
  #define CCALL_HANDLE_RET \
460
482
  if (ctype_isfp(ctr->info) && ctr->size == sizeof(float)) \
461
483
  sp = (uint8_t *)&cc->fpr[0].f;
484
+ #endif
462
485
 
463
486
  #else
464
487
  #error "Missing calling convention definitions for this architecture"
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** FFI C call handling.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_CCALL_H
@@ -98,9 +98,9 @@ typedef double FPRArg;
98
98
  #elif LJ_TARGET_MIPS
99
99
 
100
100
  #define CCALL_NARG_GPR 4
101
- #define CCALL_NARG_FPR 2
101
+ #define CCALL_NARG_FPR (LJ_ABI_SOFTFP ? 0 : 2)
102
102
  #define CCALL_NRET_GPR 2
103
- #define CCALL_NRET_FPR 2
103
+ #define CCALL_NRET_FPR (LJ_ABI_SOFTFP ? 0 : 2)
104
104
  #define CCALL_SPS_EXTRA 7
105
105
  #define CCALL_SPS_FREE 1
106
106
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** FFI C callback handling.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #include "lj_obj.h"
@@ -427,6 +427,15 @@ void lj_ccallback_mcode_free(CTState *cts)
427
427
 
428
428
  #elif LJ_TARGET_MIPS
429
429
 
430
+ #define CALLBACK_HANDLE_GPR \
431
+ if (n > 1) ngpr = (ngpr + 1u) & ~1u; /* Align to regpair. */ \
432
+ if (ngpr + n <= maxgpr) { \
433
+ sp = &cts->cb.gpr[ngpr]; \
434
+ ngpr += n; \
435
+ goto done; \
436
+ }
437
+
438
+ #if !LJ_ABI_SOFTFP /* MIPS32 hard-float */
430
439
  #define CALLBACK_HANDLE_REGARG \
431
440
  if (isfp && nfpr < CCALL_NARG_FPR) { /* Try to pass argument in FPRs. */ \
432
441
  sp = (void *)((uint8_t *)&cts->cb.fpr[nfpr] + ((LJ_BE && n==1) ? 4 : 0)); \
@@ -434,13 +443,13 @@ void lj_ccallback_mcode_free(CTState *cts)
434
443
  goto done; \
435
444
  } else { /* Try to pass argument in GPRs. */ \
436
445
  nfpr = CCALL_NARG_FPR; \
437
- if (n > 1) ngpr = (ngpr + 1u) & ~1u; /* Align to regpair. */ \
438
- if (ngpr + n <= maxgpr) { \
439
- sp = &cts->cb.gpr[ngpr]; \
440
- ngpr += n; \
441
- goto done; \
442
- } \
446
+ CALLBACK_HANDLE_GPR \
443
447
  }
448
+ #else /* MIPS32 soft-float */
449
+ #define CALLBACK_HANDLE_REGARG \
450
+ CALLBACK_HANDLE_GPR \
451
+ UNUSED(isfp);
452
+ #endif
444
453
 
445
454
  #define CALLBACK_HANDLE_RET \
446
455
  if (ctype_isfp(ctr->info) && ctr->size == sizeof(float)) \
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** FFI C callback handling.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_CCALLBACK_H
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** C type conversions.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #include "lj_obj.h"
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** C type conversions.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_CCONV_H
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** C data management.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #include "lj_obj.h"
@@ -49,6 +49,15 @@ GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, CTSize align)
49
49
  return cd;
50
50
  }
51
51
 
52
+ /* Allocate arbitrary C data object. */
53
+ GCcdata *lj_cdata_newx(CTState *cts, CTypeID id, CTSize sz, CTInfo info)
54
+ {
55
+ if (!(info & CTF_VLA) && ctype_align(info) <= CT_MEMALIGN)
56
+ return lj_cdata_new(cts, id, sz);
57
+ else
58
+ return lj_cdata_newv(cts->L, id, sz, ctype_align(info));
59
+ }
60
+
52
61
  /* Free a C data object. */
53
62
  void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd)
54
63
  {
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** C data management.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_CDATA_H
@@ -60,6 +60,8 @@ static LJ_AINLINE GCcdata *lj_cdata_new_(lua_State *L, CTypeID id, CTSize sz)
60
60
  LJ_FUNC GCcdata *lj_cdata_newref(CTState *cts, const void *pp, CTypeID id);
61
61
  LJ_FUNC GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz,
62
62
  CTSize align);
63
+ LJ_FUNC GCcdata *lj_cdata_newx(CTState *cts, CTypeID id, CTSize sz,
64
+ CTInfo info);
63
65
 
64
66
  LJ_FUNC void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd);
65
67
  LJ_FUNC void lj_cdata_setfin(lua_State *L, GCcdata *cd, GCobj *obj,
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** FFI C library loader.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #include "lj_obj.h"
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** FFI C library loader.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_CLIB_H
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** C declaration parser.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #include "lj_obj.h"
@@ -1744,6 +1744,16 @@ static void cp_pragma(CPState *cp, BCLine pragmaline)
1744
1744
  }
1745
1745
  }
1746
1746
 
1747
+ /* Handle line number. */
1748
+ static void cp_line(CPState *cp, BCLine hashline)
1749
+ {
1750
+ BCLine newline = cp->val.u32;
1751
+ /* TODO: Handle file name and include it in error messages. */
1752
+ while (cp->tok != CTOK_EOF && cp->linenumber == hashline)
1753
+ cp_next(cp);
1754
+ cp->linenumber = newline;
1755
+ }
1756
+
1747
1757
  /* Parse multiple C declarations of types or extern identifiers. */
1748
1758
  static void cp_decl_multi(CPState *cp)
1749
1759
  {
@@ -1756,12 +1766,23 @@ static void cp_decl_multi(CPState *cp)
1756
1766
  continue;
1757
1767
  }
1758
1768
  if (cp->tok == '#') { /* Workaround, since we have no preprocessor, yet. */
1759
- BCLine pragmaline = cp->linenumber;
1760
- if (!(cp_next(cp) == CTOK_IDENT &&
1761
- cp->str->hash == H_(f5e6b4f8,1d509107))) /* pragma */
1769
+ BCLine hashline = cp->linenumber;
1770
+ CPToken tok = cp_next(cp);
1771
+ if (tok == CTOK_INTEGER) {
1772
+ cp_line(cp, hashline);
1773
+ continue;
1774
+ } else if (tok == CTOK_IDENT &&
1775
+ cp->str->hash == H_(187aab88,fcb60b42)) { /* line */
1776
+ if (cp_next(cp) != CTOK_INTEGER) cp_err_token(cp, tok);
1777
+ cp_line(cp, hashline);
1778
+ continue;
1779
+ } else if (tok == CTOK_IDENT &&
1780
+ cp->str->hash == H_(f5e6b4f8,1d509107)) { /* pragma */
1781
+ cp_pragma(cp, hashline);
1782
+ continue;
1783
+ } else {
1762
1784
  cp_errmsg(cp, cp->tok, LJ_ERR_XSYMBOL);
1763
- cp_pragma(cp, pragmaline);
1764
- continue;
1785
+ }
1765
1786
  }
1766
1787
  scl = cp_decl_spec(cp, &decl, CDF_TYPEDEF|CDF_EXTERN|CDF_STATIC);
1767
1788
  if ((cp->tok == ';' || cp->tok == CTOK_EOF) &&
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  ** C declaration parser.
3
- ** Copyright (C) 2005-2015 Mike Pall. See Copyright Notice in luajit.h
3
+ ** Copyright (C) 2005-2016 Mike Pall. See Copyright Notice in luajit.h
4
4
  */
5
5
 
6
6
  #ifndef _LJ_CPARSE_H