Skip to content

Commit 170176b

Browse files
committed
optimize argument
1 parent 22b87d8 commit 170176b

File tree

4 files changed

+32
-34
lines changed

4 files changed

+32
-34
lines changed

Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "atosl"
3-
version = "0.1.8"
3+
version = "0.1.9"
44
edition = "2021"
55
description = "🦀️atos for linux by rust - A partial replacement for Apple's atos tool for converting addresses within a binary file to symbols."
66
license = "MIT"

src/atosl.rs

+23-23
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub fn print_addresses(
1414
object_path: &str,
1515
load_address: u64,
1616
addresses: Vec<u64>,
17-
debug_mode: bool,
17+
verbose: bool,
1818
file_offset_type: bool,
1919
) -> Result<(), anyhow::Error> {
2020
let file = fs::File::open(&object_path)?;
@@ -27,27 +27,27 @@ pub fn print_addresses(
2727
.ok_or(anyhow!("file name error(to_str)"))?;
2828

2929
if is_object_dwarf(&object) {
30-
if debug_mode {
30+
if verbose {
3131
println!("dwarf");
3232
}
3333
dwarf_symbolize_addresses(
3434
&object,
3535
object_filename,
3636
load_address,
3737
addresses,
38-
debug_mode,
38+
verbose,
3939
file_offset_type,
4040
)
4141
} else {
42-
if debug_mode {
42+
if verbose {
4343
println!("symbols");
4444
}
4545
symbol_symbolize_addresses(
4646
&object,
4747
object_filename,
4848
load_address,
4949
addresses,
50-
debug_mode,
50+
verbose,
5151
file_offset_type,
5252
)
5353
}
@@ -66,7 +66,7 @@ fn symbol_symbolize_addresses(
6666
object_filename: &str,
6767
load_address: u64,
6868
addresses: Vec<u64>,
69-
debug_mode: bool,
69+
verbose: bool,
7070
file_offset_type: bool,
7171
) -> Result<(), anyhow::Error> {
7272
// find vmaddr for __TEXT segment
@@ -82,7 +82,7 @@ fn symbol_symbolize_addresses(
8282
}
8383

8484
for address in addresses {
85-
if debug_mode {
85+
if verbose {
8686
println!("---------------------------------------------");
8787
println!("BEGIN ADDRESS {} | {:016x}", address, address);
8888
}
@@ -93,18 +93,18 @@ fn symbol_symbolize_addresses(
9393
load_address,
9494
address,
9595
text_vmaddr,
96-
debug_mode,
96+
verbose,
9797
file_offset_type,
9898
);
99-
if debug_mode {
99+
if verbose {
100100
println!("RESULT:")
101101
}
102102
match symbol_result {
103103
Ok(symbol) => println!("{}", symbol),
104104
Err(err) => println!("N/A - {}", err),
105105
};
106106

107-
if debug_mode {
107+
if verbose {
108108
println!("END ADDRESS {} | {:016x}", address, address);
109109
}
110110
}
@@ -117,7 +117,7 @@ fn symbol_symbolize_address(
117117
load_address: u64,
118118
address: u64,
119119
text_vmaddr: u64,
120-
_debug_mode: bool,
120+
_verbose: bool,
121121
file_offset_type: bool,
122122
) -> Result<String, anyhow::Error> {
123123
let search_address: u64 = if file_offset_type {
@@ -146,7 +146,7 @@ fn dwarf_symbolize_addresses(
146146
object_filename: &str,
147147
load_address: u64,
148148
addresses: Vec<u64>,
149-
debug_mode: bool,
149+
verbose: bool,
150150
file_offset_type: bool,
151151
) -> Result<(), anyhow::Error> {
152152
let endian = if object.is_little_endian() {
@@ -178,7 +178,7 @@ fn dwarf_symbolize_addresses(
178178
}
179179

180180
for address in addresses {
181-
if debug_mode {
181+
if verbose {
182182
println!("---------------------------------------------");
183183
println!("BEGIN ADDRESS {} | {:016x}", address, address);
184184
}
@@ -189,10 +189,10 @@ fn dwarf_symbolize_addresses(
189189
load_address,
190190
address,
191191
text_vmaddr,
192-
debug_mode,
192+
verbose,
193193
file_offset_type,
194194
);
195-
if debug_mode {
195+
if verbose {
196196
println!("RESULT:")
197197
}
198198
match symbol_result {
@@ -205,7 +205,7 @@ fn dwarf_symbolize_addresses(
205205
load_address,
206206
address,
207207
text_vmaddr,
208-
debug_mode,
208+
verbose,
209209
file_offset_type,
210210
);
211211
match symbol_result {
@@ -215,7 +215,7 @@ fn dwarf_symbolize_addresses(
215215
}
216216
};
217217

218-
if debug_mode {
218+
if verbose {
219219
println!("END ADDRESS {} | {:016x}", address, address);
220220
}
221221
}
@@ -228,7 +228,7 @@ fn dwarf_symbolize_address(
228228
load_address: u64,
229229
address: u64,
230230
text_vmaddr: u64,
231-
debug_mode: bool,
231+
verbose: bool,
232232
file_offset_type: bool,
233233
) -> Result<String, anyhow::Error> {
234234
let search_address: u64 = if file_offset_type {
@@ -268,7 +268,7 @@ fn dwarf_symbolize_address(
268268
// catch header
269269
let debug_info_header = dwarf.debug_info.header_from_offset(debug_info_offset)?;
270270

271-
if debug_mode {
271+
if verbose {
272272
println!("got debug info header 0x{:016x}", debug_info_offset.0);
273273
};
274274

@@ -287,7 +287,7 @@ fn dwarf_symbolize_address(
287287
low_pc = Some(lowpc_val);
288288
let high_pc_value = entry.attr_value(gimli::DW_AT_high_pc);
289289

290-
if debug_mode {
290+
if verbose {
291291
println!("high pc value : {:?}", high_pc_value);
292292
}
293293

@@ -300,7 +300,7 @@ fn dwarf_symbolize_address(
300300
}
301301
}
302302

303-
if debug_mode {
303+
if verbose {
304304
println!("low pc = {:?}, high pc = {:?}", low_pc, high_pc)
305305
}
306306

@@ -317,7 +317,7 @@ fn dwarf_symbolize_address(
317317
}
318318
}
319319
}
320-
if debug_mode {
320+
if verbose {
321321
println!("found_symbol_name = {:?}", found_symbol_name);
322322
};
323323

@@ -358,7 +358,7 @@ fn dwarf_symbolize_address(
358358
}
359359
}
360360

361-
if debug_mode {
361+
if verbose {
362362
println!(
363363
"found_file_name = {:?} found_line = {:?}",
364364
found_file_name, found_line

src/main.rs

+7-9
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ struct Args {
2525
#[clap(parse(try_from_str = parse_address_string))]
2626
addresses: Vec<u64>,
2727

28-
/// Enable debug mode with extra output
29-
#[clap(short, default_value_t = 0)]
30-
debug: u8,
28+
/// Enable verbose mode with extra output
29+
#[clap(short)]
30+
verbose: bool,
3131

3232
/// Addresses are file offsets (ignore vmaddr in __TEXT or other executable segment)
33-
#[clap(short, default_value_t = 0)]
34-
file_offset_type: u8,
33+
#[clap(short)]
34+
file_offset_type: bool,
3535
}
3636

3737
fn parse_address_string(address: &str) -> Result<u64, anyhow::Error> {
@@ -48,15 +48,13 @@ fn parse_address_string(address: &str) -> Result<u64, anyhow::Error> {
4848
fn main() {
4949
let args = Args::parse();
5050
let object_path = args.object_path.into_os_string().into_string().unwrap();
51-
let debug_mode = args.debug != 0;
52-
let file_offset_type = args.file_offset_type != 0;
5351

5452
let result = atosl::print_addresses(
5553
&object_path,
5654
args.load_address,
5755
args.addresses,
58-
debug_mode,
59-
file_offset_type,
56+
args.verbose,
57+
args.file_offset_type,
6058
);
6159
match result {
6260
Ok(..) => {}

0 commit comments

Comments
 (0)