-
Notifications
You must be signed in to change notification settings - Fork 152
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
no code (no .text segment) when forgetting "-C", "link-arg=-Tlink.x" but no warning/error either #471
Comments
I've moved this over to the We could add a check to the cortex-m-rt build script that let flags = env::var("CARGO_ENCODED_RUSTFLAGS").unwrap_or("".to_string());
if !flags.contains("link-arg=-T") {
println!("cargo:warning=cortex-m-rt: No linker script flag found, an empty executable may be produced");
println!("cargo:warning=cortex-m-rt: See https://github.com/rust-embedded/cortex-m-quickstart/blob/master/.cargo/config.toml#L18 for an example");
} which gives:
This doesn't require the linker script be named Edit: ah, this won't work for users setting the flag from their |
Is there a post process hook akin to build.rs? That qould not produce falae positives, i.e. checking for .text directly.
On February 17, 2023 6:41:39 PM GMT+02:00, Adam Greig ***@***.***> wrote:
I've moved this over to the `cortex-m` repository as that's where any fix would have to go. Thanks for reporting, this is an easy thing for people to miss especially as the config file is usually hidden.
We could add a check to the cortex-m-rt build script that `link-arg=-T` is present somewhere in `CARGO_ENCODED_RUSTFLAGS`, for example:
```rust
let flags = env::var("CARGO_ENCODED_RUSTFLAGS").unwrap_or("".to_string());
if !flags.contains("link-arg=-T") {
println!("cargo:warning=cortex-m-rt: No linker script flag found, an empty executable may be produced");
println!("cargo:warning=cortex-m-rt: See https://github.com/rust-embedded/cortex-m-quickstart/blob/master/.cargo/config.toml#L18 for an example");
}
```
which gives:
```
$ cargo build
warning: cortex-m-rt: No linker script flag found, an empty executable may be produced
warning: cortex-m-rt: See https://github.com/rust-embedded/cortex-m-quickstart/blob/master/.cargo/config.toml#L18 for an example
Finished dev [unoptimized + debuginfo] target(s) in 0.02s
```
This doesn't require the linker script be named `link.x`, because some people may be using a custom linker script with another name, but does check that somehow or other _some_ linker script is set besides the default (which will never produce a useful output). However, I still worry there could be some annoying false positives. We could possibly add a second environment variable that skips the check for those users. It might also be possible to detect this by setting up something in the cortex-m-rt library that will generate a linker error without a good link script, but I'm not sure what that would look like exactly.
--
Reply to this email directly or view it on GitHub:
#471 (comment)
You are receiving this because you authored the thread.
Message ID: ***@***.***>
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.
|
Hi,
I realize this is not really a bug, I just hoped to get some feedback about where you think this should be reported. The issue is that if you take this template and remove the "-C", "link-arg=-Tlink.x" line from .cargo/config (for instance, by reading this as a reference and copying bits into another project) then everything compiles just fine but the resulting binary is useless.
Here is the output of arm-none-eabi-objdump -h (I called the project devicers):
I'm just trying to get some feedback here if this sounds to anybody like an issue worthy of fixing, the issue being that there was no complaint at any point suggesting anything was wrong, only by trying to execute the resulting binary (in my case trying to run it with the cargo-call-stack tool) do you get an error.
Thanks,
Alon
The text was updated successfully, but these errors were encountered: