You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This appears to be a EU::MM issue, but has caused problems in core.
EU::MM doesn't link $Config{libs} into dynamic extensions on Cygwin, but does on Win32, which means anything that happens to call inline functions that use functions imported from those libraries fails to link.
On Win32, LDLOADLIBS is intialized from $Config{libs} in EU::MM_Win32::init_others():
sub init_others {
my $self = shift;
$self->{LD} ||= 'link';
$self->{AR} ||= 'lib';
$self->SUPER::init_others;
$self->{LDLOADLIBS} ||= $Config{libs};
and then used in the link step in xs_make_dynamic_lib(), GCC:
but this doesn't happen on Cygwin, and since Cygwin uses Win32's dynamic linking mechanism (names are resolved at link time) linking will fail.
Note that this is currently only a problem in a core build with -Dusequadmath, but would also have been a problem if Cygwin had a separate libm, or if a debug string handling library was linked in (references to strlen() in inline would refer to the wrong library).
Steps to Reproduce
Prior to 1888563, try to build perl on Cygwin with -Dusequadmath.
Note that with some work on the ext/POSIX Makefile.PL this would allow ext/POSIX not have to explicitly link to libquadmath.
Expected behavior
$Config{libs} is linked into extensions by default.
The text was updated successfully, but these errors were encountered:
Module: ExtUtils::MakeMaker
Description
This appears to be a EU::MM issue, but has caused problems in core.
EU::MM doesn't link $Config{libs} into dynamic extensions on Cygwin, but does on Win32, which means anything that happens to call inline functions that use functions imported from those libraries fails to link.
On Win32, LDLOADLIBS is intialized from
$Config{libs}
in EU::MM_Win32::init_others():and then used in the link step in xs_make_dynamic_lib(), GCC:
and MSVC:
but this doesn't happen on Cygwin, and since Cygwin uses Win32's dynamic linking mechanism (names are resolved at link time) linking will fail.
Note that this is currently only a problem in a core build with -Dusequadmath, but would also have been a problem if Cygwin had a separate libm, or if a debug string handling library was linked in (references to strlen() in inline would refer to the wrong library).
Steps to Reproduce
Prior to 1888563, try to build perl on Cygwin with -Dusequadmath.
Note that with some work on the ext/POSIX Makefile.PL this would allow ext/POSIX not have to explicitly link to libquadmath.
Expected behavior
$Config{libs} is linked into extensions by default.
The text was updated successfully, but these errors were encountered: