Tim Düsterhus
4df911efcb
session: Slightly reorder the members within the module globals
...
The previous ordering resulted in a needlessly large number of holes and split
several `zval`s across cache line boundaries. Do the bare minimum of reordering
to keep related members grouped, but reducing the struct size by 32 bytes and
keeping `zval`s within a single cache line.
Before:
struct _php_session_rfc1867_progress {
size_t sname_len; /* 0 8 */
zval sid; /* 8 16 */
smart_str key; /* 24 16 */
zend_long update_step; /* 40 8 */
zend_long next_update; /* 48 8 */
double next_update_time; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
_Bool cancel_upload; /* 64 1 */
_Bool apply_trans_sid; /* 65 1 */
/* XXX 6 bytes hole, try to pack */
size_t content_length; /* 72 8 */
zval data; /* 80 16 */
zval * post_bytes_processed; /* 96 8 */
zval files; /* 104 16 */
zval current_file; /* 120 16 */
/* --- cacheline 2 boundary (128 bytes) was 8 bytes ago --- */
zval * current_file_bytes_processed; /* 136 8 */
/* size: 144, cachelines: 3, members: 14 */
/* sum members: 138, holes: 1, sum holes: 6 */
/* last cacheline: 16 bytes */
};
struct _php_ps_globals {
char * save_path; /* 0 8 */
char * session_name; /* 8 8 */
zend_string * id; /* 16 8 */
char * extern_referer_chk; /* 24 8 */
char * cache_limiter; /* 32 8 */
zend_long cookie_lifetime; /* 40 8 */
char * cookie_path; /* 48 8 */
char * cookie_domain; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
_Bool cookie_secure; /* 64 1 */
_Bool cookie_httponly; /* 65 1 */
/* XXX 6 bytes hole, try to pack */
char * cookie_samesite; /* 72 8 */
const ps_module * mod; /* 80 8 */
const ps_module * default_mod; /* 88 8 */
void * mod_data; /* 96 8 */
php_session_status session_status; /* 104 4 */
/* XXX 4 bytes hole, try to pack */
zend_string * session_started_filename; /* 112 8 */
uint32_t session_started_lineno; /* 120 4 */
/* XXX 4 bytes hole, try to pack */
/* --- cacheline 2 boundary (128 bytes) --- */
zend_long gc_probability; /* 128 8 */
zend_long gc_divisor; /* 136 8 */
zend_long gc_maxlifetime; /* 144 8 */
int module_number; /* 152 4 */
/* XXX 4 bytes hole, try to pack */
zend_long cache_expire; /* 160 8 */
struct {
zval ps_open; /* 168 16 */
zval ps_close; /* 184 16 */
/* --- cacheline 3 boundary (192 bytes) was 8 bytes ago --- */
zval ps_read; /* 200 16 */
zval ps_write; /* 216 16 */
zval ps_destroy; /* 232 16 */
zval ps_gc; /* 248 16 */
/* --- cacheline 4 boundary (256 bytes) was 8 bytes ago --- */
zval ps_create_sid; /* 264 16 */
zval ps_validate_sid; /* 280 16 */
zval ps_update_timestamp; /* 296 16 */
} mod_user_names; /* 168 144 */
_Bool mod_user_implemented; /* 312 1 */
_Bool mod_user_is_open; /* 313 1 */
/* XXX 6 bytes hole, try to pack */
/* --- cacheline 5 boundary (320 bytes) --- */
zend_string * mod_user_class_name; /* 320 8 */
const struct ps_serializer_struct * serializer; /* 328 8 */
zval http_session_vars; /* 336 16 */
_Bool auto_start; /* 352 1 */
_Bool use_cookies; /* 353 1 */
_Bool use_only_cookies; /* 354 1 */
_Bool use_trans_sid; /* 355 1 */
/* XXX 4 bytes hole, try to pack */
zend_long sid_length; /* 360 8 */
zend_long sid_bits_per_character; /* 368 8 */
_Bool send_cookie; /* 376 1 */
_Bool define_sid; /* 377 1 */
/* XXX 6 bytes hole, try to pack */
/* --- cacheline 6 boundary (384 bytes) --- */
php_session_rfc1867_progress * rfc1867_progress; /* 384 8 */
_Bool rfc1867_enabled; /* 392 1 */
_Bool rfc1867_cleanup; /* 393 1 */
/* XXX 6 bytes hole, try to pack */
char * rfc1867_prefix; /* 400 8 */
char * rfc1867_name; /* 408 8 */
zend_long rfc1867_freq; /* 416 8 */
double rfc1867_min_freq; /* 424 8 */
_Bool use_strict_mode; /* 432 1 */
_Bool lazy_write; /* 433 1 */
_Bool in_save_handler; /* 434 1 */
_Bool set_handler; /* 435 1 */
/* XXX 4 bytes hole, try to pack */
zend_string * session_vars; /* 440 8 */
/* size: 448, cachelines: 7, members: 48 */
/* sum members: 404, holes: 9, sum holes: 44 */
};
After:
struct _php_session_rfc1867_progress {
size_t sname_len; /* 0 8 */
zval sid; /* 8 16 */
smart_str key; /* 24 16 */
zend_long update_step; /* 40 8 */
zend_long next_update; /* 48 8 */
double next_update_time; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
_Bool cancel_upload; /* 64 1 */
_Bool apply_trans_sid; /* 65 1 */
/* XXX 6 bytes hole, try to pack */
size_t content_length; /* 72 8 */
zval data; /* 80 16 */
zval files; /* 96 16 */
zval * post_bytes_processed; /* 112 8 */
zval * current_file_bytes_processed; /* 120 8 */
/* --- cacheline 2 boundary (128 bytes) --- */
zval current_file; /* 128 16 */
/* size: 144, cachelines: 3, members: 14 */
/* sum members: 138, holes: 1, sum holes: 6 */
/* last cacheline: 16 bytes */
};
struct _php_ps_globals {
char * save_path; /* 0 8 */
char * session_name; /* 8 8 */
zend_string * id; /* 16 8 */
char * extern_referer_chk; /* 24 8 */
char * cache_limiter; /* 32 8 */
zend_long cookie_lifetime; /* 40 8 */
char * cookie_path; /* 48 8 */
char * cookie_domain; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
char * cookie_samesite; /* 64 8 */
_Bool cookie_secure; /* 72 1 */
_Bool cookie_httponly; /* 73 1 */
/* XXX 6 bytes hole, try to pack */
const ps_module * mod; /* 80 8 */
const ps_module * default_mod; /* 88 8 */
void * mod_data; /* 96 8 */
php_session_status session_status; /* 104 4 */
/* XXX 4 bytes hole, try to pack */
zend_string * session_started_filename; /* 112 8 */
uint32_t session_started_lineno; /* 120 4 */
int module_number; /* 124 4 */
/* --- cacheline 2 boundary (128 bytes) --- */
zend_long gc_probability; /* 128 8 */
zend_long gc_divisor; /* 136 8 */
zend_long gc_maxlifetime; /* 144 8 */
zend_long cache_expire; /* 152 8 */
struct {
zval ps_open; /* 160 16 */
zval ps_close; /* 176 16 */
/* --- cacheline 3 boundary (192 bytes) --- */
zval ps_read; /* 192 16 */
zval ps_write; /* 208 16 */
zval ps_destroy; /* 224 16 */
zval ps_gc; /* 240 16 */
/* --- cacheline 4 boundary (256 bytes) --- */
zval ps_create_sid; /* 256 16 */
zval ps_validate_sid; /* 272 16 */
zval ps_update_timestamp; /* 288 16 */
} mod_user_names; /* 160 144 */
zend_string * mod_user_class_name; /* 304 8 */
_Bool mod_user_implemented; /* 312 1 */
_Bool mod_user_is_open; /* 313 1 */
_Bool auto_start; /* 314 1 */
_Bool use_cookies; /* 315 1 */
_Bool use_only_cookies; /* 316 1 */
_Bool use_trans_sid; /* 317 1 */
_Bool send_cookie; /* 318 1 */
_Bool define_sid; /* 319 1 */
/* --- cacheline 5 boundary (320 bytes) --- */
const struct ps_serializer_struct * serializer; /* 320 8 */
zval http_session_vars; /* 328 16 */
zend_long sid_length; /* 344 8 */
zend_long sid_bits_per_character; /* 352 8 */
php_session_rfc1867_progress * rfc1867_progress; /* 360 8 */
char * rfc1867_prefix; /* 368 8 */
char * rfc1867_name; /* 376 8 */
/* --- cacheline 6 boundary (384 bytes) --- */
zend_long rfc1867_freq; /* 384 8 */
double rfc1867_min_freq; /* 392 8 */
_Bool rfc1867_enabled; /* 400 1 */
_Bool rfc1867_cleanup; /* 401 1 */
_Bool use_strict_mode; /* 402 1 */
_Bool lazy_write; /* 403 1 */
_Bool in_save_handler; /* 404 1 */
_Bool set_handler; /* 405 1 */
/* XXX 2 bytes hole, try to pack */
zend_string * session_vars; /* 408 8 */
/* size: 416, cachelines: 7, members: 48 */
/* sum members: 404, holes: 3, sum holes: 12 */
/* last cacheline: 32 bytes */
};
2024-03-02 11:29:15 +00:00
Peter Kokot
ffc6f192a8
Simplify port_create Autoconf check ( #13529 )
...
Similar simplification as e72f0c887b .
2024-03-02 00:16:19 +01:00
Peter Kokot
42a4e50513
Sync logical operators in shell scripting code ( #13560 )
...
This updates the obsolescent `-a` and `-o` binary primaries to `&&` and
`||`.
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html
2024-03-01 20:40:16 +01:00
Peter Kokot
b5e2f3a4b6
Check FFI_* ABI with Autoconf AC_CHECK_DECL ( #13552 )
...
The FFI_* calling conventions are enum constants and AC_CHECK_DECL(S)
can be used to check for their existence in the ffi.h header. This
simplifes the checks and adds a simple AC_CHECK_DECL macro wrapper which
defines the HAVE_FFI_* belonging symbols.
2024-03-01 19:31:55 +01:00
Niels Dossche
3c98b1de3a
Merge branch 'PHP-8.3'
...
* PHP-8.3:
Fix GH-11808: Live filesystem modified by tests (security)
2024-03-01 18:46:39 +01:00
Niels Dossche
dfd37c7175
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-11808: Live filesystem modified by tests (security)
2024-03-01 18:46:30 +01:00
Niels Dossche
7c8a3e426e
Fix GH-11808: Live filesystem modified by tests (security)
...
There's a test that tries to make /etc world-writable, and asserts that
it fails. Although this test is guarded by a root user check, there are
situations where you don't need to be root to be able to do this.
This may thus have unwanted effects on your live filesystem.
The simple solution is to remove that part of the test. It doesn't
really add value anyway: we're trying to test the chmod error path, but
that exact same error path can be reached with any failure condition
that the kernel gives. For example, trying to chmod a non-existent file
will trigger the same code path.
While at it, also prefix the test path for the non-existent file such
that we don't accidentally modify the filesystem.
The chroot now has a better root-user check, that will not modify the
filesystem.
Other root-modifying mkdir tests were removed because they added no
value either.
Closes GH-13566.
2024-03-01 18:45:54 +01:00
Peter Kokot
7d0e2d8e4d
Add missing memfd_create Autoconf check for bundled pcre2lib ( #13561 )
...
This moves memfd_create (HAVE_MEMFD_CREATE) to configure.ac. Since
ext/pcre is always enabled and check can be done in this case for
ext/pcre and ext/opcache at once.
2024-03-01 17:17:28 +01:00
Peter Kokot
a48ed12ea9
Find and link network library as needed with AC_SEARCH_LIBS ( #13553 )
...
This prepends -lnetwork as needed (Haiku) whether linker sees the
setsockopt function and avoids defining redundant symbols, such as
HAVE_LIBNETWORK and HAVE_SETSOCKOPT.
2024-02-29 22:04:13 +01:00
David CARLIER
6b6e33ddbe
adding myself as ext/gettext reviewer. ( #13559 )
2024-02-29 20:22:50 +00:00
Tim Düsterhus
61d8c77676
Merge branch 'PHP-8.3'
...
* PHP-8.3:
[ci skip] Fix version for GH-13544 in NEWS
2024-02-29 18:22:08 +01:00
Tim Düsterhus
8ce3478fdd
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
[ci skip] Fix version for GH-13544 in NEWS
2024-02-29 18:21:57 +01:00
Tim Düsterhus
abfe5ffded
[ci skip] Fix version for GH-13544 in NEWS
...
Apparently PHP 8.2.17 was branched off after creating the PR and before merging
it, placing the NEWS in the wrong location.
2024-02-29 18:21:03 +01:00
Tim Düsterhus
54079babf8
Merge branch 'PHP-8.3'
...
* PHP-8.3:
random: Fix unknown `mt_srand()` compatibility for unknown modes (#13544 )
Merge branch 'PHP-8.2' into PHP-8.3
Removed `REPORT_EXIT_STATUS=no` in libmysql tests
Revert "Fix GH-13519: PGSQL_CONNECT_FORCE_RENEW with persistent connections." (#13546 )
2024-02-29 18:15:09 +01:00
Tim Düsterhus
e6c0b09e88
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
random: Fix unknown `mt_srand()` compatibility for unknown modes (#13544 )
Removed `REPORT_EXIT_STATUS=no` in libmysql tests
Revert "Fix GH-13519: PGSQL_CONNECT_FORCE_RENEW with persistent connections." (#13546 )
2024-02-29 18:10:39 +01:00
Tim Düsterhus
e059498c04
random: Fix unknown mt_srand() compatibility for unknown modes ( #13544 )
...
PHP 8.1 and below interpreted unknown modes as `MT_RAND_MT19937`, but PHP 8.2+
interprets them as `MT_RAND_PHP`.
Align the behavior with PHP 8.1 and below, because folks should be steered
towards the standard mode.
2024-02-29 18:05:59 +01:00
Gina Peter Banyard
47a199c8b4
Add http_(get|clear)_last_reponse_headers() functions ( #12500 )
...
This is to provide an alternative to the $http_response_header magic variable
RFC: https://wiki.php.net/rfc/http-last-response-headers
2024-02-29 16:41:09 +00:00
Tim Düsterhus
99e7cf074b
random: Clean up seeding API ( #13540 )
...
* random: Expose xoshiro256**'s seeding functions
* random: Expose pcgoneseq128xslrr64's seeding functions
* random: Expose Mt19937's seeding functions
* random: Expose CombinedLCG's seeding functions
* random: Call php_random_mt19937_seed32 to seed the global Mt19937
This avoids the function pointer indirection and improves type safety.
* random: NULL the generic seeding function
Different engines work quite differently, it is not useful to attempt to seed
them in a generic way using a 64 bit integer. As an example Mt19937 completely
ignores the upper 32 bits.
* random: Remove the `seed` member from `php_random_algo`
See the explanation in the previous commit for the reasoning. This member is
unused since the previous commit and was not consistently available even before
that (specifically for the Secure engine).
* UPGRADING.INTERNALS
* random: Remove useless cast in `php_mt_srand()`
2024-02-29 08:03:35 +01:00
Saki Takamachi
a31edaa99b
Merge branch 'PHP-8.3'
...
* PHP-8.3:
Removed `REPORT_EXIT_STATUS=no` in libmysql tests
2024-02-29 08:49:53 +09:00
Saki Takamachi
116166cd30
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Removed `REPORT_EXIT_STATUS=no` in libmysql tests
2024-02-29 08:49:04 +09:00
Saki Takamachi
99688dbe7a
Removed REPORT_EXIT_STATUS=no in libmysql tests
2024-02-29 08:41:36 +09:00
Peter Kokot
154517eba9
Simplify openpty Autoconf check ( #13494 )
...
This removes redundant symbols HAVE_LIBUTIL and HAVE_LIBBSD.
2024-02-28 20:14:24 +01:00
Peter Kokot
acb677cbcf
Simplify Pgrab and proc library Autoconf check ( #13488 )
...
For Solaris/illumos systems, in this case, the check can be done using
AC_SEARCH_LIBS, which avoids defining redundant symbols like HAVE_PGRAB
and HAVE_LIBPROC.
2024-02-28 18:41:51 +01:00
Gina Peter Banyard
0de88dfb81
ext/spl: mark all zend_object_handlers as static ( #13547 )
2024-02-28 15:31:28 +00:00
Jakub Zelenka
0b7ef9874c
Merge branch 'PHP-8.3'
2024-02-28 11:47:52 +00:00
Jakub Zelenka
47dca339a4
PHP-8.3 is now for PHP-8.3.5-dev
2024-02-28 11:46:49 +00:00
Jakub Zelenka
4bee528e7a
Move back mailinglist-rules.md and release-process.md back to docs
...
Those are likely link from elsewhere so we could keep them
2024-02-28 11:21:26 +00:00
Peter Kokot
98bd66f99e
Simplify clock_gettime Autoconf check ( #13537 )
...
The clock_gettime() is found in libc on modern systems, except on
Solaris <= 10 and possible similar systems, it is in the rt library.
This checks if clock_gettime() exists in the libc, then it checks if rt
library has clock_gettime, prepends it to LIBS and defines the
HAVE_CLOCK_GETTIME symbol with the template from the AC_CHECK_FUNCS.
The ac_cv_func_clock_gettime is a cache variable set by AC_CHECK_FUNCS.
2024-02-28 08:17:37 +01:00
Jakub Zelenka
ba401cf8d9
Remove lefted out test from the revert for GH-13519
2024-02-27 23:27:47 +00:00
David CARLIER
07cbe3083a
Revert "Fix GH-13519: PGSQL_CONNECT_FORCE_RENEW with persistent connections." ( #13546 )
...
This reverts commit b9a9790be0 .
2024-02-27 23:17:17 +00:00
Jakub Zelenka
81dc935945
Merge branch 'PHP-8.3'
2024-02-27 23:08:58 +00:00
Jakub Zelenka
0306983fa4
Merge branch 'PHP-8.2' into PHP-8.3
2024-02-27 23:03:52 +00:00
Jakub Zelenka
330b26e04c
Revert "Fix GH-13519: PGSQL_CONNECT_FORCE_RENEW with persistent connections."
...
This reverts commit b9a9790be0 .
2024-02-27 23:03:28 +00:00
Niels Dossche
1d20fc5fc5
Merge branch 'PHP-8.3'
...
* PHP-8.3:
Fix GH-13531: Unable to resize SplfixedArray after being unserialized in PHP 8.2.15
2024-02-27 23:05:34 +01:00
Niels Dossche
0285395126
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-13531: Unable to resize SplfixedArray after being unserialized in PHP 8.2.15
2024-02-27 23:05:26 +01:00
Jakub Zelenka
6f258f0cd0
Merge branch 'PHP-8.3'
2024-02-27 22:04:36 +00:00
Niels Dossche
8494058a1f
Fix GH-13531: Unable to resize SplfixedArray after being unserialized in PHP 8.2.15
...
When unserializing, the cached_resize field was not reset to -1
correctly, causing the setSize() method to think we were inside of a
resize operation.
Closes GH-13543.
2024-02-27 23:04:23 +01:00
Jakub Zelenka
4dc8c08acd
Merge branch 'PHP-8.2' into PHP-8.3
2024-02-27 22:04:05 +00:00
Jakub Zelenka
3d4b36fc9c
CI: Continue on error if Caddy download fails
...
Closes GH-13542
2024-02-27 22:03:04 +00:00
Niels Dossche
4799321740
Merge branch 'PHP-8.3'
...
* PHP-8.3:
Fix GH-13517: Multiple test failures when building with --with-expat
2024-02-27 21:49:47 +01:00
Niels Dossche
8bb2a15d01
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
Fix GH-13517: Multiple test failures when building with --with-expat
2024-02-27 21:49:39 +01:00
Niels Dossche
552ea62e1f
Fix GH-13517: Multiple test failures when building with --with-expat
...
The reflection failure is because the XML extension is used to check the
module dependency information, but that extension can be configured to
not depend on ext/libxml, resulting in a different output. The solution
is to check another extension instead.
The test failures in ext/xml/tests are because of different behaviour
between libxml2 and Expat error handling. These are expected differences
and the solution is to split the tests.
Closes GH-13522.
2024-02-27 21:49:01 +01:00
Peter Kokot
2ca38d11bb
Remove PHP_CHECK_GCC_ARG ( #13525 )
...
The PHP_CHECK_GCC_ARG has been already removed in PHP 8.0 and this also
removes the error emitting wrapper.
Patches for the solr and vld extensions have been sent upstream.
2024-02-27 18:45:36 +01:00
Gina Peter Banyard
5c7a0abe55
Merge branch 'PHP-8.3'
...
* PHP-8.3:
ext/pdo: Fix various PDORow bugs
2024-02-27 15:32:20 +00:00
Gina Peter Banyard
ddebe469e1
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
ext/pdo: Fix various PDORow bugs
2024-02-27 15:31:48 +00:00
Gina Peter Banyard
b4e272c56a
ext/pdo: Fix various PDORow bugs
...
- Add tests
- NULL derefencing in read_dimension handler
- Fix isset()
- Fix empty() with column numbers as offsets
- Refactoring to use common functions
2024-02-27 15:30:23 +00:00
Sergey Panteleev
0bc05fad65
Merge branch 'PHP-8.3'
...
* PHP-8.3:
PHP-8.2 is now for PHP 8.2.18-dev
2024-02-27 17:28:03 +03:00
Sergey Panteleev
7e938d238f
Merge branch 'PHP-8.2' into PHP-8.3
...
* PHP-8.2:
PHP-8.2 is now for PHP 8.2.18-dev
# Conflicts:
# Zend/zend.h
# configure.ac
# main/php_version.h
2024-02-27 17:27:51 +03:00
Sergey Panteleev
e1a8ebd61b
PHP-8.2 is now for PHP 8.2.18-dev
2024-02-27 17:26:44 +03:00
Marc Bennewitz
9f586f6c69
Fixed int32 underflow on DateTime::createFromTimestamp ( #12775 )
...
* Fixed int32 underflow on DateTime::createFromTimestamp
2024-02-27 14:01:49 +00:00