Create objdump file

This commit is contained in:
Jaby 2023-07-11 21:37:37 +02:00
parent bca17e4112
commit bb799349ff
2 changed files with 42 additions and 5 deletions

View File

@ -82,7 +82,7 @@
"",
"--help",
"--list -o ../Tests/Test_Planschbecken psx bin-cue ../Tests/ISO_Planschbecken.xml",
"${workspaceFolder}/../../examples/PoolBox/application/bin/PSX-release/PoolBox.map"
"--wsl ../../../examples/PoolBox/application/bin/PSX-release/PoolBox.elf"
],
"default": "",
"description": "Argument options to pass to cargo run"

View File

@ -1,16 +1,53 @@
use clap::Parser;
use readmap::types::{Content::*, Section};
use tool_helper::{Error, exit_with_error};
use std::{fs::File, io::{BufWriter, Write}, path::PathBuf};
use std::{fs::File, io::{BufRead, BufReader, BufWriter, Write}, path::PathBuf, process::{Child, Command, Stdio}};
#[derive(Parser)]
#[clap(about = "Opens and scans a MAP file to print extended information", long_about = None)]
struct CommandLine {
#[clap(value_parser, help="Input MAP file for scannning")]
input: Option<PathBuf>
input: PathBuf,
#[clap(long="wsl", default_value_t=false)]
use_wsl: bool,
}
fn run_objdump(use_wsl: bool, input: PathBuf) -> Result<Child, Error> {
let command_list = ["wsl", "objdump", "-x"];
let start_idx = {
if use_wsl {
0
}
else {
1
}
};
let mut process = Command::new(command_list[start_idx]);
for arg in command_list.iter().skip(start_idx + 1) {
process.arg(arg);
}
process.arg(input.to_str().ok_or_else(||{Error::from_str("Failed converting input string")})?);
println!("Miau: {:?}", process);
Ok(process.stdout(Stdio::piped()).spawn()?)
}
fn run_main(cmd: CommandLine) -> Result<(), Error> {
let mut child = run_objdump(cmd.use_wsl, cmd.input)?;
if let Some(stdout) = &mut child.stdout {
for line in BufReader::new(stdout).lines() {
if let Ok(line) = line {
println!("{}", line);
}
}
}
Ok(())
}
fn _run_main(cmd: CommandLine) -> Result<(), Error> {
fn value_to_hex<T: std::fmt::UpperHex>(value: T) -> String {
return format!("0x{:X}", value);
}
@ -25,8 +62,8 @@ fn run_main(cmd: CommandLine) -> Result<(), Error> {
}
}
let sections = readmap::scan(tool_helper::open_input(cmd.input)?)?;
let mut file = tool_helper::open_output_file(&PathBuf::from("./planschi.txt"))?;
let sections = readmap::scan(tool_helper::open_input(Some(cmd.input))?)?;
let mut file = tool_helper::open_output_file(&PathBuf::from("./planschi.d"))?;
for section in sections {
fn print_content(tab_level: usize, file: &mut BufWriter<File>, section: Section) -> Result<(), Error> {