choose experiments instead of builds for radare/objdump/wasm-objdump actions

This commit is contained in:
2026-04-28 00:53:46 +02:00
parent e33fed9b8d
commit 1bf4886c64

View File

@ -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 <address> - Seek to address";
say "pd <n> - Disassemble n instructions";
say "pdf - Disassemble current function";
say "pdf @ <function> - 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 <address> - Seek to address";
say "pd <n> - Disassemble n instructions";
say "pdf - Disassemble current function";
say "pdf @ <function> - 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