diff --git a/src/lib.rs b/src/lib.rs index 212f2c992bbda4dbda485af0f96b0f2bf7891f49..86afd9bffe30fc55b338c4be3966f5411be5cb2e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,9 +1,9 @@ #![doc = include_str!("../README.md")] -mod new; mod link; -mod symbols; +mod new; mod rel_iter; +mod symbols; use anyhow::Result; use clap::{Parser, Subcommand}; @@ -17,7 +17,7 @@ pub struct Opts { #[derive(Subcommand, Debug)] pub enum PipToolSubcommand { - /// Generate a new pip partition project + /// Generate a new pip partition project New(new::Opts), /// Link elf files together and generate a binary blob ready to be /// flashed/loaded diff --git a/src/link.rs b/src/link.rs index c048b6f566ed644d221aab2f7647fa30fbf5a3a9..e8ef44bc15c795d071ee58d63385f113ad12034b 100644 --- a/src/link.rs +++ b/src/link.rs @@ -193,7 +193,11 @@ pub fn link(opts: Opts) -> Result<()> { // Dump .rom section in a vec let mut rom_bytes: Vec<u8> = vec![]; - dump_sections(&user_code_elf, &[".rom"], &mut rom_bytes)?; + dump_sections( + &user_code_elf, + &[".rom", ".ARM.exidx", ".got", ".rom.ram"], + &mut rom_bytes, + )?; // Now the patch table for the .rom section (included in the .rel.rom section) match get_relocations_from_section(&user_code_elf, ".rel.rom")? { diff --git a/src/main.rs b/src/main.rs index ba22daa576eef2e0ad797cf7dbfdeb8f82c77933..751f7325f1ebc78a26a7b21d448315f1eebe7692 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,8 @@ #![doc = include_str!("../README.md")] -use clap::Parser; -use cargo_pip::{Opts,execute}; use anyhow::Result; - +use cargo_pip::{execute, Opts}; +use clap::Parser; fn main() -> Result<()> { let opts = Opts::parse(); diff --git a/src/new.rs b/src/new.rs index 5bc60be3082fb14524fb3bec009c1e153d73f2cb..00513f7bf2b0e1f810cc1962a1e8778a0a8a3fb0 100644 --- a/src/new.rs +++ b/src/new.rs @@ -29,13 +29,11 @@ pub fn generate(opts: Opts) -> Result<()> { .unwrap() .to_os_string() .into_string() - .unwrap() + .unwrap(), }; let scaffold_opts = cargo_scaffold::Opts::builder(PIP_MPU_TEMPLATE_PATH) - .parameters(vec![ - format!("crate_name={}", crate_name), - ]) + .parameters(vec![format!("crate_name={}", crate_name)]) .force(true) .project_name(crate_name) .target_dir(opts.crate_path);