Skip to content
This repository was archived by the owner on Jan 30, 2024. It is now read-only.

Add cargo xtask rebuild-elfs #411

Draft
wants to merge 17 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[alias]
xtask = "run --package xtask --"
23 changes: 15 additions & 8 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -40,3 +40,6 @@ serial_test = { version = "2", default-features = false }

[features]
ftdi = ["probe-rs/ftdi"]

[workspace]
members = [".", "xtask"]
4 changes: 3 additions & 1 deletion src/dep/cratesio.rs
Original file line number Diff line number Diff line change
@@ -35,7 +35,9 @@ impl<'p> Path<'p> {
registry_prefix.push(src);

let github = super::get_component_normal(components.next()?)?.to_str()?;
if !github.starts_with("github.com-") {
// Rust 1.52 uses "github.com"
// Rust 1.70 uses "index.crates.io"
if !(github.starts_with("github.com-") || github.starts_with("index.crates.io-")) {
return None;
}
registry_prefix.push(github);
7 changes: 3 additions & 4 deletions src/dep/mod.rs
Original file line number Diff line number Diff line change
@@ -53,10 +53,9 @@ impl<'p> Path<'p> {
}

fn get_component_normal(component: Component) -> Option<&OsStr> {
if let Component::Normal(string) = component {
Some(string)
} else {
None
match component {
Component::Normal(string) => Some(string),
_ => None,
}
}

2 changes: 1 addition & 1 deletion tests/snapshot.rs
Original file line number Diff line number Diff line change
@@ -62,7 +62,7 @@ fn run_and_terminate(args: &str, timeout_s: u64) -> RunResult {
fn run_command(args: &str) -> (os_pipe::PipeReader, std::process::Child) {
// add prefix to run this repository's version of `probe-run` and
// remove user-dependent registry and rustc information from backtrace paths
let cmd = format!("run -- --chip nRF52840_xxAA tests/test_elfs/{args} --shorten-paths");
let cmd = format!("run -- --chip nRF52840_xxAA tests/test_elfs/cache/{args} --shorten-paths");

let (reader, writer) = pipe().unwrap();
let writer_clone = writer.try_clone().unwrap();
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
source: tests/snapshot.rs
assertion_line: 113
assertion_line: 114
expression: run_result.output

---
@@ -14,12 +14,14 @@ stack backtrace:
at ./asm/inline.rs:14:5
1: __bkpt
at ./asm/lib.rs:51:17
2: app::exit
at /tmp/app/src/lib.rs:17:5
3: hello::__cortex_m_rt_main
at /tmp/app/src/bin/hello.rs:10:5
4: main
at /tmp/app/src/bin/hello.rs:6:1
5: Reset
2: cortex_m::asm::bkpt
at [cortex-m-0.7.7]/src/call_asm.rs:19:21
3: test_elfs::exit
at /test_elfs/src/lib.rs:18:9
4: hello::__cortex_m_rt_main
at /test_elfs/src/bin/hello.rs:10:5
5: main
at /test_elfs/src/bin/hello.rs:6:1
6: Reset
(HOST) INFO device halted without error

Original file line number Diff line number Diff line change
@@ -7,23 +7,24 @@ expression: run_result.output
(HOST) INFO flashing program (2 pages / 8.00 KiB)
(HOST) INFO success!
────────────────────────────────────────────────────────────────────────────────
ack(m=10, n=10, SP=2003bb98)
ack(m=10, n=9, SP=20037b78)
ack(m=10, n=8, SP=20033b58)
ack(m=10, n=7, SP=2002fb38)
ack(m=10, n=6, SP=2002bb18)
ack(m=10, n=5, SP=20027af8)
ack(m=10, n=4, SP=20023ad8)
ack(m=10, n=3, SP=2001fab8)
ack(m=10, n=2, SP=2001ba98)
ack(m=10, n=1, SP=20017a78)
ack(m=10, n=0, SP=20013a58)
ack(m=9, n=1, SP=2000fa38)
ack(m=9, n=0, SP=2000ba18)
ack(m=8, n=1, SP=200079f8)
ack(m=8, n=0, SP=200039d8)
ack(m=10, n=10, SP=0x2003bfd4)
ack(m=10, n=9, SP=0x20037fb4)
ack(m=10, n=8, SP=0x20033f94)
ack(m=10, n=7, SP=0x2002ff74)
ack(m=10, n=6, SP=0x2002bf54)
ack(m=10, n=5, SP=0x20027f34)
ack(m=10, n=4, SP=0x20023f14)
ack(m=10, n=3, SP=0x2001fef4)
ack(m=10, n=2, SP=0x2001bed4)
ack(m=10, n=1, SP=0x20017eb4)
ack(m=10, n=0, SP=0x20013e94)
ack(m=9, n=1, SP=0x2000fe74)
ack(m=9, n=0, SP=0x2000be54)
ack(m=8, n=1, SP=0x20007e34)
ack(m=8, n=0, SP=0x20003e14)
────────────────────────────────────────────────────────────────────────────────
(HOST) WARN program has used at least 240.62/254.93 KiB (94.4%) of stack space
(HOST) WARN data segments might be corrupted due to stack overflow
stack backtrace:
0: HardFaultTrampoline
<exception entry>
12 changes: 6 additions & 6 deletions tests/snapshots/snapshot__case_5_panic_is_reported_as_such.snap
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
source: tests/snapshot.rs
assertion_line: 113
assertion_line: 114
expression: run_result.output

---
@@ -17,15 +17,15 @@ stack backtrace:
2: __udf
at ./asm/lib.rs:51:17
3: cortex_m::asm::udf
at [cortex-m-0.7.7]/src/asm.rs:43:5
at [cortex-m-0.7.7]/src/call_asm.rs:19:21
4: _defmt_panic
at /tmp/app/src/lib.rs:12:5
at /test_elfs/src/lib.rs:12:5
5: defmt::export::panic
at [defmt-0.3.2]/src/export/mod.rs:133:14
at [defmt-0.3.4]/src/export/mod.rs:133:14
6: panic::__cortex_m_rt_main
at /tmp/app/src/bin/panic.rs:8:5
at /test_elfs/src/bin/panic.rs:8:5
7: main
at /tmp/app/src/bin/panic.rs:6:1
at /test_elfs/src/bin/panic.rs:6:1
8: Reset
(HOST) ERROR the program panicked

100 changes: 47 additions & 53 deletions tests/snapshots/snapshot__case_6_panic_verbose.snap
Original file line number Diff line number Diff line change
@@ -1,90 +1,84 @@
---
source: tests/snapshot.rs
assertion_line: 113
assertion_line: 114
expression: run_result.output

---
(HOST) DEBUG vector table: VectorTable { initial_stack_pointer: 2003fbc0, hard_fault: 17d3 }
(HOST) DEBUG RAM region: 0x20000000-0x2003FFFF
(HOST) DEBUG section `.data` is in RAM at 0x2003FBC0..=0x2003FBF7
(HOST) DEBUG section `.bss` is in RAM at 0x2003FBF8..=0x2003FBFF
(HOST) DEBUG section `.uninit` is in RAM at 0x2003FC00..=0x2003FFFF
(HOST) DEBUG valid SP range: 0x20000000..=0x2003FBBC
(HOST) DEBUG found 1 probes
(HOST) DEBUG opened probe
(HOST) DEBUG started session
(HOST) INFO flashing program (2 pages / 8.00 KiB)
(HOST) DEBUG Erased sector of size 4096 bytes in 121 ms
(HOST) DEBUG Erased sector of size 4096 bytes in 99 ms
(HOST) DEBUG Programmed page of size 4096 bytes in 62 ms
(HOST) DEBUG Programmed page of size 4096 bytes in 62 ms
(HOST) DEBUG Erased sector of size 4096 bytes in 120 ms
(HOST) DEBUG Erased sector of size 4096 bytes in 98 ms
(HOST) DEBUG Programmed page of size 4096 bytes in 61 ms
(HOST) DEBUG Programmed page of size 4096 bytes in 63 ms
(HOST) INFO success!
(HOST) DEBUG 261052 bytes of stack available (0x20000000 ..= 0x2003FBBC), using 1024 byte canary
(HOST) TRACE setting up canary took 0.020s (51.19 KiB/s)
(HOST) DEBUG vector table: VectorTable { initial_stack_pointer: 2003fbc0, hard_fault: 1771 }
(HOST) DEBUG RAM region: 0x20000000-0x2003FFFF
(HOST) DEBUG section `.data` is in RAM at 0x2003FBC0..=0x2003FBF7
(HOST) DEBUG section `.bss` is in RAM at 0x2003FBF8..=0x2003FBFF
(HOST) DEBUG section `.uninit` is in RAM at 0x2003FC00..=0x2003FFFF
(HOST) DEBUG valid SP range: 0x20000000..=0x2003FBBC
(HOST) DEBUG 261052 bytes of stack available (0x20000000 ..= 0x2003FBBC), using 26108 byte canary
(HOST) TRACE setting up canary took 0.022s (1162.52 KiB/s)
(HOST) DEBUG starting device
(HOST) DEBUG Successfully attached RTT
────────────────────────────────────────────────────────────────────────────────
ERROR panicked at 'explicit panic'
────────────────────────────────────────────────────────────────────────────────
(HOST) TRACE reading canary took 0.024s (41.48 KiB/s)
(HOST) TRACE reading canary took 0.023s (1131.21 KiB/s)
(HOST) DEBUG stack canary intact
(HOST) TRACE 0x000017d2: found FDE for 0x000017d2 .. 0x000017ea at offset 5672
(HOST) TRACE uwt row for pc 0x000017d2: UnwindTableRow { start_address: 6098, end_address: 6122, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(13), offset: 0 }, registers: RegisterRuleMap { rules: [] } }
(HOST) DEBUG LR=0xFFFFFFF9 PC=0x000017D2
(HOST) TRACE 0x0000025a: found FDE for 0x0000025a .. 0x0000025e at offset 6632
(HOST) TRACE uwt row for pc 0x0000025a: UnwindTableRow { start_address: 602, end_address: 606, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(13), offset: 0 }, registers: RegisterRuleMap { rules: [] } }
(HOST) DEBUG LR=0x00000195 PC=0x0000025A
(HOST) TRACE 0x00000194: found FDE for 0x0000018c .. 0x00000196 at offset 96
(HOST) TRACE uwt row for pc 0x00000194: UnwindTableRow { start_address: 400, end_address: 406, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(7), offset: 8 }, registers: RegisterRuleMap { rules: [(Register(14), Offset(-4)), (Register(7), Offset(-8))] } }
(HOST) DEBUG update_cfa: CFA changed Some(2003fb98) -> 2003fba0
(HOST) TRACE update reg=Register(14), rule=Offset(-4), abs=0x2003fb9c -> value=0x0000019f
(HOST) TRACE update reg=Register(7), rule=Offset(-8), abs=0x2003fb98 -> value=0x2003fba0
(HOST) DEBUG LR=0x0000019F PC=0x00000194
(HOST) TRACE 0x0000019e: found FDE for 0x00000196 .. 0x000001a0 at offset 152
(HOST) TRACE uwt row for pc 0x0000019e: UnwindTableRow { start_address: 410, end_address: 416, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(7), offset: 8 }, registers: RegisterRuleMap { rules: [(Register(14), Offset(-4)), (Register(7), Offset(-8))] } }
(HOST) DEBUG update_cfa: CFA changed Some(2003fba0) -> 2003fba8
(HOST) TRACE update reg=Register(14), rule=Offset(-4), abs=0x2003fba4 -> value=0x0000018b
(HOST) TRACE update reg=Register(7), rule=Offset(-8), abs=0x2003fba0 -> value=0x2003fbb0
(HOST) DEBUG LR=0x0000018B PC=0x0000019E
(HOST) TRACE 0x0000018a: found FDE for 0x00000162 .. 0x0000018c at offset 48
(HOST) TRACE uwt row for pc 0x0000018a: UnwindTableRow { start_address: 358, end_address: 396, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(7), offset: 8 }, registers: RegisterRuleMap { rules: [(Register(14), Offset(-4)), (Register(7), Offset(-8))] } }
(HOST) DEBUG update_cfa: CFA changed Some(2003fba8) -> 2003fbb8
(HOST) TRACE 0x00001770: found FDE for 0x00001770 .. 0x00001788 at offset 20
(HOST) TRACE uwt row for pc 0x00001770: UnwindTableRow { start_address: 6000, end_address: 6024, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(13), offset: 0 }, registers: RegisterRuleMap { rules: [] } }
(HOST) DEBUG LR=0xFFFFFFF9 PC=0x00001770
(HOST) TRACE 0x00001620: found FDE for 0x00001620 .. 0x00001624 at offset 1388
(HOST) TRACE uwt row for pc 0x00001620: UnwindTableRow { start_address: 5664, end_address: 5668, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(13), offset: 0 }, registers: RegisterRuleMap { rules: [] } }
(HOST) DEBUG LR=0x00001611 PC=0x00001620
(HOST) TRACE 0x00001610: found FDE for 0x00001608 .. 0x00001612 at offset 1084
(HOST) TRACE uwt row for pc 0x00001610: UnwindTableRow { start_address: 5644, end_address: 5650, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(7), offset: 8 }, registers: RegisterRuleMap { rules: [(Register(14), Offset(-4)), (Register(7), Offset(-8))] } }
(HOST) DEBUG update_cfa: CFA changed Some(2003fba8) -> 2003fbb0
(HOST) TRACE update reg=Register(14), rule=Offset(-4), abs=0x2003fbac -> value=0x0000017f
(HOST) TRACE update reg=Register(7), rule=Offset(-8), abs=0x2003fba8 -> value=0x2003fbb0
(HOST) DEBUG LR=0x0000017F PC=0x00001610
(HOST) TRACE 0x0000017e: found FDE for 0x00000162 .. 0x00000180 at offset 80
(HOST) TRACE uwt row for pc 0x0000017e: UnwindTableRow { start_address: 358, end_address: 384, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(7), offset: 8 }, registers: RegisterRuleMap { rules: [(Register(14), Offset(-4)), (Register(7), Offset(-8))] } }
(HOST) DEBUG update_cfa: CFA changed Some(2003fbb0) -> 2003fbb8
(HOST) TRACE update reg=Register(14), rule=Offset(-4), abs=0x2003fbb4 -> value=0x00000161
(HOST) TRACE update reg=Register(7), rule=Offset(-8), abs=0x2003fbb0 -> value=0x2003fbb8
(HOST) DEBUG LR=0x00000161 PC=0x0000018A
(HOST) TRACE 0x00000160: found FDE for 0x00000158 .. 0x00000162 at offset 20
(HOST) DEBUG LR=0x00000161 PC=0x0000017E
(HOST) TRACE 0x00000160: found FDE for 0x00000158 .. 0x00000162 at offset 52
(HOST) TRACE uwt row for pc 0x00000160: UnwindTableRow { start_address: 348, end_address: 354, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(7), offset: 8 }, registers: RegisterRuleMap { rules: [(Register(14), Offset(-4)), (Register(7), Offset(-8))] } }
(HOST) DEBUG update_cfa: CFA changed Some(2003fbb8) -> 2003fbc0
(HOST) TRACE update reg=Register(14), rule=Offset(-4), abs=0x2003fbbc -> value=0x0000013d
(HOST) TRACE update reg=Register(7), rule=Offset(-8), abs=0x2003fbb8 -> value=0x00000000
(HOST) DEBUG LR=0x0000013D PC=0x00000160
(HOST) TRACE 0x0000013c: found FDE for 0x00000100 .. 0x0000013e at offset 5688
(HOST) TRACE 0x0000013c: found FDE for 0x00000100 .. 0x0000013e at offset 36
(HOST) TRACE uwt row for pc 0x0000013c: UnwindTableRow { start_address: 256, end_address: 318, saved_args_size: 0, cfa: RegisterAndOffset { register: Register(13), offset: 0 }, registers: RegisterRuleMap { rules: [] } }
(HOST) DEBUG LR=0x0000013D PC=0x0000013C
(HOST) TRACE demangle Ok("_ZN3lib6inline5__udf17ha5cfb7665e0fe90cE") (language=Some(DwLang(1C))) -> Ok("lib::inline::__udf")
(HOST) TRACE demangle Ok("__udf") (language=Some(DwLang(1C))) -> Ok("__udf")
(HOST) TRACE demangle Ok("_ZN8cortex_m3asm3udf17he6ff4eef0237912cE") (language=Some(DwLang(1C))) -> Ok("cortex_m::asm::udf")
(HOST) TRACE demangle Ok("_ZN8cortex_m3asm3udf17hf580bd6f648768cdE") (language=Some(DwLang(1C))) -> Ok("cortex_m::asm::udf")
(HOST) TRACE demangle Ok("_defmt_panic") (language=Some(DwLang(1C))) -> Ok("_defmt_panic")
(HOST) TRACE demangle Ok("_ZN5defmt6export5panic17hedd7fcdbb5580196E") (language=Some(DwLang(1C))) -> Ok("defmt::export::panic")
(HOST) TRACE demangle Ok("_ZN5panic18__cortex_m_rt_main17haa1cdf94498fcb9aE") (language=Some(DwLang(1C))) -> Ok("panic::__cortex_m_rt_main")
(HOST) TRACE demangle Ok("_ZN5defmt6export5panic17h35131ca09663314fE") (language=Some(DwLang(1C))) -> Ok("defmt::export::panic")
(HOST) TRACE demangle Ok("_ZN5panic18__cortex_m_rt_main17h987df67efcfbeac1E") (language=Some(DwLang(1C))) -> Ok("panic::__cortex_m_rt_main")
(HOST) TRACE demangle Ok("main") (language=Some(DwLang(1C))) -> Ok("main")
stack backtrace:
0: 0x000017d2 @ HardFaultTrampoline
0: 0x00001770 @ HardFaultTrampoline
<exception entry>
1: 0x0000025a @ lib::inline::__udf
1: 0x00001620 @ lib::inline::__udf
at ./asm/inline.rs:181:5
2: 0x0000025a @ __udf
2: 0x00001620 @ __udf
at ./asm/lib.rs:51:17
3: 0x00000194 @ cortex_m::asm::udf
at [cortex-m-0.7.7]/src/asm.rs:43:5
4: 0x0000019e @ _defmt_panic
at /tmp/app/src/lib.rs:12:5
5: 0x0000018a @ defmt::export::panic
at [defmt-0.3.2]/src/export/mod.rs:133:14
6: 0x0000018a @ panic::__cortex_m_rt_main
at /tmp/app/src/bin/panic.rs:8:5
3: 0x00001610 @ cortex_m::asm::udf
at [cortex-m-0.7.7]/src/call_asm.rs:19:21
4: 0x00001610 @ _defmt_panic
at /test_elfs/src/lib.rs:12:5
5: 0x0000017e @ defmt::export::panic
at [defmt-0.3.4]/src/export/mod.rs:133:14
6: 0x0000017e @ panic::__cortex_m_rt_main
at /test_elfs/src/bin/panic.rs:8:5
7: 0x00000160 @ main
at /tmp/app/src/bin/panic.rs:6:1
at /test_elfs/src/bin/panic.rs:6:1
8: 0x0000013c @ Reset
(HOST) ERROR the program panicked

Original file line number Diff line number Diff line change
@@ -7,22 +7,23 @@ expression: run_result.output
(HOST) INFO flashing program (2 pages / 8.00 KiB)
(HOST) INFO success!
────────────────────────────────────────────────────────────────────────────────
ack(m=10, n=10, SP=2003bb98)
ack(m=10, n=9, SP=20037b78)
ack(m=10, n=8, SP=20033b58)
ack(m=10, n=7, SP=2002fb38)
ack(m=10, n=6, SP=2002bb18)
ack(m=10, n=5, SP=20027af8)
ack(m=10, n=4, SP=20023ad8)
ack(m=10, n=3, SP=2001fab8)
ack(m=10, n=2, SP=2001ba98)
ack(m=10, n=1, SP=20017a78)
ack(m=10, n=0, SP=20013a58)
ack(m=9, n=1, SP=2000fa38)
ack(m=9, n=0, SP=2000ba18)
ack(m=8, n=1, SP=200079f8)
ack(m=8, n=0, SP=200039d8)
ack(m=10, n=10, SP=0x2003bfd4)
ack(m=10, n=9, SP=0x20037fb4)
ack(m=10, n=8, SP=0x20033f94)
ack(m=10, n=7, SP=0x2002ff74)
ack(m=10, n=6, SP=0x2002bf54)
ack(m=10, n=5, SP=0x20027f34)
ack(m=10, n=4, SP=0x20023f14)
ack(m=10, n=3, SP=0x2001fef4)
ack(m=10, n=2, SP=0x2001bed4)
ack(m=10, n=1, SP=0x20017eb4)
ack(m=10, n=0, SP=0x20013e94)
ack(m=9, n=1, SP=0x2000fe74)
ack(m=9, n=0, SP=0x2000be54)
ack(m=8, n=1, SP=0x20007e34)
ack(m=8, n=0, SP=0x20003e14)
────────────────────────────────────────────────────────────────────────────────
(HOST) WARN program has used at least 240.62/254.93 KiB (94.4%) of stack space
(HOST) WARN data segments might be corrupted due to stack overflow
(HOST) ERROR the program has overflowed its stack

Loading