Skip to content

Commit 2626bf6

Browse files
committed
cygwin: workaround DLL load address conflict
The DLL load addresses are generated by the linker based on the DLL names, and 5.39.10 we're getting a conflict between cygperl5_41_6.dll and Langinfo.dll. As a workaround, statically link Langinfo into cygperl for CI and mention the problem in perldelta for anyone else who might build perl on cygwin Fixes but should not close Perl#22695
1 parent 161ff73 commit 2626bf6

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

.github/workflows/testsuite.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,7 @@ jobs:
605605
run: |
606606
cd ~/work
607607
set +e
608-
./Configure -des -Dusedevel -Doptimize=-g -DDEBUGGING || exit 1
608+
./Configure -des -Dusedevel -Doptimize=-g -DDEBUGGING -Astatic_ext=I18N/Langinfo || exit 1
609609
- name: Build
610610
shell: sh
611611
env:

pod/perldelta.pod

+16-1
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,22 @@ platform specific bugs also go here.
382382

383383
=item *
384384

385-
XXX
385+
C<cygwin> builds may fail during testing due to a conflict between the
386+
load addresses of F<cygperl5_41_6.dll> and
387+
F<olib/auto/I18N/Langinfo/Langinfo.dll>. This will also be visible
388+
for anything that attempts to fork() with C<I18N::LangInfo> loaded.
389+
390+
This is known to fail for builds with options that increase the size
391+
of the binary, such as C<-DDEBUGGING>, C<-Doptimize="-O0 -g"> or
392+
C<-Doptimize="-O2 -g -march=x86-64-v2">.
393+
394+
This can be avoided by building perl with
395+
C<-Astatic_ext=I18N/Langinfo>.
396+
397+
The base addresses are generated by the linker based on the names of
398+
the DLLs, so this is expected to clear up for 5.41.7.
399+
400+
[github #22695]
386401

387402
=back
388403

0 commit comments

Comments
 (0)