Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cygwin: workaround DLL load address conflict #22696

Merged
merged 1 commit into from
Oct 29, 2024

Conversation

tonycoz
Copy link
Contributor

@tonycoz tonycoz commented Oct 23, 2024

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

TODO: fill description here


  • This set of changes requires a perldelta entry, and it is included.
  • This set of changes requires a perldelta entry, and I need help writing it.
  • This set of changes does not require a perldelta entry.

@sisyphus
Copy link
Contributor

For me, the failure occurs only with -DDEBUGGING builds.
Should the proposed perldelta entry mention that non-debugging builds are not affected ?

@bulk88
Copy link
Contributor

bulk88 commented Oct 23, 2024

isnt a global rebase of libperl and all XS DLLs supposed to run in Cygwin?

@tonycoz
Copy link
Contributor Author

tonycoz commented Oct 23, 2024

For me, the failure occurs only with -DDEBUGGING builds. Should the proposed perldelta entry mention that non-debugging builds are not affected ?

It would be anything that makes the binaries larger, I reproduced it with ./Configure -des -Dusedevel -Doptimize=-O0\ -g and with ./Configure -des -Dusedevel -Doptimize=-O2\ -g\ -march=x86-64-v2

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
@tonycoz
Copy link
Contributor Author

tonycoz commented Oct 23, 2024

isnt a global rebase of libperl and all XS DLLs supposed to run in Cygwin?

That isn't what that says, and isn't what it does.

cygperl_5_41_6.dll isn't an archdir dll, though perhaps that code should include cygperl*.dll too.

Also, it only runs for 32-bit builds, which cygwin no longer support, which I can understand, since DLL conflicts like this were many times more common there.

@tonycoz
Copy link
Contributor Author

tonycoz commented Oct 23, 2024

For me, the failure occurs only with -DDEBUGGING builds. Should the proposed perldelta entry mention that non-debugging builds are not affected ?

I've added a note on this.

@jkeenan
Copy link
Contributor

jkeenan commented Oct 24, 2024

For me, the failure occurs only with -DDEBUGGING builds. Should the proposed perldelta entry mention that non-debugging builds are not affected ?

I've added a note on this.

Can someone familiar with Cygwin review this p.r.? (I'd like to quiet our CI failures on that platform.) Thanks.

@tonycoz tonycoz merged commit ff4c75e into Perl:blead Oct 29, 2024
33 checks passed
@jkeenan
Copy link
Contributor

jkeenan commented Oct 29, 2024

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

@tonycoz, this did close #22695; should you re-open it? (My impression is that our Cygwin CI builds are still failing.)

@tonycoz
Copy link
Contributor Author

tonycoz commented Oct 30, 2024

@tonycoz, this did close #22695; should you re-open it?

Thanks github, reopened.

(My impression is that our Cygwin CI builds are still failing.)

blead is passing, see the green tick at the top of https://github.com/Perl/perl5 and you can see green ticks for the CI runs done since this was merged at https://github.com/Perl/perl5/commits/blead/

Any PRs will need to be rebased on blead to pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

cygwin DLL address conflict with version 5.41.6
4 participants