Draft: Fix building with address sanitizer#91
Draft
jschwe wants to merge 1 commit intodtolnay:masterfrom
Draft
Conversation
Without this patch, using inventory will result in the following linker error on macOS when address sanitizer is enabled: ``` note: ld: initializer pointer has no target in <...>.rcgu.o ``` ASAN instrumentation will apparently modify the statics, which breaks linking. Considerations: - `feature(sanitize)` is still unstable, so we need to guard it behind a cfg - Users will need to add `#![feature(sanitize)]` to their crate, if they wish to use ASAN. - `feature(cfg_sanitize)` is also unstable, so that would also need to be guarded by something in order to not break regular compilation on stable Rust. Hence we just require the user to set `--cfg=asan` via RUSTFLAGS when using ASAN, since they would need to set RUSTFLAGS anyway to enable ASAN.
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.
Status: Tested on MacOS. Pending tests on windows and Linux.
Without this patch, using inventory will result in the following linker error on macOS when address sanitizer is enabled:
ASAN instrumentation will apparently modify the statics, which breaks linking.
Considerations:
feature(sanitize)is still unstable, so we need to guard it behind a cfg#![feature(sanitize)]to their crate, if they wish to use ASAN.feature(cfg_sanitize)is also unstable, so that would also need to be guarded by something in order to not break regular compilation on stable Rust. Hence we just require the user to set--cfg=asanvia RUSTFLAGS when using ASAN, since they would need to set RUSTFLAGS anyway to enable ASAN.Fixes: #90