George Peter Banyard
b40ae80804
Convert iterable into an internal alias for Traversable|array ( #7309 )
...
This does a compile time transformation of ``iterable`` into ``Traversable|array`` which simplifies some of the LSP variance handling.
The arginfo generation script from stubs is updated to produce a union type when it encounters the type ``iterable``
Extension functions which do not regenerate the arginfo, or write them manually are still supported by mimicking the compile time transformation while registering the function.
Type Reflection is preserved for single ``iterable`` (and ``?iterable``) to produce a ReflectionNamedType with name ``iterable``, however usage of ``iterable`` in union types will be converted to ``array|Traversable``
2022-06-07 13:35:34 +01:00
Ilija Tovilo
3f557ebd77
Revert "JIT: Add IBT support ( #8636 )"
...
This reverts commit c1fcd45eeb .
Closes GH-8711
2022-06-06 11:59:26 +02:00
Levi Morrison
280fd680c8
Make vm_interrupt and timed_out atomic ( #8327 )
...
This is done by adding a new zend_atomic_bool type. The type
definition is only available for compiler alignment and size info; it
should be treated as opaque and only the zend_atomic_bool_* family of
functions should be used.
Note that directly using atomic_bool is complicated. All C++ compilers
stdlibs that I checked typedef atomic_bool to std::atomic<bool>, which
can't be used in an extern "C" section, and there's at least one usage
of this in core, and probably more outside of it.
So, instead use platform specific functions, preferring compiler
intrinsics.
2022-06-01 09:43:25 -06:00
Chen, Hu
c1fcd45eeb
JIT: Add IBT support ( #8636 )
...
Indirect Branch Tracking (IBT) is part of Intel's Control-Flow
Enforcement Technology (CET). IBT is hardware based, forward edge
Control-Flow-Integrity mechanism where any indirect CALL/JMP must target
an ENDBR instruction or suffer #CP.
This commit adds IBT support for JIT:
1. Add endbr32/64 instruction in Dynasm.
2. Insert endbr32/64 in indirect branch target for jitted code.
gcc support CET since v8.1 and set it to default since gcc 11. With this
commit, endbr is inserted in jitted code if PHP is compiled with "gcc
-fcf-protection=full/branch".
Signed-off-by: Chen, Hu <hu1.chen@intel.com >
2022-05-31 09:29:40 +03:00
Dmitry Stogov
e2e2d29973
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix memory leak
2022-05-30 11:39:24 +03:00
Dmitry Stogov
7ebda198ea
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix memory leak
2022-05-30 11:39:10 +03:00
Dmitry Stogov
3a8912fb7c
Fix memory leak
...
This fixes oss-fuzz #47648
2022-05-30 11:32:17 +03:00
Arnaud Le Blanc
2f78af397c
Merge branch 'PHP-8.1'
...
* PHP-8.1:
[ci skip] NEWS
Add JIT guards for INIT_METHOD_CALL when the method may be modified (#8600 )
2022-05-27 13:19:31 +02:00
Arnaud Le Blanc
69d263e2a1
Add JIT guards for INIT_METHOD_CALL when the method may be modified ( #8600 )
...
Non-polymorphic methods can be modified from one request to an other due to recompilation or conditional declaration.
Fixes GH-8591
Co-authored-by: Oleg Stepanischev <Oleg.Stepanischev@tatar.ru >
2022-05-27 13:15:15 +02:00
Christoph M. Becker
06c3f9b043
Use proper cast
...
Casting to `void**` silences the compiler, but only works because that
is dereferenced to a generic `void*`.
2022-05-24 14:52:32 +02:00
Michael Voříšek
fb1c7eff04
Fix some level 1 MSVC compiler warnings on x86
...
See GH-8479.
2022-05-24 13:05:16 +02:00
Dmitry Stogov
f9483708c7
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Add JIT guards for INIT_FCALL instructions and functions that may be modified
2022-05-12 18:46:12 +03:00
Dmitry Stogov
6c25413183
Add JIT guards for INIT_FCALL instructions and functions that may be modified
...
For methods we reuse mechanism of polymorphic calls.
For regular function we invalidate the whole root trace.
This fixes https://github.com/php/php-src/issues/8461
2022-05-12 18:44:12 +03:00
Dmitry Stogov
dc374a0b22
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fixed incorrect guard
2022-04-18 11:35:08 +03:00
Dmitry Stogov
c3a30544ad
JIT: Fixed incorrect guard
...
Fixes oss-fuzz #46704
2022-04-18 11:34:18 +03:00
Dmitry Stogov
106c908db5
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix memory lek
2022-04-11 12:21:09 +03:00
Dmitry Stogov
8633893330
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix memory lek
2022-04-11 12:21:02 +03:00
Dmitry Stogov
3aaf2f6f89
JIT: Fix memory lek
...
Fixes oss-fuzz #46462
2022-04-11 12:17:05 +03:00
Dmitry Stogov
ccef2bc435
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Tracing JIT: Fixed incorrect assumption about stack slot type
2022-04-11 11:45:32 +03:00
Dmitry Stogov
69bcd93190
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Tracing JIT: Fixed incorrect assumption about stack slot type
2022-04-11 11:42:56 +03:00
Dmitry Stogov
5b048dd05c
Tracing JIT: Fixed incorrect assumption about stack slot type
...
Fixes oss-fuzz #46404
2022-04-11 11:42:01 +03:00
Dmitry Stogov
db34e2a68e
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Trcing JIT: remove unchecked type guards om ROPE_* instructions
2022-04-04 15:08:01 +03:00
Dmitry Stogov
33704be5f2
Trcing JIT: remove unchecked type guards om ROPE_* instructions
...
Fixes oss-fuzz #46209
2022-04-04 15:06:35 +03:00
Dmitry Stogov
6156505697
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fixed incorrect code generation
2022-04-04 14:24:32 +03:00
Dmitry Stogov
24bb178310
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fixed incorrect code generation
2022-04-04 14:24:10 +03:00
Dmitry Stogov
0d44bbd212
JIT: Fixed incorrect code generation
...
Fixes oss-fuzz #46328
2022-04-04 14:20:45 +03:00
Dmitry Stogov
2d3415a74a
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fixed memory leak
2022-03-25 16:56:08 +03:00
Dmitry Stogov
7aac1c11ee
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fixed memory leak
2022-03-25 16:55:37 +03:00
Dmitry Stogov
aa352c2c54
JIT: Fixed memory leak
...
Fixes oss-fuzz #45981
2022-03-25 16:54:50 +03:00
Dmitry Stogov
0ba92163a0
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix register clobbering
2022-03-21 16:13:13 +03:00
Dmitry Stogov
62a1c068fe
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix register clobbering
2022-03-21 16:13:04 +03:00
Dmitry Stogov
cf83bdd925
JIT: Fix register clobbering
...
Fixes oss-fuzz #45590
2022-03-21 16:08:52 +03:00
Dmitry Stogov
159a89b87d
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix missing type store
2022-03-21 14:07:47 +03:00
Dmitry Stogov
21b0da8cdf
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix missing type store
2022-03-21 14:07:34 +03:00
Dmitry Stogov
e9fc81a2f8
JIT: Fix missing type store
...
Fixes oss-fuzz #45604
2022-03-21 13:34:46 +03:00
Dmitry Stogov
7947095b64
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix memory leak
2022-03-21 12:54:18 +03:00
Dmitry Stogov
2198493f12
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix memory leak
2022-03-21 12:51:10 +03:00
Dmitry Stogov
7051dc3372
JIT: Fix memory leak
...
Fixes oss-fuzz #45658
2022-03-21 12:50:30 +03:00
Dmitry Stogov
e85f812378
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix missing exception handling
2022-03-18 18:56:58 +03:00
Dmitry Stogov
83ab9cf871
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix missing exception handling
2022-03-18 18:56:02 +03:00
Dmitry Stogov
3d6a7e2bd5
JIT: Fix missing exception handling
...
Fixes oss-fuzz #45649
2022-03-18 18:54:47 +03:00
Dmitry Stogov
981ae10bf9
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix register allocation
2022-03-14 11:48:11 +03:00
Dmitry Stogov
2bed115336
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix register allocation
2022-03-14 11:47:27 +03:00
Dmitry Stogov
e20f955e44
JIT: Fix register allocation
...
Fixes oss-fuzz #45487
2022-03-14 11:46:45 +03:00
Dmitry Stogov
0d80bc2abd
Merge branch 'PHP-8.1'
...
* PHP-8.1:
JIT: Fix type store
2022-03-14 09:51:58 +03:00
Dmitry Stogov
2862553de7
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
JIT: Fix type store
2022-03-14 09:51:49 +03:00
Dmitry Stogov
9792f0db76
JIT: Fix type store
...
Fixes oss-fuzz #45190
2022-03-14 09:48:58 +03:00
Christoph M. Becker
6b2187bc79
Merge branch 'PHP-8.1'
...
* PHP-8.1:
Fix GH-8160: ZTS support on Alpine is broken
2022-03-11 14:42:49 +01:00
Christoph M. Becker
0b1bca6b9c
Merge branch 'PHP-8.0' into PHP-8.1
...
* PHP-8.0:
Fix GH-8160: ZTS support on Alpine is broken
2022-03-11 14:41:46 +01:00
Michael Voříšek
2b2aeb989e
Fix GH-8160: ZTS support on Alpine is broken
...
We need to export `__MUSL__` so that phpize builds can see the proper
macro, and also need to fix "_tsrm_ls_cache" usage for musl.
Closes GH-8180.
2022-03-11 14:39:39 +01:00