|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2020-12-29 19:23 UTC] dktapps at pmmp dot io
Description: ------------ zend_jit_x86.c contents is different depending on whether ZTS is enabled or not. This becomes a problem when first configuring without ZTS and `make`ing, and then reconfiguring with ZTS and `make`ing again (or vice versa). `make clean` doesn't make any difference. This can be reproduced using the following on any 8.0.0 git source: ``` ./configure make ./configure --enable-zts make ``` As stated above `make clean` makes no difference to this particular issue. Expected result: ---------------- Compilation should succeed without issues. Ideally, the build should automatically rebuild `zend_jit_x86.c` when it detects configuration changes. However, `make clean` should wipe out the file in any case. Actual result: -------------- Compilation fails with a giant spam of ZTS-related globals errors. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Dec 02 18:00:01 2025 UTC |
Correction: `make clean` after the first `make` is required to be able to observe the issue, since otherwise all you'll see is linker errors unrelated to this problem. In file included from /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit.c:217: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_interrupt_handler_stub’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:1730:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 1730 | | //if (EG(timed_out)) { | ^~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:1730:18: note: each undeclared identifier is reported only once for each function it appears in 1730 | | //if (EG(timed_out)) { | ^~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_exception_handler_undef_stub’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:1812:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 1812 | | jnz >1 | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_leave_throw_stub’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:1863:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 1863 | | // opline = EG(exception_op); | ^~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_icall_throw_stub’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:1897:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 1897 | | // opline = EG(exception_op); | ^~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_hybrid_hot_trace_stub’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:2356:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 2356 | | JMP_IP | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_trace_exit_stub’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:2502:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 2502 | | // opline = EX(opline) | ^~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_check_timeout’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:3073:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 3073 | |1: | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_trace_end_loop’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:3086:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 3086 | | je =>loop_label | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_check_exception’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:3097:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 3097 | | jne ->exception_handler | ^~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_check_exception_undef_result’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:3105:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 3105 | | jne ->exception_handler_undef | ^~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_trace_begin’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:3151:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 3151 | } else { | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_trace_link_to_root’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:3374:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 3374 | | je &link_addr | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_trace_handler’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:3476:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 3476 | | jne ->exception_handler | ^~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ In file included from /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit.c:217: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_fetch_dimension_address_inner’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:5477:23: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 5477 | |.else | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_assign_to_typed_ref’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:5896:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 5896 | | je >8 // END OF zend_jit_assign_to_variable() | ^~~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_assign_to_variable’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:6056:22: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 6056 | | je >8 | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_assign_dim’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:6184:20: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 6184 | | EXT_CALL zend_hash_next_index_insert, r0 | ^~~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_assign_dim_op’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:6415:20: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 6415 | | EXT_CALL zend_hash_next_index_insert, r0 | ^~~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_cmp’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:7700:20: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 7700 | |1: | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_identical’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:7830:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 7830 | | jmp >1 | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_bool_jmpznz’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:8533:20: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 8533 | | jne ->exception_handler_undef | ^~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_stack_check’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:8683:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 8683 | | MEM_OP2_2_ZTS sub, r1, aword, executor_globals, vm_stack_top, r0 | ^~~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_push_call_frame’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:8732:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 8732 | | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_do_fcall’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:9845:23: error: ‘compiler_globals’ undeclared (first use in this function); did you mean ‘compiler_globals_id’? 9845 | | test r2, 1 | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:9867:19: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 9867 | | mov FP, RX | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ In file included from /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit.c:217: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_defined’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:10755:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 10755 | | cmp dword [FCARG1a + offsetof(HashTable, nNumOfElements)], eax | ^~~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_leave_frame’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:11108:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 11108 | } | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_leave_func’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:11199:21: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 11199 | } | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_fetch_dim’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:11990:20: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 11990 | | EXT_CALL zend_hash_next_index_insert, r0 | ^~~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_bind_global’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:12299:18: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 12299 | | shl r1, 5 | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc: In function ‘zend_jit_verify_return_type’: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:14653:20: error: ‘executor_globals’ undeclared (first use in this function); did you mean ‘executor_globals_id’? 14653 | } | ^ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:168:38: note: in definition of macro ‘IS_32BIT’ 168 | #define IS_32BIT(addr) (((uintptr_t)(addr)) <= 0xffffffff) | ^~~~ In file included from /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit.c:217: At top level: /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:147:15: warning: ‘tsrm_tls_offset’ defined but not used [-Wunused-variable] 147 | static size_t tsrm_tls_offset; | ^~~~~~~~~~~~~~~ /home/user/php-build-8.0/php-8.0.0/ext/opcache/jit/zend_jit_x86.dasc:146:15: warning: ‘tsrm_tls_index’ defined but not used [-Wunused-variable] 146 | static size_t tsrm_tls_index; | ^~~~~~~~~~~~~~ make: *** [Makefile:897: ext/opcache/jit/zend_jit.lo] Error 1