From 2bcb71d0d582ca032fb9d340b697bc981cb80e40 Mon Sep 17 00:00:00 2001 From: Jaby Date: Thu, 1 Dec 2022 02:56:18 +0100 Subject: [PATCH] Write default linker script if no overlay were specified --- src/Tools/mkoverlay/Cargo.toml | 1 + src/Tools/mkoverlay/src/creator/ldscript.rs | 21 +++++++++++++++++++++ src/Tools/mkoverlay/src/creator/makefile.rs | 0 src/Tools/mkoverlay/src/creator/mod.rs | 2 ++ src/Tools/mkoverlay/src/lib.rs | 1 + src/Tools/mkoverlay/src/main.rs | 13 ++++++++++++- 6 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/Tools/mkoverlay/src/creator/ldscript.rs create mode 100644 src/Tools/mkoverlay/src/creator/makefile.rs create mode 100644 src/Tools/mkoverlay/src/creator/mod.rs diff --git a/src/Tools/mkoverlay/Cargo.toml b/src/Tools/mkoverlay/Cargo.toml index 9f0828db..f5e04de4 100644 --- a/src/Tools/mkoverlay/Cargo.toml +++ b/src/Tools/mkoverlay/Cargo.toml @@ -6,3 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +tool_helper = {path = "../tool_helper"} \ No newline at end of file diff --git a/src/Tools/mkoverlay/src/creator/ldscript.rs b/src/Tools/mkoverlay/src/creator/ldscript.rs new file mode 100644 index 00000000..bb27c2d5 --- /dev/null +++ b/src/Tools/mkoverlay/src/creator/ldscript.rs @@ -0,0 +1,21 @@ +use super::super::types::OverlaySlot; +use tool_helper::{Error, format_if_error, Output}; +use std::io::Write; + +const DEFAULT_LD_SCRIPT:&'static str = r#" +__heap_base = __bss_end; +"#; + +pub fn write(output: &mut Output, overlay_desc: &Vec) -> Result<(), Error> { + if overlay_desc.is_empty() { + return write_default(output); + } + + format_if_error!(write!(output, "Dino\n"), "Writing test output failed with: {error_text}")?; + return Ok(()); +} + +fn write_default(output: &mut Output) -> Result<(), Error> { + format_if_error!(output.write(DEFAULT_LD_SCRIPT.as_bytes()), "Writing default LD Script failed with: {error_text}")?; + Ok(()) +} \ No newline at end of file diff --git a/src/Tools/mkoverlay/src/creator/makefile.rs b/src/Tools/mkoverlay/src/creator/makefile.rs new file mode 100644 index 00000000..e69de29b diff --git a/src/Tools/mkoverlay/src/creator/mod.rs b/src/Tools/mkoverlay/src/creator/mod.rs new file mode 100644 index 00000000..7a248702 --- /dev/null +++ b/src/Tools/mkoverlay/src/creator/mod.rs @@ -0,0 +1,2 @@ +pub mod ldscript; +pub mod makefile; \ No newline at end of file diff --git a/src/Tools/mkoverlay/src/lib.rs b/src/Tools/mkoverlay/src/lib.rs index cd408564..1b70ab64 100644 --- a/src/Tools/mkoverlay/src/lib.rs +++ b/src/Tools/mkoverlay/src/lib.rs @@ -1 +1,2 @@ pub mod types; +pub mod creator; \ No newline at end of file diff --git a/src/Tools/mkoverlay/src/main.rs b/src/Tools/mkoverlay/src/main.rs index a66f20fe..d33d9630 100644 --- a/src/Tools/mkoverlay/src/main.rs +++ b/src/Tools/mkoverlay/src/main.rs @@ -1,4 +1,5 @@ use mkoverlay::types::{OverlaySection, OverlaySlot}; +use tool_helper::{Error, open_output}; fn generate_file() -> Vec { let mut slots = Vec::new(); @@ -13,6 +14,16 @@ fn generate_file() -> Vec { slots } +fn run_main() -> Result<(), Error> { + let input = generate_file(); + let mut output = open_output(None)?; + + mkoverlay::creator::ldscript::write(&mut output, &input) +} + fn main() { - println!("Blubbi: {:?}", generate_file()); + match run_main() { + Ok(()) => println!("Planschbecken!!"), + Err(error) => println!("{}", error), + } } \ No newline at end of file