cc-wrapper: Workaround gnuabielfv{1,2} support deficiency on Clang#297425
Merged
flokli merged 1 commit intoNixOS:stagingfrom Jul 30, 2025
Merged
cc-wrapper: Workaround gnuabielfv{1,2} support deficiency on Clang#297425flokli merged 1 commit intoNixOS:stagingfrom
flokli merged 1 commit intoNixOS:stagingfrom
Conversation
44eef7e to
22af3bf
Compare
22af3bf to
c0e35c1
Compare
c0e35c1 to
9d8274f
Compare
Contributor
Author
|
Reviving this, as it is still necessary for both ABI versions. Support for understanding such triplets in Clang has since gotten worse: So in addition to passing the ABI via |
alyssais
reviewed
Jul 21, 2025
Clang cannot handle the gnuabielfv{1,2} ABI specification in the triplet properly. It used to parse it as just "gnu", disregarding the ABI version in it and defaulting to ELFv1. Now, it completely fails to parse such target triplet:
> clang: error: version 'abielfv1' in target triple 'powerpc64-unknown-linux-gnuabielfv1' is invalid
So when it comes time to passing the target triplet to Clang, handle this support deficiency:
1. If the triplet ends in gnuabielfv*, shorten it to just gnu. This makes it get parsed properly.
2. After the above, re-add the ABI via the separate -mabi option. This makes it use the correct ABI for the platform.
9d8274f to
07bce58
Compare
alyssais
approved these changes
Jul 21, 2025
14 tasks
13 tasks
13 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description of changes
Clang doesn't parse the "gnuabielfv{1,2}" part of the triplet as anything beyond "gnu", so desired ABI gets ignored.
Work around this by explicitly setting the ABI.
Follow-up to #307819 which fixes building LLVM on powerpc64, this gets
llvmPackages*.stdenvworking.powerpc64{,le}-unknown-linux-gnudue to this exact ABI ambiguity. Maybe checking for non-"musl" would be better, since that only supports ELFv2?Staging just so cc-wrapper stuff that might get sent there doesn't encounter any merge conflicts.
Things done
nix.conf? (See Nix manual)sandbox = relaxedsandbox = truenix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/)Add a 👍 reaction to pull requests you find important.