Andrew Schulman via Cygwin-apps writes: > OK. Can you or anyone else shed any more light on that step? I looked at the > package sources for perl-Readonly-XS, perl-Text-CSV_XS, and > perl_XS-Parse-Keyword just to pick a few, and didn't see any rebase logic > there.
It lives in ExtUtile::MakeMaker::MM_Cygwin and has long been upstreamed in favor of the previous variants that all weren't working. https://github.com/Perl/perl5/blob/c9c7acaf187c9c2008bb7e92eca73096a09d5206/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MM_Cygwin.pm#L141-L150 --8<---------------cut here---------------start------------->8--- sub dynamic_lib { my($self, %attribs) = @_; my $s = ExtUtils::MM_Unix::dynamic_lib($self, %attribs); return '' unless $s; return $s unless %{$self->{XS}}; # do an ephemeral rebase so the new DLL fits to the current rebase map $s .= "\t/bin/find \$\(INST_ARCHLIB\)/auto -xdev -name \\*.$self->{DLEXT} | /bin/rebase -sOT -" if (( $Config{myarchname} eq 'i686-cygwin' ) and not ( exists $ENV{CYGPORT_PACKAGE_VERSION} )); $s; } --8<---------------cut here---------------end--------------->8--- That's for 32bit only as on 64bit any newly compiled DLL should not overlap with already rebased DLL (and empirically doesn't unless BLODA steps in, to which these days unfortunaltely Windows Defender needs to be counted). It may be worth the try and do a rebase-trigger full on your system if you have a long history of updates to compact your rebase map to something hopefully more reasonable (if that was the culprit). Also except the Cygwin installation root and (if it's on a separate directory) the build root in Windows defender so that their heuristic scanners hzopefully don't try to inject another DLL in place of what you are trying to load. The heuristics get tuned up and down with high frequency and tend to grab anything that isn't already scanned, which is of course a pattern that a newly built DLL matches. There's a WebThreats service or something like that that you can't switch off permanently, but at least you can shut one of it's two services down and it will stay mostly out of the way. Some time ago it would block everything that matched certain executable names (among them hostname, ping and curl) and that was real fun until I found the way to switch it off. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptations for Waldorf Q V3.00R3 and Q+ V3.54R2: http://Synth.Stromeko.net/Downloads.html#WaldorfSDada
