Commit Graph

2423 Commits

Author SHA1 Message Date
Mike Pall
637721d00f PS4/PS5: Fix build scripts.
Thanks to Mathias Westerdahl.
2022-11-27 15:36:11 +01:00
Mike Pall
1d75cd4d7b Avoid assertion in case of stack overflow from stitched trace.
Reported by Sergey Bronnikov. Fixed by Sergey Kaplun.
2022-11-27 15:25:32 +01:00
Mike Pall
46aa45dcbd NX: Always compile with -fPIC.
Suggested by Mathias Westerdahl.
2022-11-22 09:52:56 +01:00
Mike Pall
7a0cf5fd4c Merge branch 'master' into v2.1 2022-11-09 11:06:11 +01:00
Mike Pall
ca8d3257bb Ensure correct stack top for OOM error message.
Reported by Sergey Kaplun.
2022-11-09 11:01:41 +01:00
Mike Pall
6c4826f12c ARM64: Fix IR_SLOAD assembly.
Reported by Gate88.
2022-10-04 12:04:17 +02:00
Mike Pall
dad04f1754 Fix trace join to BC_JLOOP originating from BC_ITERN.
Reported by OpenResty Inc.
2022-09-14 12:26:53 +02:00
Mike Pall
fffd3eafc4 Fix compiler warnings.
Reported by gan74.
2022-09-13 13:43:03 +02:00
Mike Pall
e19db60512 Fix QNX build.
Note: this is not an officially supported target.
Contributed by Wen Yang.
2022-09-12 11:16:20 +02:00
Mike Pall
03080b795a Add -F option to override filename in jit.bcsave (luajit -b).
Suggested by Mathias Westerdahl.
2022-08-15 14:16:58 +02:00
Mike Pall
633f265f67 LJ_GC64: Fix lua_concat().
Reported by Mathias Westerdahl.
2022-08-10 19:27:53 +02:00
Mike Pall
e61a1f961a Merge branch 'master' into v2.1 2022-08-07 20:04:52 +02:00
Mike Pall
a93f4bb39f Prevent use of RTLD_DEFAULT when NO_RTLD_DEFAULT is defined.
Workaround for Android 4.4 bug.
Thanks to gudzpoz.
2022-08-07 20:02:40 +02:00
Mike Pall
a7d0265480 Improve GC estimation for userdata with attached managed memory.
This works well for string.buffers, but not for userdata or
cdata with attached unmanaged memory (malloc/free, mmap/munmap).
2022-07-28 15:40:28 +02:00
Mike Pall
9c3df68a1e Add missing GC steps to string buffer methods.
Reported by Cosmin Apreutesei.
2022-07-28 15:38:54 +02:00
Mike Pall
e1339aed3d x86/x64: Limit VLOAD fusion to simple cases.
Reported by ccagml.
2022-07-27 11:32:33 +02:00
Mike Pall
3065c910ad OSX/iOS/ARM64: Fix generation of Mach-O object files.
Thanks to Carlo Cabrera.
2022-07-22 12:14:40 +02:00
Mike Pall
32984282dd Prevent trace start at BC_ITERL after compiled BC_ITERN.
Reported by ccagml.
2022-07-21 17:30:56 +02:00
Mike Pall
5677985dc1 ARM64: Allow building with unwinding disabled. 2022-07-19 12:53:34 +02:00
Mike Pall
50936d7844 Merge branch 'master' into v2.1 2022-07-13 00:37:14 +02:00
Mike Pall
899093a9e0 FFI: Fix sizeof expression in C parser for reference types. 2022-07-13 00:32:31 +02:00
Mike Pall
36b2962d40 FFI: Fix ffi.alignof() for reference types.
Reported by Eric Gouyer.
2022-07-13 00:32:04 +02:00
Mike Pall
27a6fee82e FFI: Allow ffi.metatype() for typedefs with attributes.
Reported by Eric Gouyer.
2022-07-13 00:30:23 +02:00
Mike Pall
b98b37231b OSX/iOS/ARM64: Fix bytecode embedding in Mach-O object file.
Thanks to Carlo Cabrera.
2022-07-12 22:25:33 +02:00
Mike Pall
6bda30d8c7 LJ_GC64: Fix IR_VARG offset for fixed number of results.
Reported by George Vaintrub. Fixed by Sergey Kaplun.
2022-07-12 22:21:26 +02:00
Mike Pall
e3bae12fc0 Merge branch 'master' into v2.1 2022-07-08 15:12:43 +02:00
Mike Pall
674afcd4e2 x86/x64: Fix math.ceil(-0.9) result sign.
Reported by minoki.
2022-07-08 14:57:01 +02:00
Mike Pall
0065cff7e0 Make embedded bytecode readable and forward-compatible. 2022-06-13 21:23:16 +02:00
Mike Pall
02da2218ed Merge branch 'master' into v2.1 2022-06-08 15:36:47 +02:00
Mike Pall
7dc3850e78 Fix warnings in minilua.c. 2022-06-08 15:35:12 +02:00
Mike Pall
7beb3375e3 Add Nintendo Switch port.
Contributed by Swyter and vdweller84.
2022-06-08 14:24:57 +02:00
Mike Pall
96157d360d Avoid zero-sized arrays in jit_State. 2022-06-08 11:26:50 +02:00
Mike Pall
b32e94856b Don't use jit_State during build with JIT disabled. 2022-06-08 11:20:28 +02:00
Mike Pall
d4b6bb80ea Fix ITERN loop detection when hook checks are enabled.
Reported by Myria.
2022-06-02 13:18:10 +02:00
Mike Pall
1b8d8cabdc Merge branch 'master' into v2.1 2022-05-21 12:02:32 +02:00
Mike Pall
bb7a30727e Prevent C compiler undefined-behavior optimization. 2022-05-21 12:00:10 +02:00
Mike Pall
4ef96cff88 Fix alias analysis for table length forwarding.
Contributed by Maxim Sokolov.
2022-05-20 12:16:25 +02:00
Mike Pall
80bb1428aa Fix loop initialization in table.foreach().
Reported by Daniel Steinberg.
2022-05-20 11:54:20 +02:00
Mike Pall
91bc6b8ad1 LJ_GC64: Fix HREFK optimization.
Contributed by XmiliaH.
2022-05-03 20:51:29 +02:00
Mike Pall
3ee3c9cfa9 Fix recording of __concat metamethod.
Reported by Elias Oelschner. Analyzed by XmiliaH.
2022-05-02 22:33:35 +02:00
Mike Pall
34a62c7f73 Add PS5 port. 2022-04-17 23:41:39 +02:00
Mike Pall
1a401622fe Fix assertions.
Reported by ssdr.
2022-04-17 10:56:11 +02:00
Mike Pall
5e3c45c43b x64: Fix RETHI/RETLO swap after call.
Reported by savilli.
2022-04-05 09:55:15 +02:00
Mike Pall
20aea93915 Fix assertion for LJ_KEYINDEX.
Thanks to XmiliaH.
2022-04-03 10:35:42 +02:00
Mike Pall
1cdff194cf Add missing check for LJ_KEYINDEX in ITERN recording.
Reported by dragonorloong. Analyzed by vfprintf. #827
2022-04-02 21:27:43 +02:00
Mike Pall
43ebb949a2 Fix soft-float IR_POW splitting.
Reported by lison0322.
2022-03-20 11:29:17 +01:00
Mike Pall
c4fe76d50c Merge branch 'master' into v2.1 2022-03-13 18:34:59 +01:00
Mike Pall
93a65d3cc2 Fix BC_UCLO insertion for returns.
Contributed by XmiliaH.
2022-03-13 18:32:32 +01:00
Mike Pall
8b8304f16e Fix compiler warning. 2022-03-08 20:05:33 +01:00
Mike Pall
96d6d50320 Revert to trival pow() optimizations to prevent inaccuracies. 2022-03-08 19:44:10 +01:00
Mike Pall
aa0550e3f0 Fix string buffer COW handling, part 2.
Reported by XmiliaH.
2022-03-07 15:46:51 +01:00
Mike Pall
c93890ed8b *BSD: Fix getentropy() declaration.
Thanks to dundargoc.
2022-03-07 09:45:04 +01:00
Mike Pall
c4adf49204 Fix string buffer COW handling.
Reported by XmiliaH.
2022-03-07 09:42:59 +01:00
Mike Pall
1d7b5029c5 Merge branch 'master' into v2.1 2022-01-27 22:26:14 +01:00
Mike Pall
9ebebc9b58 Fix command-line argv handling. 2022-01-27 22:18:39 +01:00
Mike Pall
b96d74621b Merge branch 'master' into v2.1 2022-01-25 22:18:20 +01:00
Mike Pall
c2237247cc Don't export internal symbol. 2022-01-25 22:17:56 +01:00
Mike Pall
9512d5c1ac Fix pow() optimization inconsistencies. 2022-01-24 14:37:50 +01:00
Mike Pall
c18acfe756 Merge branch 'master' into v2.1 2022-01-23 19:19:26 +01:00
Mike Pall
c50232eb32 Always exit after machine code page protection change fails.
Reported by Sergey Kaplun.
2022-01-23 19:16:53 +01:00
Mike Pall
5935564c3b Fix FOLD rule for BUFHDR append with intervening buffer use.
Reported by XmiliaH.
2022-01-23 19:13:53 +01:00
Mike Pall
c929efc039 Fix compiled error handling for buffer methods.
Contributed by XmiliaH.
2022-01-23 19:10:47 +01:00
Mike Pall
4077f0c3d6 Prevent unroll across BC_ITERN.
Reported by Marukyu.
2022-01-16 21:01:52 +01:00
Mike Pall
1dddc55ca3 Prevent replay of buffer operation for PHI operands.
Contributed by XmiliaH.
2022-01-16 21:00:24 +01:00
Mike Pall
2c218bf756 Merge branch 'master' into v2.1 2022-01-16 20:59:10 +01:00
Mike Pall
b5b20191f3 Save trace recorder state around VM event call.
Reported by Sergey Kaplun.
2022-01-16 20:58:42 +01:00
Mike Pall
7306ba78d6 Merge branch 'master' into v2.1 2022-01-15 19:42:30 +01:00
Mike Pall
c4dfb625ba Bump copyright date. 2022-01-15 19:30:54 +01:00
Mike Pall
c21c6cb417 FFI: Ensure library is loaded before de-serializing FFI types.
Reported by ImagicTheCat.
2022-01-15 18:32:34 +01:00
Mike Pall
d5a237eae0 Fix HREFK forwarding vs. table.clear().
Reported by XmiliaH.
2022-01-15 17:52:21 +01:00
Mike Pall
bc1bdbf620 Fix FOLD rule for BUFHDR append.
Reported by XmiliaH.
2022-01-13 18:33:04 +01:00
Mike Pall
be251d9149 OSX: Disable unreliable assertion for external frame unwinding. 2022-01-13 17:57:03 +01:00
Mike Pall
4ccaf348fb Merge branch 'master' into v2.1 2022-01-13 17:51:09 +01:00
Mike Pall
e560487536 Limit exponent range in number parsing.
Reported by XmiliaH.
2022-01-13 17:48:43 +01:00
Mike Pall
103c29e634 Fix tonumber("-0") in dual-number mode.
Reported by Sergey Kaplun.
2022-01-13 15:38:56 +01:00
Mike Pall
a01602a826 Limit work done in SINK pass.
Reported by XmiliaH.
2022-01-13 15:13:59 +01:00
Mike Pall
c8bcf1e5fb Fix ABC FOLD rule with constants.
Reported by XmiliaH.
2022-01-13 14:40:11 +01:00
Mike Pall
a91d0d9d3b Merge branch 'master' into v2.1 2021-12-19 18:37:06 +01:00
Mike Pall
e73916d811 Prevent CSE of a REF_BASE operand across IR_RETF.
Reported by XmiliaH.
2021-12-19 18:35:27 +01:00
Mike Pall
1d20f33d29 Windows: Fix binary output of jit.bcsave to stdout.
Thanks to erw7.
2021-12-17 14:30:44 +01:00
Mike Pall
8b7ea5c1af Merge branch 'master' into v2.1 2021-12-17 14:17:16 +01:00
Mike Pall
7b994e0ee0 Fix FOLD rule for x-0.
Reported by XmiliaH.
2021-12-17 14:15:40 +01:00
Mike Pall
b4b2dce9fc ARM64: Fix pcall() error case.
Reported by Alex Orlenko.
2021-10-27 21:56:07 +02:00
Mike Pall
bfcb74ed36 OSX/ARM64: Fix external unwinding.
Contributed by Edmund Kapusniak. #698 #757
2021-10-17 13:14:41 +02:00
Mike Pall
bfd076532c Fix string buffer method recording.
Reported and analyzed by vfprintf. #755
2021-10-12 23:49:47 +02:00
Mike Pall
05f1984e1a Fix interaction of profiler and ITERN recording.
Reported and analyzed by vfprintf. #754
2021-10-08 16:50:35 +02:00
Mike Pall
442eff63ab Fix compilation of multi-result call to next().
Thanks to Vyacheslav Egorov.
2021-10-06 17:31:46 +02:00
Mike Pall
e4b4d94514 ARM64: Fix IR_HREF code generation. 2021-10-02 17:49:50 +02:00
Mike Pall
4a70bd71ac MIPS64: Fix soft-float IR_TOSTR. 2021-10-02 17:48:19 +02:00
Mike Pall
10c9d9a214 Merge branch 'master' into v2.1 2021-10-02 17:23:51 +02:00
Mike Pall
d3294fa63b MIPS: Fix register allocation in assembly of HREF.
Reported by Jakub Piotr Cłapa.
2021-10-02 16:52:57 +02:00
Mike Pall
a2047d3f18 Fix compiler warning.
Suggested by Fezile Manana.
2021-09-29 11:59:27 +02:00
Mike Pall
94a40bb238 FFI: Ensure returned string is alive in ffi.typeinfo().
Reported by zhuizhuhaomeng.
2021-09-23 19:07:30 +02:00
Mike Pall
78350a2565 OSX/ARM64: Disable unwind info.
See #698.
2021-09-21 17:49:06 +02:00
Mike Pall
e2b9797ba1 Merge branch 'master' into v2.1 2021-09-21 16:44:06 +02:00
Mike Pall
204cee2c91 Fix stack allocation after on-trace stack check. 2021-09-21 16:42:35 +02:00
Mike Pall
191d87f531 Fix ITERN blacklisting.
Reported by ExtReMLapin. #744
2021-09-21 14:30:28 +02:00
Mike Pall
1aa4af0b83 Ensure ITERN forward progress on interpreter bailout.
Reported by Yichun Zhang and ExtReMLapin. #744
2021-09-21 13:15:06 +02:00
Mike Pall
421c4c7987 ARM64: Reorder interpreter stack frame and fix unwinding.
Reported by Yichun Zhang. Fixes #722.
May help towards fixing #698, too.
2021-09-20 22:37:07 +02:00
Mike Pall
28440544ba Don't bail out to interpreter to JLOOP originating from ITERN.
Otherwise forward progress is not guaranteed.
Reported by Yichun Zhang.
2021-09-20 14:40:23 +02:00
Mike Pall
003f68565d FFI: Don't load PC from non-function object in FFI continuation.
Reported by Yichun Zhang. #743
2021-09-20 14:39:26 +02:00
Mike Pall
98b7d9a3b2 Merge branch 'master' into v2.1 2021-09-20 14:39:50 +02:00
Mike Pall
68ffbd318b FFI: Don't load PC from non-function object in FFI continuation.
Reported by Yichun Zhang. #743
2021-09-20 14:36:52 +02:00
Mike Pall
a622e2eb55 FFI: Fix missing cts->L initialization in argv2ctype(). 2021-09-20 14:34:47 +02:00
Mike Pall
27ee3bcd79 OSX/ARM64: Disable external unwinding for now.
This reduces functionality, e.g. no handling of on-trace errors.
Someone with very deep knowledge about macOS and MACH-O/DWARF stack
unwinding internals is needed to fix this. See issue #698.
2021-09-19 17:58:24 +02:00
Mike Pall
bb0f241015 Compile table traversals: next(), pairs(), BC_ISNEXT/BC_ITERN.
Sponsored by OpenResty Inc.
2021-09-19 17:49:25 +02:00
Mike Pall
986bb406ad Use IR_HIOP for generalized two-register returns.
Sponsored by OpenResty Inc.
2021-09-19 17:47:11 +02:00
Mike Pall
c6f5ef649b Refactor table traversal.
Sponsored by OpenResty Inc.
2021-09-19 17:38:49 +02:00
Mike Pall
4e0ea654a8 ARM: Fix symbol display in trace disassembly. 2021-09-19 17:27:18 +02:00
Mike Pall
5ee78fd8e3 Refactor IR_TMPREF generation. 2021-09-19 17:25:27 +02:00
Mike Pall
9211f0b03b Refactor IR_VLOAD to take an offset. 2021-09-19 17:18:16 +02:00
Mike Pall
f2d333c1ac MIPS: Fix trace linking. 2021-09-19 16:09:48 +02:00
Mike Pall
8ff09d9f5a String buffers, part 4b: Improve de-serialization checks.
Sponsored by fmad.io.
2021-08-12 21:28:17 +02:00
Mike Pall
15ed84bd49 String buffers, part 4a: Add metatable serialization dictionary.
Sponsored by fmad.io.
2021-08-12 21:27:58 +02:00
Mike Pall
983d66b8c5 Merge branch 'master' into v2.1 2021-07-27 14:50:40 +02:00
Mike Pall
3a654999c6 Consider slots used by upvalues in use-def analysis.
Reported by XmiliaH.
2021-07-27 14:47:41 +02:00
Mike Pall
89a6740ffd Merge branch 'master' into v2.1 2021-07-23 21:36:17 +02:00
Mike Pall
0e66fc9637 Prevent loop in snap_usedef().
Reported by XmiliaH.
2021-07-23 21:33:59 +02:00
Mike Pall
dbb6c39f7c Merge branch 'master' into v2.1 2021-07-22 16:22:53 +02:00
Mike Pall
d87da3d5fe Fix io.close() error message.
Reported by François Perrad.
2021-07-22 16:21:45 +02:00
Mike Pall
bff9298090 Merge branch 'master' into v2.1 2021-07-22 02:35:00 +02:00
Mike Pall
8430f774e6 Fix io.close().
Reported by farmboy0.
2021-07-22 02:33:04 +02:00
Mike Pall
c2dd3b4d34 Merge branch 'master' into v2.1 2021-07-21 12:32:19 +02:00
Mike Pall
81a797373f Fix minilua vararg stack handling.
Note: this is not exploitable! minilua is only used during the LuaJIT
build process. It only runs controlled and static Lua code (DynASM),
which is entirely contained within this repo. LuaJIT itself has
completely different stack handling code and is not affected either.

This change is solely for the benefit of others, who might possibly use
minilua for purposes other than running DynASM.
2021-07-21 12:14:09 +02:00
Mike Pall
bc98a3ade5 PS4: Fix compile.
Thanks to Eric Lavesson.
2021-07-19 18:15:18 +02:00
Mike Pall
4deb5a1588 Merge branch 'master' into v2.1 2021-07-19 17:05:48 +02:00
Mike Pall
6ca580155b Avoid out-of-range number of results when compiling select(k, ...).
The interpreter will throw and abort the trace, anyway.
2021-07-19 17:03:16 +02:00
Mike Pall
29bc1f04ac String buffers, part 3d: Compile string buffer methods and functions.
Sponsored by fmad.io.
2021-07-19 16:53:30 +02:00
Mike Pall
2182630903 Minor improvements of optimizations. 2021-07-19 16:50:05 +02:00
Mike Pall
09547f9f6e Fix error message in lj_lib_checkintrange(). 2021-07-19 16:47:46 +02:00
Mike Pall
a689e9dc43 String buffers, part 2f: Prevent self-put of buffer.
Sponsored by fmad.io.
2021-07-19 16:45:26 +02:00
Mike Pall
02bcbea8b0 String buffers, part 3c: Add IRBUFHDR_WRITE mode.
Sponsored by fmad.io.
2021-07-19 16:46:27 +02:00
Mike Pall
1d5ef35fed Fix IRXLOAD_* mode bits description. 2021-07-19 16:36:00 +02:00
Mike Pall
3a0cf69730 String buffers, part 3b: Change IR_BUFHDR op2 mode bits to mode.
Sponsored by fmad.io.
2021-07-19 16:33:13 +02:00
Mike Pall
6df650fe3f String buffers, part 3a: Add IR_TMPREF for passing TValues to helpers.
Sponsored by fmad.io.
2021-07-19 16:23:12 +02:00
Mike Pall
71db0cf043 Add IRCONV_NONE for pass-through INT to I64/U64 type change. 2021-07-19 16:11:39 +02:00
Mike Pall
76fbf0397c Merge branch 'master' into v2.1 2021-07-19 16:07:23 +02:00
Mike Pall
44bd7437a2 Fix jit.dump() output for IR_CONV. 2021-07-19 16:05:05 +02:00
Mike Pall
e957737650 Disable unreliable assertion for external frame unwinding.
Broken on Fedora/ARM64. Reported by Yichun Zhang.
2021-06-25 12:53:23 +02:00
Mike Pall
95140c5001 Flush and close output file after profiling run.
Thanks to Sergey Ostanevich.
2021-06-25 12:48:42 +02:00
Mike Pall
16d38a4b21 Avoid conflict between 64 bit lightuserdata and ITERN key.
Reported by XmiliaH.
2021-06-25 12:45:51 +02:00
Mike Pall
3f9389edc6 Throw any errors before stack changes in trace stitching.
Thanks to doujiang24.
2021-06-14 14:56:54 +02:00
Mike Pall
ac02a120ef String buffers, part 2e: add serialization string dictionary.
Sponsored by fmad.io.
2021-06-07 12:03:22 +02:00
Mike Pall
52449e2a1e Fix MinGW static build.
Reported by Sundaram Ramaswamy.
2021-06-03 20:28:48 +02:00
Mike Pall
7d267973e2 Fix dependencies. 2021-06-03 10:07:00 +02:00
Mike Pall
65ff33a4af Fix IR_BUFHDR assembly. 2021-06-03 10:05:20 +02:00
Mike Pall
1b7171c339 FFI: Support FFI numbers in string.format() and buf:putf(). 2021-06-03 03:22:58 +02:00
Mike Pall
69138082a3 ARM64: More improvements to the generation of immediates. 2021-06-03 03:21:56 +02:00
Mike Pall
a119497bec String buffers, part 2d: basic string buffer methods.
Sponsored by fmad.io.
2021-06-01 05:16:32 +02:00
Mike Pall
edd5cbadc5 String buffers, part 2c: abstract out string.format.
Sponsored by fmad.io.
2021-06-01 05:14:18 +02:00