this is win32-msvc7. pbc_merge fails for tcl. here's the end of the
output from a tcl make session:
link -nologo -nodefaultlib -debug -dll -def:..\libparrot.def -out:tcl_group.dll
-def:tcl_group.def "lib-tcl_group.obj" "tclobject.obj" "tclstring.obj" "tclint.o
bj" "tclfloat.obj" "tcllist.obj" "tclarray.obj" oldnames.lib kernel32.lib user3
2.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib ole
aut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.
lib odbccp32.lib msvcrt.lib "D:/usr/local/parrot/trunk/parrot.lib"
LINK : LNK6004: tcl_group.dll not found or not built by the last incremental lin
k; performing full link
Creating library tcl_group.lib and object tcl_group.exp
D:\usr\local\perl\bin\perl.exe tcl.pl > lib\tcllib.pir
..\..\parrot.exe --output=lib\tcllib_temp.pbc lib\tcllib.pir
..\..\parrot.exe --output=lib\tclbinaryops.pbc lib\tclbinaryops.pir
..\..\parrot.exe --output=lib\tclcommand.pbc lib\tclcommand.pir
..\..\parrot.exe --output=lib\tclcommandlist.pbc lib\tclcommandlist.pir
..\..\parrot.exe --output=lib\tclconst.pbc lib\tclconst.pir
..\..\parrot.exe --output=lib\tclfunc.pbc lib\tclfunc.pir
..\..\parrot.exe --output=lib\tclops.pbc lib\tclops.pir
..\..\parrot.exe --output=lib\tclvar.pbc lib\tclvar.pir
..\..\parrot.exe --output=lib\tclword.pbc lib\tclword.pir
..\..\pbc_merge.exe -o lib\tcllib.pbc lib\tcllib_temp.pbc lib\tclbinaryo
ps.pbc lib\tclcommand.pbc lib\tclcommandlist.pbc lib\tclconst.pbc lib\tclfunc.pb
c lib\tclops.pbc lib\tclvar.pbc lib\tclword.pbc
NMAKE : fatal error U1077: '..\..\pbc_merge.exe' : return code '0xc0000005'
Stop.
D:\usr\local\parrot\trunk\languages\tcl>
~jerry
With MinGW32, the behavior is the same.
I analyze the problem with gdb :
pbc_merge.exe loads tcl_group.dll,
in Parrot_lib_tcl_group_load(), the first call of pmc_new() raises a
segment fault.
pmc_new() is defined in pbc_merge.exe
I try a Nick Glencross's patch "Better support for libparrot.so" what use
an another method for dynamic linking.
This patch is out of date (october), but seems solve the problem.
François.
>~jerry
link -nologo -nodefaultlib -debug -dll -out:tcl_group.dll
"lib-tcl_group.obj" "tclobject.obj" "tclstring.obj" "tclint.obj"
"tclfloat.obj" "tcllist.obj" "tclarray.obj" oldnames.lib kernel32.lib
user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib
mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib
"D:/usr/local/parrot/bug/libparrot.lib"
Creating library tcl_group.lib and object tcl_group.exp
tcllist.obj : error LNK2019: unresolved external symbol _interpinfo_p
referenced in function _Parrot_TclList_get_string
tcl_group.dll : fatal error LNK1120: 1 unresolved externals
partial link tcl_group.dll failed (24576)
NMAKE : fatal error U1077: 'cd' : return code '0x2'
~jerry
This linkage is broken on Win32 since revision 12321 (only the file
languages/tcl/src/pmc/tcllist.pmc).
Solved by revision12423.
François.