1
0
mirror of https://github.com/php/php-src.git synced 2026-04-20 14:31:06 +02:00
Commit Graph

1671 Commits

Author SHA1 Message Date
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