about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-08-09 00:38:00 +0000
committerbors <bors@rust-lang.org>2023-08-09 00:38:00 +0000
commita946c1e017a7b7202a61c89e0b2f65b348117a31 (patch)
treebc9ca115e3dff63efaeb486503444de8e023b32e /compiler/rustc_codegen_llvm/src
parente3590fccfbdb6284bded9b70eca2e72b0c57e070 (diff)
parenta2a7f27fd2548874b203f1f577f64cf61627e0a5 (diff)
downloadrust-a946c1e017a7b7202a61c89e0b2f65b348117a31.tar.gz
rust-a946c1e017a7b7202a61c89e0b2f65b348117a31.zip
Auto merge of #114470 - pnkfelix:dont-export-no-mangle-from-proc-macros-issue-99978, r=bjorn3
Restrict linker version script of proc-macro crates to just its two symbols

Restrict linker version script of proc-macro crates to just the two symbols of each proc-macro crate.

The main known effect of doing this is to stop including `#[no_mangle]` symbols in the linker version script.

Background:

The combination of a proc-macro crate with an import of another crate that itself exports a no_mangle function was broken for a period of time, because:

* In PR #99944 we stopped exporting no_mangle symbols from proc-macro crates; proc-macro crates have a very limited interface and are meant to be treated as a blackbox to everything except rustc itself. However: he constructed linker version script still referred to them, but resolving that discrepancy was left as a FIXME in the code, tagged with issue #99978.
* In PR #108017 we started telling the linker to check (via the`--no-undefined-version` linker invocation flag) that every symbol referenced in the "linker version script" is provided as linker input. So the unresolved discrepancy from #99978 started surfacing as a compile-time error (e.g. #111888).

Fix #111888
Fix #99978.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions