From 2cc6fe6843a0f1191c7020325c58262d34d51ace Mon Sep 17 00:00:00 2001
From: Damien Amara <damien.amara@univ-lille.fr>
Date: Fri, 14 Jun 2024 16:31:18 +0200
Subject: [PATCH] Fix user code section export

---
 src/lib.rs  | 6 +++---
 src/link.rs | 6 +++++-
 src/main.rs | 5 ++---
 src/new.rs  | 6 ++----
 4 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/lib.rs b/src/lib.rs
index 212f2c9..86afd9b 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 c048b6f..e8ef44b 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 ba22daa..751f732 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 5bc60be..00513f7 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);
-- 
GitLab