From 1bf4886c6490914ac8a39ac1948d01cd7161680d Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Tue, 28 Apr 2026 00:53:46 +0200 Subject: [PATCH] choose experiments instead of builds for radare/objdump/wasm-objdump actions --- scripts/menu.pl | 125 ++++++++++++++++++++++-------------------------- 1 file changed, 56 insertions(+), 69 deletions(-) diff --git a/scripts/menu.pl b/scripts/menu.pl index 28e240f..0ba0399 100644 --- a/scripts/menu.pl +++ b/scripts/menu.pl @@ -300,7 +300,61 @@ my %handlers = ( ); }, - '15. Open Database in ResultBrowser (Mars)' => sub { + '15. Run Objdump on Experiment' => sub { + my $selected_experiment = Util::select_experiment(0); + + system( +"objdump $local_archive_dir/$selected_experiment/system.elf -D -M intel -S | bat --color never" + ); + }, + + '16. Run Wasm-Objdump on Experiment' => sub { + my $selected_experiment = Util::select_experiment(0); + + system( +"wasm-objdump -d $local_archive_dir/$selected_experiment/wasm_module.wasm | bat --color never" + ); + }, + + '17. Run Radare2 on Experiment' => sub { + my $selected_experiment = Util::select_experiment(0); + + say "Radare help:"; + say "s
- Seek to address"; + say "pd - Disassemble n instructions"; + say "pdf - Disassemble current function"; + say "pdf @ - Disassemble function"; + say "pdr - Disassemble recursively"; + say "V - Switch view"; + say "p - Switch print mode"; + say "P - Switch layout"; + system( + 'radare2', '-AA', + '-c', '"-s dbg.os_main"', + '-e', 'scr.color=3', + '-e', 'scr.scrollbar=0', + '-e', 'scr.responsive=true', + '-e', 'scr.interactive=true', + '-e', 'scr.utf8=true', + '-e', 'scr.utf8.curvy=true', + '-e', 'asm.syntax=intel', + '-e', 'asm.lines=false', + '-e', 'asm.xrefs=true', + '-e', 'asm.flags=true', + '-e', 'asm.comments=true', + '-e', 'asm.functions=true', + '-e', 'asm.var=true', + '-e', 'asm.cmt.right=true', + '-e', 'asm.dwarf=true', + '-e', 'asm.pseudo=false', + '-e', 'asm.describe=false', + '-e', 'bin.relocs.apply=true', + "$local_archive_dir/$selected_experiment/system.elf", + + ); + }, + + '18. Open Database in ResultBrowser (Mars)' => sub { my @db_names = Mars::db_list(); my @selected_dbs = @@ -316,7 +370,7 @@ my %handlers = ( "--port=$resultbrowser_port" ); }, - '16. Open Database in LazySQL (Mars)' => sub { + '19. Open Database in LazySQL (Mars)' => sub { my $experiment = Util::select_experiment(0) =~ s/T(\d\d)-(\d\d)-(\d\d)/T$1:$2:$3/r; my $ssh = Mars::ssh_connect(); @@ -364,73 +418,6 @@ my %handlers = ( ); }, - '21. Run Objdump on Build' => sub { - my @builds = Util::find_subdirs($local_builds_dir); - my @selected_builds = - TUI::select_from_list( "Select Build to Objdump", 0, @builds ); - die "No build selected" unless @selected_builds; - my $selected_build = $selected_builds[0]; - - my $build_dir = "$local_builds_dir/$selected_build"; - system( - "objdump $build_dir/system.elf -D -M intel -S | bat --color never"); - }, - - '22. Run Wasm-Objdump on Build' => sub { - my @builds = Util::find_subdirs($local_builds_dir); - my @selected_builds = - TUI::select_from_list( "Select Build to Wasm-Objdump", 0, @builds ); - die "No build selected" unless @selected_builds; - my $selected_build = $selected_builds[0]; - - my $build_dir = "$local_builds_dir/$selected_build"; - system( - "wasm-objdump -d $build_dir/wasm_module.wasm | bat --color never"); - }, - - '23. Run Radare2 on Build' => sub { - my @builds = Util::find_subdirs($local_builds_dir); - my @selected_builds = - TUI::select_from_list( "Select Build to Objdump", 0, @builds ); - die "No build selected" unless @selected_builds; - my $selected_build = $selected_builds[0]; - - my $build_dir = "$local_builds_dir/$selected_build"; - say "Radare help:"; - say "s
- Seek to address"; - say "pd - Disassemble n instructions"; - say "pdf - Disassemble current function"; - say "pdf @ - Disassemble function"; - say "pdr - Disassemble recursively"; - say "V - Switch view"; - say "p - Switch print mode"; - say "P - Switch layout"; - system( - 'radare2', '-AA', - '-c', '"-s dbg.os_main"', - '-e', 'scr.color=3', - '-e', 'scr.scrollbar=0', - '-e', 'scr.responsive=true', - '-e', 'scr.interactive=true', - '-e', 'scr.utf8=true', - '-e', 'scr.utf8.curvy=true', - '-e', 'asm.syntax=intel', - '-e', 'asm.lines=false', - '-e', 'asm.xrefs=true', - '-e', 'asm.flags=true', - '-e', 'asm.comments=true', - '-e', 'asm.functions=true', - '-e', 'asm.var=true', - '-e', 'asm.cmt.right=true', - '-e', 'asm.dwarf=true', - '-e', 'asm.pseudo=false', - '-e', 'asm.describe=false', - '-e', 'bin.relocs.apply=true', - "$build_dir/system.elf", - - ); - }, - '30. Plot Results' => sub { # Generate R ggplot2 charts