diff options
| author | Lewis McClelland <lewis@lewismcclelland.me> | 2025-08-09 15:46:45 -0700 |
|---|---|---|
| committer | Lewis McClelland <lewis@lewismcclelland.me> | 2025-08-18 11:50:20 -0400 |
| commit | 0e47f19ffc934298227e77e49836ee1e335b7b61 (patch) | |
| tree | 9e7daeb6268c0c333265553907ab862f0c640512 | |
| parent | dbb8190b9cacf2d3e0d4fbb3c71dc2603bb643a8 (diff) | |
| download | rust-0e47f19ffc934298227e77e49836ee1e335b7b61.tar.gz rust-0e47f19ffc934298227e77e49836ee1e335b7b61.zip | |
Specify linker scripts after user link args
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/link.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs index 3ec0d900994..30ad9450aef 100644 --- a/compiler/rustc_codegen_ssa/src/back/link.rs +++ b/compiler/rustc_codegen_ssa/src/back/link.rs @@ -2435,6 +2435,13 @@ fn linker_with_args( // Passed after compiler-generated options to support manual overriding when necessary. add_user_defined_link_args(cmd, sess); + // ------------ Builtin configurable linker scripts ------------ + // The user's link args should be able to overwrite symbols in the compiler's + // linker script that were weakly defined (i.e. defined with `PROVIDE()`). For this + // to work correctly, the user needs to be able to specify linker arguments like + // `--defsym` and `--script` *before* any builtin linker scripts are evaluated. + add_link_script(cmd, sess, tmpdir, crate_type); + // ------------ Object code and libraries, order-dependent ------------ // Post-link CRT objects. @@ -2469,8 +2476,6 @@ fn add_order_independent_options( let apple_sdk_root = add_apple_sdk(cmd, sess, flavor); - add_link_script(cmd, sess, tmpdir, crate_type); - if sess.target.os == "fuchsia" && crate_type == CrateType::Executable && !matches!(flavor, LinkerFlavor::Gnu(Cc::Yes, _)) |
