Re: B::Bytecode and Win32

41 views
Skip to first unread message

Reini Urban

unread,
Apr 25, 2012, 3:28:39 PM4/25/12
to ZloySystem, perl-c...@googlegroups.com
On Wed, Apr 25, 2012 at 2:02 PM, ZloySystem <zloys...@gmail.com> wrote:
> Hi!
> i test last 3 tests with newer revision, test-eval.pl and
> test-common-sense.pl pass fine, test-warnings-once.pl still fail, i try find
> issue with it and not found, may be you forgot include it.

Haven't forgotten it, I'm just pretty busy with a more serious B::C
bug similar to the Bytecode PMOP threaded bug, just more serious.
Looks like initializing PL_body_arenas in the first PMOP init
overwrites the PL_regex_padav.

After that the rest.

>  test-warnings-once.pl:
>  package A;
> use warnings;
> no warnings 'once';
> my $var1 = '123';
> my $var2;
> $var1 ne '321' ? 1 : 0
>
> On Thu, Apr 19, 2012 at 2:44 PM, ZloySystem <zloys...@gmail.com> wrote:
>>
>> Hi!
>> This is perl 5, version 15, subversion 7 (v5.15.7) built for
>> MSWin32-x86-multi
>>
>> test-eval.pl:
>> use strict;
>> eval(@_);
>>
>> C:\bytecode>c:\perl5157vs-nt\bin\perl.exe -MO=Bytecode,-H,-otest-eval.plc
>> test-eval.pl
>> test-eval.pl syntax OK
>>
>> C:\bytecode>c:\perl5157vs-nt\bin\perl.exe test-eval.plc
>> Attempt to access disallowed key 'strict/subs' in a restricted hash at
>> test-eval.plc line 910.
>>
>>
>> test-common-sense.pl:
>> package A;
>> use common::sense;
>>
>> sub test {
>>   my $var1 = undef;
>>   my $var2;
>>   return $var1;
>> };
>>
>> C:\bytecode>c:\perl5157vs-nt\bin\perl.exe test-common-sense.plc
>> Attempt to free unreferenced scalar: SV 0x913834 at test-common-sense.plc
>> line 1220.
>>
>>
>> test-warnings-once.pl:
>> package A;
>> use warnings;
>> no warnings 'once';
>> my $var1 = '123';
>> my $var2;
>> $var1 ne '321' ? 1 : 0
>>
>> C:\bytecode>c:\perl5157vs-nt\bin\perl.exe test-warnings-once.plc
>> Use of uninitialized value in next statement at test-warnings-once.plc
>> line 1486.
>> panic: attempt to copy freed scalar 8fc20c to 8fc2fc at
>> test-warnings-once.pl line 1.
>>
>> On Wed, Apr 18, 2012 at 2:10 PM, Reini Urban <rur...@x-ray.at> wrote:
>>>
>>> Thanks.
>>> See http://code.google.com/p/perl-compiler/issues/detail?id=68
>>>
>>> On Wed, Apr 18, 2012 at 2:55 AM, ZloySystem <zloys...@gmail.com> wrote:
>>> > package A;
>>> > sub test {
>>> >    use Data::Dumper;
>>> >
>>> >    $_ =~ /^(.*?)\d+$/;
>>> >    "Some::Package"->new();
>>> > }
>>>
>>>
>>>
>>> --
>>> Reini Urban
>>> http://cpanel.net/   http://www.perl-compiler.org/
>>
>>
>



--
Reini Urban
http://cpanel.net/   http://www.perl-compiler.org/

Reini Urban

unread,
Mar 4, 2013, 11:09:49 AM3/4/13
to ZloySystem, perl-c...@googlegroups.com
On Mon, Mar 4, 2013 at 9:21 AM, ZloySystem <zloys...@gmail.com> wrote:
> Hi Reini
>
> today i try compile test program with C backend on windows with 5.16.2 and
> latest git master a18841fdb3e9

Please try the git branch release instead.
I'm also right now working to get windows fixed before the release.

Yesterday I gave up on windows because all those internal symbols you listed
below are not exported in libperl.
Today I reactivated B::C/B::CC support again, because those symbols
are already booted and need not to be initialized again. I rather have
to fix the
CV initialization of those internals.

So the rest is to provide a Dynaloader archive or object file in the location
where ExtUtils::Embed looks for it. That looks doable for the experienced
windows user.

Just create a DynaLoader.lib from the DynaLoader.obj and copy it to
archlib/auto/DynaLoader/DynaLoader.lib
On my cygwin distribution I already added the DynaLoader object to libperl, but
Windows packagers are usually not aware of those issues.


> i do these steps:
>
> install MSVC 2010 express compiler
> download perl-compiler src and perl-5.16.2 src
> compile perl and after perl-compiler
>
> i test on simple code:
> use LWP;
> use EV;
> use Coro;
> use AnyEvent;
> use common::sense;
> use v5.12;
>
> my %S = (1 => 2);
> $a = async {
> print 1+2+3;
> EV::unloop;
> }->join();
>
> print 1+2;
> EV::loop();
>
>
> perl -MO=C,-l1800,-otest.c test.pl
> test.pl syntax OK
>
> perl c:\perl5162\bin\cc_harness /Od -o test.exe test.c
> running cl -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE
> -DNO_STRICT
> -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
> -DUSE_PERLI
> O -D_USE_32BIT_TIME_T -I"C:\perl5162\lib\CORE" -c -Fooutput.obj /Od -o
> test.ex
> e test.c cl : Command line warning D9025 : overriding '/O1' with '/Od'
> cl : Command line warning D9035 : option 'o' has been deprecated and will be
> rem
> oved in a future release
> test.c
> test.c(201974) : warning C4013: 'New' undefined; assuming extern returning
> int
> test.c(201974) : error C2059: syntax error : 'type'
> test.c(201998) : error C2059: syntax error : 'type'
> test.c(229519) : error C2059: syntax error : 'type'
> test.c(327239) : error C2059: syntax error : 'type'
> running link -out:output output.obj -nologo -nodefaultlib -debug -opt:ref,ic
> f -libpath:"c:\perl5162\lib\CORE" -machine:x86
> C:\perl5162\lib\CORE\perl516.l
> ib "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB\oldnames.lib"
> "C:
> \Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib"
> "C:\Program
> Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib" "C:\Program Files
> (x86)
> \Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib" "C:\Program Files
> (x86)\Microsoft S
> DKs\Windows\v7.0A\lib\winspool.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windo
> ws\v7.0A\lib\comdlg32.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\
> lib\advapi32.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\lib\shell
> 32.lib" "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib"
> "C:\
> Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib"
> "C:\Program F
> iles (x86)\Microsoft SDKs\Windows\v7.0A\lib\netapi32.lib" "C:\Program Files
> (x86
> )\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib" "C:\Program Files
> (x86)\Microsoft S
> DKs\Windows\v7.0A\lib\ws2_32.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows
> \v7.0A\lib\mpr.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\lib\win
> mm.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\lib\version.lib" "C
> :\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbc32.lib"
> "C:\Program F
> iles (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbccp32.lib" "C:\Program Files
> (x86
> )\Microsoft SDKs\Windows\v7.0A\lib\comctl32.lib" "C:\Program Files
> (x86)\Microso
> ft Visual Studio 10.0\VC\LIB\msvcrt.lib" perl516.lib kernel32.lib
> msvcrt.libLINK
> : fatal error LNK1181: cannot open input file 'output.obj'
>
> on error lines:
> New(0,sv_list[6336].sv_u.svu_pv,5618,char);
>
> try replace with:
> Newx(sv_list[6336].sv_u.svu_pv,5618,char);
>
> now:
>
> perl c:\perl5162\bin\cc_harness /Od -o test.exe test.c
> running cl -nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE
> -DNO_STRICT
> -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS
> -DUSE_PERLI
> O -D_USE_32BIT_TIME_T -I"C:\perl5162\lib\CORE" -c -Fooutput.obj /Od -o
> test.ex
> e test.c cl : Command line warning D9025 : overriding '/O1' with '/Od'
> cl : Command line warning D9035 : option 'o' has been deprecated and will be
> rem
> oved in a future release
> test.c
> test.c(451262) : warning C4101: 'targ' : unreferenced local variable
> running link -out:output output.obj -nologo -nodefaultlib -debug -opt:ref,ic
> f -libpath:"c:\perl5162\lib\CORE" -machine:x86
> C:\perl5162\lib\CORE\perl516.l
> ib "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB\oldnames.lib"
> "C:
> \Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib"
> "C:\Program
> Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib" "C:\Program Files
> (x86)
> \Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib" "C:\Program Files
> (x86)\Microsoft S
> DKs\Windows\v7.0A\lib\winspool.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windo
> ws\v7.0A\lib\comdlg32.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\
> lib\advapi32.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\lib\shell
> 32.lib" "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib"
> "C:\
> Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib"
> "C:\Program F
> iles (x86)\Microsoft SDKs\Windows\v7.0A\lib\netapi32.lib" "C:\Program Files
> (x86
> )\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib" "C:\Program Files
> (x86)\Microsoft S
> DKs\Windows\v7.0A\lib\ws2_32.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows
> \v7.0A\lib\mpr.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\lib\win
> mm.lib" "C:\Program Files (x86)\Microsoft
> SDKs\Windows\v7.0A\lib\version.lib" "C
> :\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbc32.lib"
> "C:\Program F
> iles (x86)\Microsoft SDKs\Windows\v7.0A\lib\odbccp32.lib" "C:\Program Files
> (x86
> )\Microsoft SDKs\Windows\v7.0A\lib\comctl32.lib" "C:\Program Files
> (x86)\Microso
> ft Visual Studio 10.0\VC\LIB\msvcrt.lib" perl516.lib kernel32.lib
> msvcrt.liboutp
> ut.obj : error LNK2019: unresolved external symbol _XS_UNIVERSAL_DOES
> referenced
> in function _perl_init_aaaa
> output.obj : error LNK2019: unresolved external symbol _XS_UNIVERSAL_VERSION
> ref
> erenced in function _perl_init_aaaa
> output.obj : error LNK2019: unresolved external symbol _XS_UNIVERSAL_can
> referen
> ced in function _perl_init_aaaa
> output.obj : error LNK2019: unresolved external symbol _XS_UNIVERSAL_isa
> referen
> ced in function _perl_init_aaaa
> output.obj : error LNK2019: unresolved external symbol _XS_utf8_downgrade
> refere
> nced in function _perl_init_aaac
> output.obj : error LNK2019: unresolved external symbol _XS_utf8_encode
> reference
> d in function _perl_init_aaad
> output.obj : error LNK2019: unresolved external symbol _XS_utf8_upgrade
> referenc
> ed in function _perl_init_aaad
> output.obj : error LNK2019: unresolved external symbol
> _XS_mro_method_changed_in
> referenced in function _perl_init_aaah
> output.obj : error LNK2019: unresolved external symbol _XS_utf8_is_utf8
> referenc
> ed in function _perl_init_aaah
> output.obj : error LNK2019: unresolved external symbol _XS_utf8_decode
> reference
> d in function _perl_init_aaah
> output.obj : error LNK2019: unresolved external symbol
> _XS_utf8_native_to_unicod
> e referenced in function _perl_init_aaah
> output.obj : error LNK2019: unresolved external symbol
> _XS_utf8_unicode_to_nativ
> e referenced in function _perl_init_aaah
> output.obj : error LNK2019: unresolved external symbol _XS_utf8_valid
> referenced
> in function _perl_init_aaah
> output.obj : error LNK2019: unresolved external symbol
> _XS_Internals_SvREADONLY
> referenced in function _perl_init_aaao
> output.obj : error LNK2019: unresolved external symbol _XS_version_is_qv
> referen
> ced in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_numify
> refere
> nced in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_vcmp
> referenc
> ed in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_is_alpha
> refe
> renced in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_boolean
> refer
> enced in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_new
> reference
> d in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_qv
> referenced
> in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_stringify
> ref
> erenced in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_noop
> referenc
> ed in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol _XS_version_normal
> refere
> nced in function _perl_init_aaay
> output.obj : error LNK2019: unresolved external symbol
> _XS_DynaLoader_dl_load_fi
> le referenced in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol
> _XS_DynaLoader_dl_install
> _xsub referenced in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol
> _XS_DynaLoader_dl_find_sy
> mbol referenced in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol _XS_DynaLoader_CLONE
> refe
> renced in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol
> _XS_DynaLoader_dl_error r
> eferenced in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol _XS_re_regname
> referenced
> in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol _XS_re_is_regexp
> referenc
> ed in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol _XS_re_regexp_pattern
> ref
> erenced in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol _XS_re_regnames_count
> ref
> erenced in function _perl_init_aabb
> output.obj : error LNK2019: unresolved external symbol
> _XS_Internals_SvREFCNT re
> ferenced in function _perl_init_aabc
> output.obj : error LNK2019: unresolved external symbol
> _XS_Internals_rehash_seed
> referenced in function _perl_init_aabc
> output.obj : error LNK2019: unresolved external symbol
> _XS_Internals_HvREHASH re
> ferenced in function _perl_init_aabc
> output.obj : error LNK2019: unresolved external symbol
> _XS_Internals_hash_seed r
> eferenced in function _perl_init_aabc
> output.obj : error LNK2019: unresolved external symbol
> _XS_Internals_hv_clear_pl
> acehold referenced in function _perl_init_aabc
> output.obj : error LNK2019: unresolved external symbol
> _XS_DynaLoader_dl_unload_
> file referenced in function _perl_init_aabc
> output.obj : error LNK2019: unresolved external symbol
> _XS_DynaLoader_dl_undef_s
> ymbols referenced in function _perl_init_aabc
> output.obj : error LNK2019: unresolved external symbol
> _XS_PerlIO__Layer__find r
> eferenced in function _perl_init_aabe
> output.obj : error LNK2019: unresolved external symbol
> _XS_PerlIO__Layer__NoWarn
> ings referenced in function _perl_init_aabe
> output.obj : error LNK2019: unresolved external symbol _XS_PerlIO_get_layers
> ref
> erenced in function _perl_init_aabe
> output : fatal error LNK1120: 43 unresolved externals
>
>
> what to do next, I do not know :( may be you can write short instruction?
> thx
Reply all
Reply to author
Forward
0 new messages