Skip to content

CI: include next upcoming LTS Ubuntu release#1416

Merged
marxin merged 3 commits into
wild-linker:mainfrom
marxin:CI-add-next-Ubuntu
Jan 6, 2026
Merged

CI: include next upcoming LTS Ubuntu release#1416
marxin merged 3 commits into
wild-linker:mainfrom
marxin:CI-add-next-Ubuntu

Conversation

@marxin

@marxin marxin commented Jan 4, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

@marxin

marxin commented Jan 4, 2026

Copy link
Copy Markdown
Collaborator Author

@davidlattimore Can you please take a look at the new linker-diff failures?

@davidlattimore

Copy link
Copy Markdown
Member

Looks like GNU ld now uses VER_NDX_LOCAL for undefined symbols without a version rather than VER_NDX_GLOBAL. This appears to be from this commit. This later change is also related.

LLD still emits VER_NDX_GLOBAL for undefined symbols without a version.

Maskray's blog post on symbol versioning has this to say:

  • Index 0 is called VER_NDX_LOCAL (misleading name, should have been VER_NDX_NONE). For defined symbols, the binding of the symbol will be changed to STB_LOCAL.
  • Index 1 is called VER_NDX_GLOBAL. It has no special effect and is used for unversioned symbols.
  • Index 2 to 0xffef are used for user defined versions.

The spec doesn't seem to really say which is correct for undefined symbols. It just says:

VER_NDX_LOCAL 0 - The symbol is private, and is not available outside this object.
VER_NDX_GLOBAL 1 - The symbol is globally available (ie the base or default version).

I guess maybe it doesn't matter which is used, so perhaps we should change linker-diff to treat them as the same, at least for undefined symbols.

The other option would be enable LLD for all affected tests, although there are quite a few.

@davidlattimore

Copy link
Copy Markdown
Member

I've created #1424 to make linker-diff ignore the difference. Feel free to merge that PR if you like. With that PR, the tests now pass for me on a 26.04 docker image.

@davidlattimore davidlattimore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM once the tests are passing. Do you think we should remove some older ubuntu platforms? I'm no longer developing on 22.04, so I'd be happy to remove that unless folks think we still need it for some reason.

@marxin marxin force-pushed the CI-add-next-Ubuntu branch from 597b2ee to e63e79f Compare January 6, 2026 17:01
@marxin

marxin commented Jan 6, 2026

Copy link
Copy Markdown
Collaborator Author

I'm no longer developing on 22.04, so I'd be happy to remove that unless folks think we still need it for some reason.
Good idea - I welcome that.

Anyway, thanks for the investigation related to the symbol versioning.

@marxin marxin force-pushed the CI-add-next-Ubuntu branch from adb758b to 3efa226 Compare January 6, 2026 18:01
@marxin marxin merged commit baa3703 into wild-linker:main Jan 6, 2026
22 checks passed
@LeoniePhiline

Copy link
Copy Markdown

Debian Bookworm only provides glibc 2.36, while new wild-linker builds now require glibc 2.39.

Would you recommend users of Debian oldstable use the musl builds, or is there any chance you could consider providing backward compatibility?

@marxin marxin deleted the CI-add-next-Ubuntu branch January 26, 2026 17:47
@davidlattimore

Copy link
Copy Markdown
Member

Thanks for bringing that to our attention @LeoniePhiline. I've raised #1490. We'll ensure that the next release has lower glibc requirements for our release builds. In the meantime, if you have a rust toolchain installed, I'd probably suggest cargo install wild-linker. The musl build would also be fine.

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.

3 participants