tests: Fix cdylib-export-c-library-symbols to work with LTO-enabled CFLAGS#156012
Open
jchecahi wants to merge 1 commit intorust-lang:mainfrom
Open
tests: Fix cdylib-export-c-library-symbols to work with LTO-enabled CFLAGS#156012jchecahi wants to merge 1 commit intorust-lang:mainfrom
jchecahi wants to merge 1 commit intorust-lang:mainfrom
Conversation
Collaborator
|
rustbot has assigned @jdonszelmann. Use Why was this reviewer chosen?The reviewer was selected based on:
|
This comment has been minimized.
This comment has been minimized.
…FLAGS The test fails on systems where default CFLAGS include LTO flags (e.g., `-flto=auto -ffat-lto-objects`), which is common in RHEL, Fedora, and CentOS distributions. The issue occurs because `build_native_static_lib()` recompiles the C source using system CFLAGS, which may include LTO. When rustc tries to process this static library with the `+export-symbols` modifier, it correctly rejects it as LTO objects in C static libraries are not supported. Fix by manually compiling the C code with `-fno-lto` to override system defaults, then using llvm-ar directly to create the static library. This ensures the test validates the `+export-symbols` feature rather than LTO compatibility.
b503a5d to
8d5eac2
Compare
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.
The test fails on systems where default CFLAGS include LTO flags (e.g.,
-flto=auto -ffat-lto-objects), which is common in RHEL, Fedora, and CentOS distributions:The issue occurs because
build_native_static_lib()recompiles the C source using system CFLAGS, which may include LTO. When rustc tries to process this static library with the+export-symbolsmodifier, it correctly rejects it as LTO objects in C static libraries are not supported (see #150992).Fix by manually compiling the C code passing
-fno-ltotocc()to override system defaults, then usingllvm-ar()directly to create the static library. This ensures the test validates the+export-symbolsfeature rather than LTO compatibility.