From 2626bf6799adf3f8d4cac983dd3e1302c94cbc4b Mon Sep 17 00:00:00 2001 From: Tony Cook Date: Wed, 23 Oct 2024 13:52:29 +1100 Subject: [PATCH] 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 #22695 --- .github/workflows/testsuite.yml | 2 +- pod/perldelta.pod | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index fd730fbb3a37..0e8889ed20d5 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -605,7 +605,7 @@ jobs: run: | cd ~/work set +e - ./Configure -des -Dusedevel -Doptimize=-g -DDEBUGGING || exit 1 + ./Configure -des -Dusedevel -Doptimize=-g -DDEBUGGING -Astatic_ext=I18N/Langinfo || exit 1 - name: Build shell: sh env: diff --git a/pod/perldelta.pod b/pod/perldelta.pod index d932427b6fb4..845df8ef95ca 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -382,7 +382,22 @@ platform specific bugs also go here. =item * -XXX +C builds may fail during testing due to a conflict between the +load addresses of F and +F. This will also be visible +for anything that attempts to fork() with C loaded. + +This is known to fail for builds with options that increase the size +of the binary, such as C<-DDEBUGGING>, C<-Doptimize="-O0 -g"> or +C<-Doptimize="-O2 -g -march=x86-64-v2">. + +This can be avoided by building perl with +C<-Astatic_ext=I18N/Langinfo>. + +The base addresses are generated by the linker based on the names of +the DLLs, so this is expected to clear up for 5.41.7. + +[github #22695] =back