# 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