Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Baruch Siach via buildroot <buildroot@buildroot.org>
To: Thomas Perale via buildroot <buildroot@buildroot.org>
Cc: "Alexis Lothoré" <alexis.lothore@bootlin.com>,
	"Thomas Perale" <thomas.perale@mind.be>
Subject: Re: [Buildroot] [PATCH v3] package/php-lua: fix build with PHP8/GCC14
Date: Mon, 08 Sep 2025 14:20:22 +0300	[thread overview]
Message-ID: <87ldmpgphl.fsf@tarshish> (raw)
In-Reply-To: <20250908105540.681404-1-thomas.perale@mind.be> (Thomas Perale via buildroot's message of "Mon, 8 Sep 2025 12:55:40 +0200")

Hi Thomas,

On Mon, Sep 08 2025, Thomas Perale via buildroot wrote:
> In reply of:
>> On both Buildroot 2025.02.x and master branch, php-lua build fails on
>> the following error:
>> 
>> lua.c:862:44: error: assignment to 'zend_object_write_property_t' {aka
>> 'struct _zval_struct * (*)(struct _zend_object *, struct _zend_string *,
>> struct _zval_struct *, void **)'} from incompatible pointer type 'void
>> (*)(zval *, zval *, zval *, void **)' {aka 'void (*)(struct _zval_struct
>> *, struct _zval_struct *, struct _zval_struct *, void **)'}
>> [-Wincompatible-pointer-types]
>>   862 |         lua_object_handlers.write_property =
>> php_lua_write_property;
>>       |                                            ^
>> lua.c:863:44: error: assignment to 'zend_object_read_property_t' {aka
>> 'struct _zval_struct * (*)(struct _zend_object *, struct _zend_string *,
>> int,  void **, struct _zval_struct *)'} from incompatible pointer type
>> 'zval * (*)(zval *, zval *, int,  void **, zval *)' {aka 'struct
>> _zval_struct * (*)(struct _zval_struct *, struct _zval_struct *, int,
>> void **, struct _zval_struct *)'} [-Wincompatible-pointer-types]
>>   863 |         lua_object_handlers.read_property  =
>> php_lua_read_property;
>>       |                                            ^
>> make[2]: *** [Makefile:214: lua.lo] Error 1
>> 
>> The error can be reproduced with the following minimal defconfig:
>> 
>> BR2_arm=y
>> BR2_cortex_a9=y
>> BR2_ARM_ENABLE_NEON=y
>> BR2_ARM_ENABLE_VFP=y
>> BR2_ARM_FPU_NEON=y
>> BR2_TOOLCHAIN_EXTERNAL=y
>> BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
>> BR2_PACKAGE_LUA=y
>> BR2_PACKAGE_PHP=y
>> BR2_PACKAGE_PHP_LUA=y
>> 
>> This build failure is the result of two events/conditions:
>> - the update to PHP8 has changed the prototype for
>>   zend_object_read_property_t (see [1]). But at this time, php-lua just
>>   generated a new warning (-Wincompatible-pointer-types)
>> - using bootlin bleeding-edge toolchain brings in GCC14, which now turns
>>   this warning into a systematic error (see [2])
>> 
>> This issue is still present on the upstream repository, but it has been
>> fixed on one of its forks. Bring the relevant patch from the fork to
>> allow building php-lua.
>> 
>> [1] https://github.com/php/php-src/commit/91ef4124e56
>> [2] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types
>> 
>> Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
>
> Applied to 2025.02.x & 2025.05.x. Thanks

Not in 2025.02.x as of commit 2d5c298d5a35 ("package/iperf3: add patch
to fix CVE-2025-54350").

Also not in 2025.05.x as of commit 6f191b4dcc80 ("package/cpp-httplib:
add patch for CVE-2025-46728").

baruch

>> ---
>> Changes in v3:
>> - Added empty Upstream tag
>> - Link to v2: https://lore.kernel.org/r/20250806-php-lua-v2-1-a73faad939e9@bootlin.com
>> 
>> Changes in v2:
>> - update commit title 
>> - add more details about the conditions leading to the build failure
>> - add minimal defconfig
>> - Link to v1: https://lore.kernel.org/r/20250806-php-lua-v1-1-e1f524fed0a5@bootlin.com
>> ---
>>  ...-write-properly-read-property-was-changed.patch | 79 ++++++++++++++++++++++
>>  1 file changed, 79 insertions(+)
>> 
>> diff --git
>> a/package/php-lua/0003-php8-Signature-of-write-properly-read-property-was-changed.patch
>> b/package/php-lua/0003-php8-Signature-of-write-properly-read-property-was-changed.patch
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..c1357b591b5b794b1eecf7cb02609a21de615b4c
>> --- /dev/null
>> +++ b/package/php-lua/0003-php8-Signature-of-write-properly-read-property-was-changed.patch
>> @@ -0,0 +1,79 @@
>> +From de1068d634519abf2461dac9427b5ff24b6603af Mon Sep 17 00:00:00 2001
>> +From: Mikhail Galanin <mikhail.galanin@team.bumble.com>
>> +Date: Tue, 24 Aug 2021 08:28:47 +0100
>> +Subject: [PATCH] php8: Signature of write_property/read_property was changed
>> + in https://github.com/php/php-src/commit/91ef4124e56
>> +
>> +Taken from https://github.com/badoo/php-lua/pull/8
>> +
>> +Upstream: n/a
>> +Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
>> +---
>> + lua.c | 28 ++++++++++++++--------------
>> + 1 file changed, 14 insertions(+), 14 deletions(-)
>> +
>> +diff --git a/lua.c b/lua.c
>> +index edc2868..32c1471 100755
>> +--- a/lua.c
>> ++++ b/lua.c
>> +@@ -229,46 +229,46 @@ zend_object *php_lua_create_object(zend_class_entry *ce)
>> + 
>> + /** {{{ static zval * php_lua_read_property(zval *object, zval *member, int type)
>> + */
>> +-zval *php_lua_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv){
>> +-	lua_State *L = (Z_LUAVAL_P(object))->L;
>> +-	zend_string *str_member;
>> ++zval *php_lua_read_property(zend_object *object, zend_string *member, int type, void **cache_slot, zval *rv){
>> ++	lua_State *L = php_lua_obj_from_obj(object)->L;
>> + 
>> + 	if (type != BP_VAR_R) {
>> + 		ZVAL_NULL(rv);
>> + 		return rv;
>> + 	}
>> + 
>> +-	str_member = zval_get_string(member);
>> + #if (LUA_VERSION_NUM < 502)
>> +-	lua_getfield(L, LUA_GLOBALSINDEX, ZSTR_VAL(str_member));
>> ++	lua_getfield(L, LUA_GLOBALSINDEX, ZSTR_VAL(member));
>> + #else
>> +-	lua_getglobal(L, ZSTR_VAL(str_member));
>> ++	lua_getglobal(L, ZSTR_VAL(member));
>> + #endif
>> +-	zend_string_release(str_member);
>> + 
>> +-	php_lua_get_zval_from_lua(L, -1, object, rv);
>> ++	zval lua_zval_object;
>> ++	ZVAL_OBJ(&lua_zval_object, object);
>> ++
>> ++	php_lua_get_zval_from_lua(L, -1, &lua_zval_object, rv);
>> + 	lua_pop(L, 1);
>> ++
>> + 	return rv;
>> + }
>> + /* }}} */
>> + 
>> + /** {{{ static void php_lua_write_property(zval *object, zval *member, zval *value)
>> + */
>> +-static void php_lua_write_property(zval *object, zval *member, zval *value, void ** key) {
>> +-	lua_State *L = (Z_LUAVAL_P(object))->L;
>> +-	zend_string *str_member = zval_get_string(member);
>> ++static zval* php_lua_write_property(zend_object *object, zend_string *member, zval *value, void ** key) {
>> ++	lua_State *L = php_lua_obj_from_obj(object)->L;
>> + 
>> + #if (LUA_VERSION_NUM < 502)
>> +-	php_lua_send_zval_to_lua(L, member);
>> ++	lua_pushlstring(L, ZSTR_VAL(val), ZSTR_LEN(val));
>> + 	php_lua_send_zval_to_lua(L, value);
>> + 
>> + 	lua_settable(L, LUA_GLOBALSINDEX);
>> + #else
>> + 	php_lua_send_zval_to_lua(L, value);
>> +-	lua_setglobal(L, Z_STRVAL_P(member));
>> ++	lua_setglobal(L, ZSTR_VAL(member));
>> + #endif
>> + 
>> +-	zend_string_release(str_member);
>> ++	return value;
>> + }
>> + /* }}} */
>> + 
>> 
>> ---
>> base-commit: 2fd520c8d52b9e0ed5e26343813fdd8dbcadb45f
>> change-id: 20250806-php-lua-39895d4fe179
>> 
>> Best regards,
>> -- 
>> Alexis Lothoré, Bootlin
>> Embedded Linux and Kernel engineering
>> https://bootlin.com
>> 
>> _______________________________________________
>> buildroot mailing list
>> buildroot@buildroot.org
>> https://lists.buildroot.org/mailman/listinfo/buildroot
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2025-09-08 11:20 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-11  7:52 [Buildroot] [PATCH v3] package/php-lua: fix build with PHP8/GCC14 Alexis Lothoré via buildroot
2025-08-24 15:36 ` Romain Naour via buildroot
2025-08-25 14:53   ` Alexis Lothoré via buildroot
2025-09-06 22:17     ` Romain Naour via buildroot
2025-09-08  6:40       ` Alexis Lothoré via buildroot
2025-09-08 10:55 ` Thomas Perale via buildroot
2025-09-08 11:20   ` Baruch Siach via buildroot [this message]
2025-09-08 13:13     ` Thomas Perale via buildroot
2025-09-08 13:32       ` Baruch Siach via buildroot
2025-09-10  8:36       ` Romain Naour via buildroot
2025-09-19 12:56 ` Thomas Perale via buildroot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ldmpgphl.fsf@tarshish \
    --to=buildroot@buildroot.org \
    --cc=alexis.lothore@bootlin.com \
    --cc=baruch@tkos.co.il \
    --cc=thomas.perale@mind.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox