Subject: | ExtUtils::Mksymlists Generates Bad Symbol |
While trying to build SDL::Perl on Win2k w/MinGW, a .def file is generated by ExtUtils::Mksymlists for building a DLL. The command to link the .o into a DLL is:
----
g++ -o "blib\arch\auto\SDL_perl\SDL_perl.dll" -Wl,--base-file,"src\SDL_perl.base" -Wl,--image-base,0x23210000 -mdll -s "src\SDL_perl.lds" "blib\arch\auto\SDL_perl\SDL_perl.exp" -Le:\perl-5.8.7\lib\CORE -Le:\msys\1.0\mingw\lib -lmingw32 -lSDLmain -lSDL
----
However, this gives the following error:
----
blib\arch\auto\SDL_perl\SDL_perl.exp(.edata+0x50):fake: undefined reference to `boot_'
blib\arch\auto\SDL_perl\SDL_perl.exp(.edata+0x54):fake: undefined reference to `boot_'
collect2: ld returned 1 exit status
----
Using nm, I cannot find a library on my system that has a 'boot_' symbol. The problem appears to be a combination of perl itself giving blank input to ExtUtils::Mksymlists and the module not validating the symbol. The main problem in ExtUtils::Mksymlists appears to be in and around line 40:
----
push(@{$spec{FUNCLIST}},"boot_$packprefix") unless $bootseen;
----
If $packprefix stringified to an empty string, it would produce the 'boot_' symbol as seen in the error message above.
I'm not entirely certain if this bug should be against ExtUtils::Mksymlists or perl itself.