diff options
| author | Jacob Pratt <jacob@jhpratt.dev> | 2025-03-08 01:27:22 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-08 01:27:22 -0500 |
| commit | dfae8e8e4c1640c90d4ec108eeef37ae84985f66 (patch) | |
| tree | 4c8bcc57efdb99a064a53d8a8cc5baa6da3e5d84 /compiler/rustc_errors/src | |
| parent | 0c67061569d2d786c3d4aa1aa428c2c7a7310d97 (diff) | |
| parent | e0b75776c3265fdb9dead021e565c2fda906ed88 (diff) | |
| download | rust-dfae8e8e4c1640c90d4ec108eeef37ae84985f66.tar.gz rust-dfae8e8e4c1640c90d4ec108eeef37ae84985f66.zip | |
Rollup merge of #137685 - lqd:nostart-stop-gc, r=petrochenkov
self-contained linker: conservatively default to `-znostart-stop-gc` on x64 linux To help stabilization, this PR disables an LLD optimization on x64 linux with respect to `--gc-sections` and encapsulation symbols: it will reduce the number of crates needing to opt-out of lld due to this bfd / lld difference. For example, all the people using [linkme](https://github.com/dtolnay/linkme), which [doesn't work with lld](https://github.com/dtolnay/linkme/issues/63) or on nightly, need to disable lld. More information about all this, and the historical differences, can be found in: - https://maskray.me/blog/2021-01-31-metadata-sections-comdat-and-shf-link-order - https://lld.llvm.org/ELF/start-stop-gc This optimization has [no visible impact](https://github.com/rust-lang/rust/pull/137685#issuecomment-2686116312) on our benchmarks, so we can use it by default and have a safer/more conservative starting point to remove friction during migration. We can them emit an FCW for the cases where lld detects reliance on encapsulation symbols without `-znostart-stop-gc`, and then revert back to lld's default after a while. No one compiling on nightly relies on this difference, obviously, so doing an FCW is not necessary until after lld is used on stable. I've tested that this correctly links on `linkme` examples. I've also quickly tried to crate an rmake test but the setup with encapsulation symbols is annoying to reproduce: a few link section/name attributes is not enough, we also need to collect symbols between the encapsulation symbols, without referencing them in code, for `-znostart-stop-gc` to only impact this... It should of course be doable though, maybe ````@Kobzol```` will look into it if they have time. r? ````@petrochenkov````
Diffstat (limited to 'compiler/rustc_errors/src')
0 files changed, 0 insertions, 0 deletions
