Clang 19 has become more strict about incompatible function pointer types, which results in an error building mod_perl2 on i386: modperl_common_util.c:57:53: error: incompatible function pointer types initializing 'int (*)(PerlInterpreter *, SV *, MAGIC *, SV *, const char *, I32)' (aka 'int (*)(struct interpreter *, struct sv *, struct magic *, struct sv *, const char *, long)') with an expression of type 'int (PerlInterpreter *, SV *, MAGIC *, SV *, const char *, int)' (aka 'int (struct interpreter *, struct sv *, struct magic *, struct sv *, const char *, int)') [-Wincompatible-function-pointer-types] 57 | modperl_table_magic_copy}; | ^~~~~~~~~~~~~~~~~~~~~~~~ Perl uses the type `I32` for the last parameter, which is apparently `long` on i386. So use that instead.
Created attachment 253670 [details] www/mod_perl2: fix build with clang 19 on i386
A commit in branch main references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=99f25aaa64395af55a872fc6cf77127f5f0e4997 commit 99f25aaa64395af55a872fc6cf77127f5f0e4997 Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-09-19 19:41:23 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-09-28 13:29:45 +0000 www/mod_perl2: fix build with clang 19 on i386 Clang 19 has become more strict about incompatible function pointer types, which results in an error building mod_perl2 on i386: modperl_common_util.c:57:53: error: incompatible function pointer types initializing 'int (*)(PerlInterpreter *, SV *, MAGIC *, SV *, const char *, I32)' (aka 'int (*)(struct interpreter *, struct sv *, struct magic *, struct sv *, const char *, long)') with an expression of type 'int (PerlInterpreter *, SV *, MAGIC *, SV *, const char *, int)' (aka 'int (struct interpreter *, struct sv *, struct magic *, struct sv *, const char *, int)') [-Wincompatible-function-pointer-types] 57 | modperl_table_magic_copy}; | ^~~~~~~~~~~~~~~~~~~~~~~~ Perl uses the type `I32` for the last parameter, which is apparently `long` on i386. So use that instead. PR: 281594 MFH: 2024Q3 .../patch-src_modules_perl_modperl__common__util.c (new) | 11 +++++++++++ 1 file changed, 11 insertions(+)
A commit in branch 2024Q3 references this bug: URL: https://cgit.FreeBSD.org/ports/commit/?id=b5e7a8ad3ae02963d086ef16fc5e1312b4297255 commit b5e7a8ad3ae02963d086ef16fc5e1312b4297255 Author: Dimitry Andric <dim@FreeBSD.org> AuthorDate: 2024-09-19 19:41:23 +0000 Commit: Dimitry Andric <dim@FreeBSD.org> CommitDate: 2024-09-28 13:38:32 +0000 www/mod_perl2: fix build with clang 19 on i386 Clang 19 has become more strict about incompatible function pointer types, which results in an error building mod_perl2 on i386: modperl_common_util.c:57:53: error: incompatible function pointer types initializing 'int (*)(PerlInterpreter *, SV *, MAGIC *, SV *, const char *, I32)' (aka 'int (*)(struct interpreter *, struct sv *, struct magic *, struct sv *, const char *, long)') with an expression of type 'int (PerlInterpreter *, SV *, MAGIC *, SV *, const char *, int)' (aka 'int (struct interpreter *, struct sv *, struct magic *, struct sv *, const char *, int)') [-Wincompatible-function-pointer-types] 57 | modperl_table_magic_copy}; | ^~~~~~~~~~~~~~~~~~~~~~~~ Perl uses the type `I32` for the last parameter, which is apparently `long` on i386. So use that instead. PR: 281594 MFH: 2024Q3 (cherry picked from commit 99f25aaa64395af55a872fc6cf77127f5f0e4997) .../patch-src_modules_perl_modperl__common__util.c (new) | 11 +++++++++++ 1 file changed, 11 insertions(+)