Closed p5pRT closed 6 years ago
This is a 5.28 blocker.
Round #2 of https://rt.perl.org/Public/Bug/Display.html?id=133098 .
The patch "fix -DNO_MATHOMS build\, mathomed syms were not removed from perldll.def" breaks a WITH_MATHOMS (not a define) win32 build. I didn't test on my main machine a WITH_MATHOMS (default) build before submitting the patch but I tested today on another machine and got breakage. ----------------------------------------------- cl -c -nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DPERL_HASH_FUNC_ONE_AT_A_TIME -DPERL_DISABLE_PMC -DPERL _IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D_USE_32 BIT_TIME_T -O1 -MD -Zi -DNDEBUG -GL -DVERSION=\"0.97\" -DXS_VERSION=\"0.97\" "-I..\..\lib\CORE" APItest.c APItest.c "..\..\miniperl.exe" "-I..\..\lib" "C:\perl521\srcnew\dist\ExtUtils-ParseXS\lib\ ExtUtils/xsubpp" -typemap C:\perl521\srcnew\lib\ExtUtils\typemap -typemap C:\pe rl521\srcnew\ext\XS-APItest\typemap XSUB-undef-XS_VERSION.xs > XSUB-undef-XS_VE RSION.xsc C:\perl521\srcnew\miniperl.exe "-I..\..\lib" -MExtUtils::Command -e mv -- XSUB-u ndef-XS_VERSION.xsc XSUB-undef-XS_VERSION.c cl -c -nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DPERL_HASH_FUNC_ONE_AT_A_TIME -DPERL_DISABLE_PMC -DPERL _IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D_USE_32 BIT_TIME_T -O1 -MD -Zi -DNDEBUG -GL -DVERSION=\"0.97\" -DXS_VERSION=\"0.97\" "-I..\..\lib\CORE" XSUB-undef-XS_VERSION.c XSUB-undef-XS_VERSION.c "..\..\miniperl.exe" "-I..\..\lib" "C:\perl521\srcnew\dist\ExtUtils-ParseXS\lib\ ExtUtils/xsubpp" -typemap C:\perl521\srcnew\lib\ExtUtils\typemap -typemap C:\pe rl521\srcnew\ext\XS-APItest\typemap XSUB-redefined-macros.xs > XSUB-redefined-m acros.xsc C:\perl521\srcnew\miniperl.exe "-I..\..\lib" -MExtUtils::Command -e mv -- XSUB-r edefined-macros.xsc XSUB-redefined-macros.c cl -c -nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DPERL_HASH_FUNC_ONE_AT_A_TIME -DPERL_DISABLE_PMC -DPERL _IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D_USE_32 BIT_TIME_T -O1 -MD -Zi -DNDEBUG -GL -DVERSION=\"0.97\" -DXS_VERSION=\"0.97\" "-I..\..\lib\CORE" XSUB-redefined-macros.c XSUB-redefined-macros.c cl -c -nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DPERL_HASH_FUNC_ONE_AT_A_TIME -DPERL_DISABLE_PMC -DPERL _IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D_USE_32 BIT_TIME_T -O1 -MD -Zi -DNDEBUG -GL -DVERSION=\"0.97\" -DXS_VERSION=\"0.97\" "-I..\..\lib\CORE" core.c core.c cl -c -nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DPERL_HASH_FUNC_ONE_AT_A_TIME -DPERL_DISABLE_PMC -DPERL _IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D_USE_32 BIT_TIME_T -O1 -MD -Zi -DNDEBUG -GL -DVERSION=\"0.97\" -DXS_VERSION=\"0.97\" "-I..\..\lib\CORE" exception.c exception.c cl -c -nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DPERL_HASH_FUNC_ONE_AT_A_TIME -DPERL_DISABLE_PMC -DPERL _IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D_USE_32 BIT_TIME_T -O1 -MD -Zi -DNDEBUG -GL -DVERSION=\"0.97\" -DXS_VERSION=\"0.97\" "-I..\..\lib\CORE" notcore.c notcore.c "..\..\miniperl.exe" "-I..\..\lib" -MExtUtils::Mksymlists \ -e "Mksymlists('NAME'=>\"XS::APItest\"\, 'DLBASE' => 'APItest'\, 'DL_FUNCS' =
{ }\, 'FUNCLIST' => []\, 'IMPORTS' => { }\, 'DL_VARS' => []);" link -out:..\..\lib\auto\XS\APItest\APItest.dll -dll -nologo -nodefaultlib -debu g -opt:ref\,icf -ltcg -libpath:"c:\perl\lib\CORE" -machine:x86 APItest.obj XSUB-u ndef-XS_VERSION.obj XSUB-redefined-macros.obj core.obj exception.obj notcore.obj "..\..\lib\CORE\perl527.lib" oldnames.lib kernel32.lib user32.lib gdi32.lib w inspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi3 2.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib -def:APItest.def Creating library ..\..\lib\auto\XS\APItest\APItest.lib and object ..\..\lib\a uto\XS\APItest\APItest.exp APItest.obj : error LNK2001: unresolved external symbol __imp__Perl_to_utf8_titl e APItest.obj : error LNK2001: unresolved external symbol __imp__Perl_to_utf8_fold
APItest.obj : error LNK2001: unresolved external symbol __imp__Perl_to_utf8_lowe r APItest.obj : error LNK2001: unresolved external symbol __imp__Perl_to_utf8_uppe r ..\..\lib\auto\XS\APItest\APItest.dll : fatal error LNK1120: 4 unresolved extern als makefile:483: recipe for target '..\..\lib\auto\XS\APItest\APItest.dll' failed gmake[1]: *** [..\..\lib\auto\XS\APItest\APItest.dll] Error 1120 gmake[1]: Leaving directory 'C:/perl521/srcnew/ext/XS-APItest' Unsuccessful make(ext/XS-APItest): code=512 at ..\make_ext.pl line 570. GNUmakefile:1578: recipe for target 'Extensions' failed gmake: *** [Extensions] Error 2 --------------------------
These link errors bring up a question of what is a mathom-ed function anyways.
The link error I see is because of https://perl5.git.perl.org/perl.git/commitdiff/607313a19740cb756ab98d5e58e6040ea8c125d4 which used mathomed functions by their full name "Perl_to_utf8_title" and not "to_utf8_title" which is redirected to a newer C func by preproc in https://perl5.git.perl.org/perl.git/blob/4273b0cccad37ddd85afb1abe763af2c6a6023a5:/utf8.h#l86
The top of embed.fnc https://perl5.git.perl.org/perl.git/blob/4273b0cccad37ddd85afb1abe763af2c6a6023a5:/embed.fnc#l107 says that "m" symbols are not exported. Docs for "b" are ambiguous https://perl5.git.perl.org/perl.git/blob/4273b0cccad37ddd85afb1abe763af2c6a6023a5:/embed.fnc#l67 Those 4 funcs are "ApbmdD" So "A" for public API (IE exported)\, "b" for not avail on -DNO_MATHOMS\, "m" for macro not a func. I thought I got the permutation right in https://perl5.git.perl.org/perl.git/commitdiff/1545ba5b042c208e23333479730479c0acd55325 "xmi" flags mean not exported. Previous KHW code that I was fixing https://perl5.git.perl.org/perl.git/commitdiff/3f1866a8f6c7a9d70d0c8bb1b4f20d2db63756f1
so what is the definition of "b"?
I did a diff of my "fix -DNO_MATHOMS build\, mathomed syms were not removed from perldll.def" commit and cooked up this regex of now deleted in WITH_MATHOMS symbols because they all have "m" flag but are also "b".
Perl_do_aexec|Perl_do_open|Perl_gv_AVadd|Perl_gv_HVadd|Perl_gv_IOadd|Perl_gv_SVadd|Perl_gv_efullname3|Perl_gv_fetchmethod|Perl_gv_fullname3|Perl_hv_delete|Perl_hv_delete_ent|Perl_hv_exists|Perl_hv_exists_ent|Perl_hv_fetch|Perl_hv_fetch_ent|Perl_hv_iternext|Perl_hv_magic|Perl_hv_store|Perl_hv_store_ent|Perl_hv_store_flags|Perl_instr|Perl_is_utf8_char_buf|Perl_is_utf8_string_loc|Perl_mem_collxfrm|Perl_my_lstat|Perl_my_stat|Perl_newAV|Perl_newHV|Perl_newIO|Perl_newSUB|Perl_ref|Perl_save_freeop|Perl_save_freepv|Perl_save_freesv|Perl_save_mortalizesv|Perl_save_op|Perl_sv_2iv|Perl_sv_2pv|Perl_sv_2pv_nolen|Perl_sv_2pvbyte_nolen|Perl_sv_2pvutf8_nolen|Perl_sv_2uv|Perl_sv_catpvn|Perl_sv_catpvn_mg|Perl_sv_catsv|Perl_sv_catsv_mg|Perl_sv_copypv|Perl_sv_force_normal|Perl_sv_insert|Perl_sv_mortalcopy|Perl_sv_nolocking|Perl_sv_pv|Perl_sv_pvbyte|Perl_sv_pvn_force|Perl_sv_pvutf8|Perl_sv_setsv|Perl_sv_taint|Perl_sv_unref|Perl_sv_usepvn|Perl_sv_usepvn_mg|Perl_sv_utf8_upgrade|Perl_to_utf8_fold|P erl_to_utf8_lower|Perl_to_utf8_title|Perl_to_utf8_upper
but grep.metacpan.org doesn't pull up anything unless I narrow the search "to_utf8_title" (design bugs/search limit in seconds) and the more trusty grep.cpan.me is down.
So again\, I wonder\, what is the definition of "b"? Is https://perl5.git.perl.org/perl.git/commitdiff/607313a19740cb756ab98d5e58e6040ea8c125d4 correct and exactly how mathom symbols are supposed to be used in fallback mode and "b" always means exported from binary unless NO_MATHOMS? or does "m" always mean "never exported" regardless of any other build choices and XS-Apitest and any CPAN code is wrong?
A decision must be made for 5.28.
On Thu\, 19 Apr 2018 20:43:35 -0700\, bulk88 wrote:
This is a bug report for perl from bulk88@hotmail.com\, generated with the help of perlbug 1.41 running under perl 5.27.9.
----------------------------------------------------------------- [Please describe your issue here]
This is a 5.28 blocker.
If nobody can come with any discussion or design\, here is a patch that I think is the right solution and on the conservative side (assume you can use Perl_FOO() funcs freely as if they are public API when I dont think they are).
-- bulk88 ~ bulk88 at hotmail.com
On Fri\, Apr 20\, 2018 at 9:50 AM\, bulk88 via RT \perlbug\-followup@​perl\.org wrote:
On Thu\, 19 Apr 2018 20:43:35 -0700\, bulk88 wrote:
This is a bug report for perl from bulk88@hotmail.com\, generated with the help of perlbug 1.41 running under perl 5.27.9.
----------------------------------------------------------------- [Please describe your issue here]
This is a 5.28 blocker.
If nobody can come with any discussion or design\, here is a patch that I think is the right solution and on the conservative side (assume you can use Perl_FOO() funcs freely as if they are public API when I dont think they are).
FWIW\, VMS is broken the same way. I'll try to take your patch for a spin later today.
Link /Debug/Trace/Map /Shareable=[--.LIB.AUTO.XS.APITEST]PL_XS__APITEST.EXE APItest.opt/Option\,[--]perlshr_attr.opt/Option %ILINK-W-NUDFSYMS\, 4 undefined symbols: %ILINK-I-UDFSYM\, PERL_TO_UTF8_FOLD %ILINK-I-UDFSYM\, PERL_TO_UTF8_LOWER %ILINK-I-UDFSYM\, PERL_TO_UTF8_TITLE %ILINK-I-UDFSYM\, PERL_TO_UTF8_UPPER %ILINK-W-USEUNDEF\, undefined symbol PERL_TO_UTF8_LOWER referenced section: $CODE$ offset: %X00000000000FB890 slot: 1 module: APITEST file: D0:[craig.blead.lib.auto.XS.APItest]APITEST.OLB;1 %ILINK-W-USEUNDEF\, undefined symbol PERL_TO_UTF8_FOLD referenced section: $CODE$ offset: %X00000000000FE400 slot: 1 module: APITEST file: D0:[craig.blead.lib.auto.XS.APItest]APITEST.OLB;1 %ILINK-W-USEUNDEF\, undefined symbol PERL_TO_UTF8_UPPER referenced section: $CODE$ offset: %X0000000000100F40 slot: 1 module: APITEST file: D0:[craig.blead.lib.auto.XS.APItest]APITEST.OLB;1 %ILINK-W-USEUNDEF\, undefined symbol PERL_TO_UTF8_TITLE referenced section: $CODE$ offset: %X0000000000103070 slot: 1 module: APITEST file: D0:[craig.blead.lib.auto.XS.APItest]APITEST.OLB;1 %MMK-F-ERRUPD\, error status %X1789A0C0 occurred when updating target [--.LIB.AUTO.XS.APITEST]PL_XS__APITEST.EXE %MMK-F-ERRUPD\, error status %X1789A0C0 occurred when updating target [--.LIB.AUTO.XS.APITEST]PL_XS__APITEST.EXE
The RT System itself - Status changed from 'new' to 'open'
On Fri\, Apr 20\, 2018 at 10:05 AM\, Craig A. Berry \craig\.a\.berry@​gmail\.com wrote:
On Fri\, Apr 20\, 2018 at 9:50 AM\, bulk88 via RT \perlbug\-followup@​perl\.org wrote:
On Thu\, 19 Apr 2018 20:43:35 -0700\, bulk88 wrote:
This is a bug report for perl from bulk88@hotmail.com\, generated with the help of perlbug 1.41 running under perl 5.27.9.
----------------------------------------------------------------- [Please describe your issue here]
This is a 5.28 blocker.
If nobody can come with any discussion or design\, here is a patch that I think is the right solution and on the conservative side (assume you can use Perl_FOO() funcs freely as if they are public API when I dont think they are).
FWIW\, VMS is broken the same way. I'll try to take your patch for a spin later today.
bulk88's patch works for me and also seems like the right thing to do. I don't think we can just add an X flag to those symbols in embed.fnc because that would conflict with the m flag that's already there. Since we're in freeze\, do I need a pumpking ruling to push this?
On 04/20/2018 09:42 PM\, Craig A. Berry wrote:
On Fri\, Apr 20\, 2018 at 10:05 AM\, Craig A. Berry \craig\.a\.berry@​gmail\.com wrote:
On Fri\, Apr 20\, 2018 at 9:50 AM\, bulk88 via RT \perlbug\-followup@​perl\.org wrote:
On Thu\, 19 Apr 2018 20:43:35 -0700\, bulk88 wrote:
This is a bug report for perl from bulk88@hotmail.com\, generated with the help of perlbug 1.41 running under perl 5.27.9.
----------------------------------------------------------------- [Please describe your issue here]
This is a 5.28 blocker. If nobody can come with any discussion or design\, here is a patch that I think is the right solution and on the conservative side (assume you can use Perl_FOO() funcs freely as if they are public API when I dont think they are). FWIW\, VMS is broken the same way. I'll try to take your patch for a spin later today. bulk88's patch works for me and also seems like the right thing to do. I don't think we can just add an X flag to those symbols in embed.fnc because that would conflict with the m flag that's already there. Since we're in freeze\, do I need a pumpking ruling to push this?
Yes. And you have it. Go for it.
Thanks\, Craig.
On Sat\, Apr 21\, 2018 at 3:22 AM\, Sawyer X \xsawyerx@​gmail\.com wrote:
On 04/20/2018 09:42 PM\, Craig A. Berry wrote:
On Fri\, Apr 20\, 2018 at 10:05 AM\, Craig A. Berry \craig\.a\.berry@​gmail\.com wrote:
On Fri\, Apr 20\, 2018 at 9:50 AM\, bulk88 via RT \perlbug\-followup@​perl\.org wrote:
On Thu\, 19 Apr 2018 20:43:35 -0700\, bulk88 wrote:
This is a bug report for perl from bulk88@hotmail.com\, generated with the help of perlbug 1.41 running under perl 5.27.9.
----------------------------------------------------------------- [Please describe your issue here]
This is a 5.28 blocker. If nobody can come with any discussion or design\, here is a patch that I think is the right solution and on the conservative side (assume you can use Perl_FOO() funcs freely as if they are public API when I dont think they are). FWIW\, VMS is broken the same way. I'll try to take your patch for a spin later today. bulk88's patch works for me and also seems like the right thing to do. I don't think we can just add an X flag to those symbols in embed.fnc because that would conflict with the m flag that's already there. Since we're in freeze\, do I need a pumpking ruling to push this?
Yes. And you have it. Go for it.
Thanks. Now done as c41ed02688c7d0eea7fe888ba996b3a9165df529.
@iabyn - Status changed from 'open' to 'resolved'
Migrated from rt.perl.org#133125 (status was 'resolved')
Searchable as RT133125$