# New Ticket Created by  "Tim Heckman" 
# Please include the string:  [perl #58704]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=58704 >


Output of prove -v t\src\compiler.t is attached.

The generated linker command is incorrect. The /L option doesn't work 
with the Microsoft linker

link -nologo -nodefaultlib -debug     -machine:x86 -debug 
t/src/compiler_2.obj src\parrot_config.obj -out:t\src\compiler_2.exe  
-Lblib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib oldnames.lib

But, if I run this command using the documented linker option of 
/LIBPATH it *still* fails.

link -nologo -nodefaultlib -debug     -machine:x86 -debug 
t/src/compiler_2.obj src\parrot_config.obj -out:t\src\compiler_2.exe  
/LIBPATH:blib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib 
oldnames.lib

The only way I've been able to make this command line work is like this:

link -nologo -nodefaultlib -debug     -machine:x86 -debug 
t/src/compiler_2.obj src\parrot_config.obj -out:t\src\compiler_2.exe  
blib\lib\libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib oldnames.lib

I am not sure why this is. C and C++ are not my areas of expertise, so I 
may be doing something wrong here. I have tried it with the Visual 
Studio tools for both 2005 (professional edition) and 2008 (express 
edition) with the same results.

It looks like this would require a change to lib\Parrot\Test.pm to emit 
a Visual Studio-specific linker command line.

This has been turning up in the Smolder reports since early August. See 
for example
http://smolder.plusthree.com/app/public_projects/report_details/5249

The GCC toolchain on Win32 does not have these failures. See
http://smolder.plusthree.com/app/public_projects/report_details/5251


--Tim

t/src/compiler....
1..6
ok 1 # SKIP compreg disabled/imcc_compile_pir() not exported
# 'link -nologo -nodefaultlib -debug     -machine:x86 -debug 
t/src/compiler_2.obj src\parrot_config.obj -out:t\src\compiler_2.exe  
-Lblib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib oldnames.lib' 
failed with exit code 96
# Failed to build 't\src\compiler_2.exe': LINK : warning LNK4044: unrecognized 
option '/Lblib\lib'; ignored
# compiler_2.obj : error LNK2001: unresolved external symbol _PMCNULL
# t\src\compiler_2.exe : fatal error LNK1120: 1 unresolved externals

#   Failed test 'Parrot Compile API Single call'
#   at t/src/compiler.t line 112.
not ok 2 - Parrot Compile API Single call
# 'link -nologo -nodefaultlib -debug     -machine:x86 -debug 
t/src/compiler_3.obj src\parrot_config.obj -out:t\src\compiler_3.exe  
-Lblib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib oldnames.lib' 
failed with exit code 96
# Failed to build 't\src\compiler_3.exe': LINK : warning LNK4044: unrecognized 
option '/Lblib\lib'; ignored
# compiler_3.obj : error LNK2001: unresolved external symbol _PMCNULL
# t\src\compiler_3.exe : fatal error LNK1120: 1 unresolved externals

#   Failed test 'Parrot Compile API Multiple Calls'
#   at t/src/compiler.t line 194.
not ok 3 - Parrot Compile API Multiple Calls
# 'link -nologo -nodefaultlib -debug     -machine:x86 -debug 
t/src/compiler_4.obj src\parrot_config.obj -out:t\src\compiler_4.exe  
-Lblib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib oldnames.lib' 
failed with exit code 96
# Failed to build 't\src\compiler_4.exe': LINK : warning LNK4044: unrecognized 
option '/Lblib\lib'; ignored
# compiler_4.obj : error LNK2001: unresolved external symbol _PMCNULL
# t\src\compiler_4.exe : fatal error LNK1120: 1 unresolved externals

#   Failed test 'Parrot Compile API Multiple 1st bad PIR'
#   at t/src/compiler.t line 287.
not ok 4 - Parrot Compile API Multiple 1st bad PIR
# 'link -nologo -nodefaultlib -debug     -machine:x86 -debug 
t/src/compiler_5.obj src\parrot_config.obj -out:t\src\compiler_5.exe  
-Lblib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib oldnames.lib' 
failed with exit code 96
# Failed to build 't\src\compiler_5.exe': LINK : warning LNK4044: unrecognized 
option '/Lblib\lib'; ignored
# compiler_5.obj : error LNK2001: unresolved external symbol _PMCNULL
# t\src\compiler_5.exe : fatal error LNK1120: 1 unresolved externals

#   Failed test 'Parrot Compile API Multiple 2nd bad PIR'
#   at t/src/compiler.t line 380.
not ok 5 - Parrot Compile API Multiple 2nd bad PIR
# 'link -nologo -nodefaultlib -debug     -machine:x86 -debug 
t/src/compiler_6.obj src\parrot_config.obj -out:t\src\compiler_6.exe  
-Lblib\lib libparrot.lib  kernel32.lib ws2_32.lib msvcrt.lib oldnames.lib' 
failed with exit code 96
# Failed to build 't\src\compiler_6.exe': LINK : warning LNK4044: unrecognized 
option '/Lblib\lib'; ignored
# compiler_6.obj : error LNK2001: unresolved external symbol _PMCNULL
# t\src\compiler_6.exe : fatal error LNK1120: 1 unresolved externals

#   Failed test 'Parrot Compile API Multiple bad PIR'
#   at t/src/compiler.t line 472.
# Looks like you failed 5 tests of 6.
not ok 6 - Parrot Compile API Multiple bad PIR
 Dubious, test returned 5 (wstat 1280, 0x500)
 Failed 5/6 subtests 
        (less 1 skipped subtest: 0 okay)

Test Summary Report
-------------------
t/src/compiler (Wstat: 1280 Tests: 6 Failed: 5)
  Failed tests:  2-6
  Non-zero exit status: 5
Files=1, Tests=6,  3 wallclock secs ( 0.00 usr +  0.02 sys =  0.02 CPU)
Result: FAIL

Reply via email to