Skip to content

Commit dcbecd0

Browse files
committed
refactored a bit
1 parent f1d9a0b commit dcbecd0

File tree

7 files changed

+104
-138
lines changed

7 files changed

+104
-138
lines changed

src/constants.rs

Lines changed: 100 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ pub const MH_MAGIC_64: u32 = 0xfeedfacf; // Big endian, 64 bit Mach-O
55
pub const MH_CIGAM_64: u32 = 0xcffaedfe; // Little endian, 64 bit Mach-O
66

77
// cputype
8-
pub const CPU_ARCH_MASK: i32 = 0xff000000u32 as i32; // Mask for architecture bits
8+
// pub const CPU_ARCH_MASK: i32 = 0xff000000u32 as i32; // Mask for architecture bits
99
pub const CPU_ARCH_ABI64: i32 = 0x01000000u32 as i32; // 64-bit ABI
1010

1111
pub const CPU_TYPE_ANY: i32 = -1;
@@ -15,7 +15,6 @@ pub const CPU_TYPE_NS32032: i32 = 4;
1515
pub const CPU_TYPE_NS32332: i32 = 5;
1616
pub const CPU_TYPE_MC680X0: i32 = 6;
1717
pub const CPU_TYPE_X86: i32 = 7;
18-
pub const CPU_TYPE_I386: i32 = CPU_TYPE_X86;
1918
pub const CPU_TYPE_X86_64: i32 = CPU_TYPE_X86 | CPU_ARCH_ABI64;
2019
pub const CPU_TYPE_MIPS: i32 = 8;
2120
pub const CPU_TYPE_NS32352: i32 = 9;
@@ -32,109 +31,109 @@ pub const CPU_TYPE_POWERPC: i32 = 18;
3231
pub const CPU_TYPE_POWERPC64: i32 = CPU_TYPE_POWERPC | CPU_ARCH_ABI64;
3332

3433
// cpusubtype
35-
pub const CPU_SUBTYPE_MASK: u32 = 0xff000000; /* mask for feature flags */
36-
pub const CPU_SUBTYPE_LIB64: u32 = 0x80000000; /* 64 bit libraries */
34+
// pub const CPU_SUBTYPE_MASK: u32 = 0xff000000; /* mask for feature flags */
35+
// pub const CPU_SUBTYPE_LIB64: u32 = 0x80000000; /* 64 bit libraries */
3736

3837
pub const CPU_SUBTYPE_MULTIPLE: i32 = -1;
3938
pub const CPU_SUBTYPE_LITTLE_ENDIAN: i32 = 0;
4039
pub const CPU_SUBTYPE_BIG_ENDIAN: i32 = 1;
41-
pub const CPU_THREADTYPE_NONE: i32 = 0;
42-
pub const CPU_SUBTYPE_VAX_ALL: i32 = 0;
43-
pub const CPU_SUBTYPE_VAX780: i32 = 1;
44-
pub const CPU_SUBTYPE_VAX785: i32 = 2;
45-
pub const CPU_SUBTYPE_VAX750: i32 = 3;
46-
pub const CPU_SUBTYPE_VAX730: i32 = 4;
47-
pub const CPU_SUBTYPE_UVAXI: i32 = 5;
48-
pub const CPU_SUBTYPE_UVAXII: i32 = 6;
49-
pub const CPU_SUBTYPE_VAX8200: i32 = 7;
50-
pub const CPU_SUBTYPE_VAX8500: i32 = 8;
51-
pub const CPU_SUBTYPE_VAX8600: i32 = 9;
52-
pub const CPU_SUBTYPE_VAX8650: i32 = 10;
53-
pub const CPU_SUBTYPE_VAX8800: i32 = 11;
54-
pub const CPU_SUBTYPE_UVAXIII: i32 = 12;
55-
pub const CPU_SUBTYPE_MC680X0_ALL: i32 = 1;
56-
pub const CPU_SUBTYPE_MC68030: i32 = 1;
57-
pub const CPU_SUBTYPE_MC68040: i32 = 2;
58-
pub const CPU_SUBTYPE_MC68030_ONLY: i32 = 3;
59-
pub const CPU_SUBTYPE_INTEL_MODEL_ALL: i32 = 0;
60-
pub const CPU_SUBTYPE_X86_ALL: i32 = 3;
61-
pub const CPU_SUBTYPE_X86_64_ALL: i32 = 3;
62-
pub const CPU_SUBTYPE_X86_ARCH1: i32 = 4;
63-
pub const CPU_SUBTYPE_X86_64_H: i32 = 8;
64-
pub const CPU_THREADTYPE_INTEL_HTT: i32 = 1;
65-
pub const CPU_SUBTYPE_MIPS_ALL: i32 = 0;
66-
pub const CPU_SUBTYPE_MIPS_R2300: i32 = 1;
67-
pub const CPU_SUBTYPE_MIPS_R2600: i32 = 2;
68-
pub const CPU_SUBTYPE_MIPS_R2800: i32 = 3;
69-
pub const CPU_SUBTYPE_MIPS_R2000A: i32 = 4;
70-
pub const CPU_SUBTYPE_MIPS_R2000: i32 = 5;
71-
pub const CPU_SUBTYPE_MIPS_R3000A: i32 = 6;
72-
pub const CPU_SUBTYPE_MIPS_R3000: i32 = 7;
73-
pub const CPU_SUBTYPE_MC98000_ALL: i32 = 0;
74-
pub const CPU_SUBTYPE_MC98601: i32 = 1;
75-
pub const CPU_SUBTYPE_HPPA_ALL: i32 = 0;
76-
pub const CPU_SUBTYPE_HPPA_7100: i32 = 0;
77-
pub const CPU_SUBTYPE_HPPA_7100LC: i32 = 1;
78-
pub const CPU_SUBTYPE_MC88000_ALL: i32 = 0;
79-
pub const CPU_SUBTYPE_MC88100: i32 = 1;
80-
pub const CPU_SUBTYPE_MC88110: i32 = 2;
81-
pub const CPU_SUBTYPE_SPARC_ALL: i32 = 0;
82-
pub const CPU_SUBTYPE_I860_ALL: i32 = 0;
83-
pub const CPU_SUBTYPE_I860_860: i32 = 1;
84-
pub const CPU_SUBTYPE_POWERPC_ALL: i32 = 0;
85-
pub const CPU_SUBTYPE_POWERPC_601: i32 = 1;
86-
pub const CPU_SUBTYPE_POWERPC_602: i32 = 2;
87-
pub const CPU_SUBTYPE_POWERPC_603: i32 = 3;
88-
pub const CPU_SUBTYPE_POWERPC_603E: i32 = 4;
89-
pub const CPU_SUBTYPE_POWERPC_603EV: i32 = 5;
90-
pub const CPU_SUBTYPE_POWERPC_604: i32 = 6;
91-
pub const CPU_SUBTYPE_POWERPC_604E: i32 = 7;
92-
pub const CPU_SUBTYPE_POWERPC_620: i32 = 8;
93-
pub const CPU_SUBTYPE_POWERPC_750: i32 = 9;
94-
pub const CPU_SUBTYPE_POWERPC_7400: i32 = 10;
95-
pub const CPU_SUBTYPE_POWERPC_7450: i32 = 11;
96-
pub const CPU_SUBTYPE_POWERPC_970: i32 = 100;
97-
pub const CPU_SUBTYPE_ARM_ALL: i32 = 0;
98-
pub const CPU_SUBTYPE_ARM_V4T: i32 = 5;
99-
pub const CPU_SUBTYPE_ARM_V6: i32 = 6;
100-
pub const CPU_SUBTYPE_ARM_V5TEJ: i32 = 7;
101-
pub const CPU_SUBTYPE_ARM_XSCALE: i32 = 8;
102-
pub const CPU_SUBTYPE_ARM_V7: i32 = 9;
103-
pub const CPU_SUBTYPE_ARM_V7F: i32 = 10;
104-
pub const CPU_SUBTYPE_ARM_V7S: i32 = 11;
105-
pub const CPU_SUBTYPE_ARM_V7K: i32 = 12;
106-
pub const CPU_SUBTYPE_ARM_V6M: i32 = 14;
107-
pub const CPU_SUBTYPE_ARM_V7M: i32 = 15;
108-
pub const CPU_SUBTYPE_ARM_V7EM: i32 = 16;
109-
pub const CPU_SUBTYPE_ARM_V8: i32 = 13;
110-
pub const CPU_SUBTYPE_ARM64_ALL: i32 = 0;
111-
pub const CPU_SUBTYPE_ARM64_V8: i32 = 1;
112-
pub const CPUFAMILY_UNKNOWN: u32 = 0;
113-
pub const CPUFAMILY_POWERPC_G3: u32 = 0xcee41549;
114-
pub const CPUFAMILY_POWERPC_G4: u32 = 0x77c184ae;
115-
pub const CPUFAMILY_POWERPC_G5: u32 = 0xed76d8aa;
116-
pub const CPUFAMILY_INTEL_6_13: u32 = 0xaa33392b;
117-
pub const CPUFAMILY_INTEL_PENRYN: u32 = 0x78ea4fbc;
118-
pub const CPUFAMILY_INTEL_NEHALEM: u32 = 0x6b5a4cd2;
119-
pub const CPUFAMILY_INTEL_WESTMERE: u32 = 0x573b5eec;
120-
pub const CPUFAMILY_INTEL_SANDYBRIDGE: u32 = 0x5490b78c;
121-
pub const CPUFAMILY_INTEL_IVYBRIDGE: u32 = 0x1f65e835;
122-
pub const CPUFAMILY_INTEL_HASWELL: u32 = 0x10b282dc;
123-
pub const CPUFAMILY_INTEL_BROADWELL: u32 = 0x582ed09c;
124-
pub const CPUFAMILY_INTEL_SKYLAKE: u32 = 0x37fc219f;
125-
pub const CPUFAMILY_INTEL_KABYLAKE: u32 = 0x0f817246;
126-
pub const CPUFAMILY_ARM_9: u32 = 0xe73283ae;
127-
pub const CPUFAMILY_ARM_11: u32 = 0x8ff620d8;
128-
pub const CPUFAMILY_ARM_XSCALE: u32 = 0x53b005f5;
129-
pub const CPUFAMILY_ARM_12: u32 = 0xbd1b0ae9;
130-
pub const CPUFAMILY_ARM_13: u32 = 0x0cc90e64;
131-
pub const CPUFAMILY_ARM_14: u32 = 0x96077ef1;
132-
pub const CPUFAMILY_ARM_15: u32 = 0xa8511bca;
133-
pub const CPUFAMILY_ARM_SWIFT: u32 = 0x1e2d6381;
134-
pub const CPUFAMILY_ARM_CYCLONE: u32 = 0x37a09642;
135-
pub const CPUFAMILY_ARM_TYPHOON: u32 = 0x2c91a47e;
136-
pub const CPUFAMILY_ARM_TWISTER: u32 = 0x92fb37c8;
137-
pub const CPUFAMILY_ARM_HURRICANE: u32 = 0x67ceee93;
40+
// pub const CPU_THREADTYPE_NONE: i32 = 0;
41+
// pub const CPU_SUBTYPE_VAX_ALL: i32 = 0;
42+
// pub const CPU_SUBTYPE_VAX780: i32 = 1;
43+
// pub const CPU_SUBTYPE_VAX785: i32 = 2;
44+
// pub const CPU_SUBTYPE_VAX750: i32 = 3;
45+
// pub const CPU_SUBTYPE_VAX730: i32 = 4;
46+
// pub const CPU_SUBTYPE_UVAXI: i32 = 5;
47+
// pub const CPU_SUBTYPE_UVAXII: i32 = 6;
48+
// pub const CPU_SUBTYPE_VAX8200: i32 = 7;
49+
// pub const CPU_SUBTYPE_VAX8500: i32 = 8;
50+
// pub const CPU_SUBTYPE_VAX8600: i32 = 9;
51+
// pub const CPU_SUBTYPE_VAX8650: i32 = 10;
52+
// pub const CPU_SUBTYPE_VAX8800: i32 = 11;
53+
// pub const CPU_SUBTYPE_UVAXIII: i32 = 12;
54+
// pub const CPU_SUBTYPE_MC680X0_ALL: i32 = 1;
55+
// pub const CPU_SUBTYPE_MC68030: i32 = 1;
56+
// pub const CPU_SUBTYPE_MC68040: i32 = 2;
57+
// pub const CPU_SUBTYPE_MC68030_ONLY: i32 = 3;
58+
// pub const CPU_SUBTYPE_INTEL_MODEL_ALL: i32 = 0;
59+
// pub const CPU_SUBTYPE_X86_ALL: i32 = 3;
60+
// pub const CPU_SUBTYPE_X86_64_ALL: i32 = 3;
61+
// pub const CPU_SUBTYPE_X86_ARCH1: i32 = 4;
62+
// pub const CPU_SUBTYPE_X86_64_H: i32 = 8;
63+
// pub const CPU_THREADTYPE_INTEL_HTT: i32 = 1;
64+
// pub const CPU_SUBTYPE_MIPS_ALL: i32 = 0;
65+
// pub const CPU_SUBTYPE_MIPS_R2300: i32 = 1;
66+
// pub const CPU_SUBTYPE_MIPS_R2600: i32 = 2;
67+
// pub const CPU_SUBTYPE_MIPS_R2800: i32 = 3;
68+
// pub const CPU_SUBTYPE_MIPS_R2000A: i32 = 4;
69+
// pub const CPU_SUBTYPE_MIPS_R2000: i32 = 5;
70+
// pub const CPU_SUBTYPE_MIPS_R3000A: i32 = 6;
71+
// pub const CPU_SUBTYPE_MIPS_R3000: i32 = 7;
72+
// pub const CPU_SUBTYPE_MC98000_ALL: i32 = 0;
73+
// pub const CPU_SUBTYPE_MC98601: i32 = 1;
74+
// pub const CPU_SUBTYPE_HPPA_ALL: i32 = 0;
75+
// pub const CPU_SUBTYPE_HPPA_7100: i32 = 0;
76+
// pub const CPU_SUBTYPE_HPPA_7100LC: i32 = 1;
77+
// pub const CPU_SUBTYPE_MC88000_ALL: i32 = 0;
78+
// pub const CPU_SUBTYPE_MC88100: i32 = 1;
79+
// pub const CPU_SUBTYPE_MC88110: i32 = 2;
80+
// pub const CPU_SUBTYPE_SPARC_ALL: i32 = 0;
81+
// pub const CPU_SUBTYPE_I860_ALL: i32 = 0;
82+
// pub const CPU_SUBTYPE_I860_860: i32 = 1;
83+
// pub const CPU_SUBTYPE_POWERPC_ALL: i32 = 0;
84+
// pub const CPU_SUBTYPE_POWERPC_601: i32 = 1;
85+
// pub const CPU_SUBTYPE_POWERPC_602: i32 = 2;
86+
// pub const CPU_SUBTYPE_POWERPC_603: i32 = 3;
87+
// pub const CPU_SUBTYPE_POWERPC_603E: i32 = 4;
88+
// pub const CPU_SUBTYPE_POWERPC_603EV: i32 = 5;
89+
// pub const CPU_SUBTYPE_POWERPC_604: i32 = 6;
90+
// pub const CPU_SUBTYPE_POWERPC_604E: i32 = 7;
91+
// pub const CPU_SUBTYPE_POWERPC_620: i32 = 8;
92+
// pub const CPU_SUBTYPE_POWERPC_750: i32 = 9;
93+
// pub const CPU_SUBTYPE_POWERPC_7400: i32 = 10;
94+
// pub const CPU_SUBTYPE_POWERPC_7450: i32 = 11;
95+
// pub const CPU_SUBTYPE_POWERPC_970: i32 = 100;
96+
// pub const CPU_SUBTYPE_ARM_ALL: i32 = 0;
97+
// pub const CPU_SUBTYPE_ARM_V4T: i32 = 5;
98+
// pub const CPU_SUBTYPE_ARM_V6: i32 = 6;
99+
// pub const CPU_SUBTYPE_ARM_V5TEJ: i32 = 7;
100+
// pub const CPU_SUBTYPE_ARM_XSCALE: i32 = 8;
101+
// pub const CPU_SUBTYPE_ARM_V7: i32 = 9;
102+
// pub const CPU_SUBTYPE_ARM_V7F: i32 = 10;
103+
// pub const CPU_SUBTYPE_ARM_V7S: i32 = 11;
104+
// pub const CPU_SUBTYPE_ARM_V7K: i32 = 12;
105+
// pub const CPU_SUBTYPE_ARM_V6M: i32 = 14;
106+
// pub const CPU_SUBTYPE_ARM_V7M: i32 = 15;
107+
// pub const CPU_SUBTYPE_ARM_V7EM: i32 = 16;
108+
// pub const CPU_SUBTYPE_ARM_V8: i32 = 13;
109+
// pub const CPU_SUBTYPE_ARM64_ALL: i32 = 0;
110+
// pub const CPU_SUBTYPE_ARM64_V8: i32 = 1;
111+
// pub const CPUFAMILY_UNKNOWN: u32 = 0;
112+
// pub const CPUFAMILY_POWERPC_G3: u32 = 0xcee41549;
113+
// pub const CPUFAMILY_POWERPC_G4: u32 = 0x77c184ae;
114+
// pub const CPUFAMILY_POWERPC_G5: u32 = 0xed76d8aa;
115+
// pub const CPUFAMILY_INTEL_6_13: u32 = 0xaa33392b;
116+
// pub const CPUFAMILY_INTEL_PENRYN: u32 = 0x78ea4fbc;
117+
// pub const CPUFAMILY_INTEL_NEHALEM: u32 = 0x6b5a4cd2;
118+
// pub const CPUFAMILY_INTEL_WESTMERE: u32 = 0x573b5eec;
119+
// pub const CPUFAMILY_INTEL_SANDYBRIDGE: u32 = 0x5490b78c;
120+
// pub const CPUFAMILY_INTEL_IVYBRIDGE: u32 = 0x1f65e835;
121+
// pub const CPUFAMILY_INTEL_HASWELL: u32 = 0x10b282dc;
122+
// pub const CPUFAMILY_INTEL_BROADWELL: u32 = 0x582ed09c;
123+
// pub const CPUFAMILY_INTEL_SKYLAKE: u32 = 0x37fc219f;
124+
// pub const CPUFAMILY_INTEL_KABYLAKE: u32 = 0x0f817246;
125+
// pub const CPUFAMILY_ARM_9: u32 = 0xe73283ae;
126+
// pub const CPUFAMILY_ARM_11: u32 = 0x8ff620d8;
127+
// pub const CPUFAMILY_ARM_XSCALE: u32 = 0x53b005f5;
128+
// pub const CPUFAMILY_ARM_12: u32 = 0xbd1b0ae9;
129+
// pub const CPUFAMILY_ARM_13: u32 = 0x0cc90e64;
130+
// pub const CPUFAMILY_ARM_14: u32 = 0x96077ef1;
131+
// pub const CPUFAMILY_ARM_15: u32 = 0xa8511bca;
132+
// pub const CPUFAMILY_ARM_SWIFT: u32 = 0x1e2d6381;
133+
// pub const CPUFAMILY_ARM_CYCLONE: u32 = 0x37a09642;
134+
// pub const CPUFAMILY_ARM_TYPHOON: u32 = 0x2c91a47e;
135+
// pub const CPUFAMILY_ARM_TWISTER: u32 = 0x92fb37c8;
136+
// pub const CPUFAMILY_ARM_HURRICANE: u32 = 0x67ceee93;
138137

139138
// filetype
140139
pub const MH_OBJECT: u32 = 0x1; // Relocatable object file

src/error.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,4 @@ use std::io;
66
pub enum AppError {
77
#[error("IO Error")]
88
Io(#[from] io::Error),
9-
#[error("Other Error: {0}")]
10-
Other(String),
119
}

src/header.rs

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,12 @@ pub enum MachHeader {
1010
}
1111

1212
impl MachHeader {
13-
pub fn magic(&self) -> u32 {
14-
match self {
15-
MachHeader::MH32(header) => header.magic,
16-
MachHeader::MH64(header) => header.magic,
17-
}
18-
}
19-
2013
pub fn ncmds(&self) -> u32 {
2114
match self {
2215
MachHeader::MH32(header) => header.ncmds,
2316
MachHeader::MH64(header) => header.ncmds,
2417
}
2518
}
26-
27-
pub fn sizeofcmds(&self) -> u32 {
28-
match self {
29-
MachHeader::MH32(header) => header.sizeofcmds,
30-
MachHeader::MH64(header) => header.sizeofcmds,
31-
}
32-
}
3319
}
3420

3521
#[derive(Debug)]

src/main.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#[macro_use] extern crate prettytable;
2-
31
use std::fs::File;
42
use std::path::PathBuf;
53

src/memory_utils.rs

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,4 @@
1-
use std::io::{self, Cursor, Read, Seek, SeekFrom};
2-
3-
pub fn get_memory_slice<R: Read + Seek>(file: &mut R, size: usize, advance_seek: bool) -> io::Result<Cursor<Vec<u8>>> {
4-
match advance_seek {
5-
true => {
6-
let mut buffer = vec![0; size];
7-
file.read(&mut buffer)?;
8-
Ok(Cursor::new(buffer))
9-
}
10-
false => {
11-
let current_pos = file.stream_position()?;
12-
let mut buffer = vec![0; size];
13-
file.read(&mut buffer)?;
14-
file.seek(SeekFrom::Start(current_pos))?;
15-
Ok(Cursor::new(buffer))
16-
}
17-
}
18-
}
1+
use std::io::{self, Read, Seek, SeekFrom};
192

203
pub fn get_file_offset<R: Read + Seek>(file: &mut R) -> io::Result<u64> {
214
file.stream_position()

src/parser.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ fn parse_load_commands<R: Read + Seek, E: ByteOrder>(file: &mut R, header: &Mach
7171
Ok((load_commands, sections, load_commands_strings))
7272
}
7373

74+
// TODO: Handle all of the warnings emitted from building. I need to sub-parse some commands...
7475
fn parse_command<R: Read, E: ByteOrder>(file: &mut R, load_command_prefix: &LoadCommandPrefix) ->Result<LoadCommand, AppError> {
7576
match load_command_prefix.cmd {
7677
LC_SYMTAB => SymtabCommand::from_file::<R, E>(file, load_command_prefix),
@@ -107,6 +108,8 @@ fn parse_command<R: Read, E: ByteOrder>(file: &mut R, load_command_prefix: &Load
107108
}
108109
}
109110

111+
112+
// TODO: make sure this works as intentional by printing it in printer.rs or by debug...
110113
fn parse_sections_for_segment<R: Read + Seek, E: ByteOrder>(file: &mut R, load_command: &LoadCommand) -> Result<Vec<Section>, AppError> {
111114
let mut load_command_sections = Vec::new();
112115
match load_command {

src/printer.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ fn print_header_cputype(cputype: i32, table: &mut Table) {
5858
CPU_TYPE_NS32332 => ("CPU_TYPE_NS32332", "NS32332"),
5959
CPU_TYPE_MC680X0 => ("CPU_TYPE_MC680X0", "MC680X0"),
6060
CPU_TYPE_X86 => ("CPU_TYPE_X86", "X86"),
61-
CPU_TYPE_I386 => ("CPU_TYPE_I386", "I386"),
6261
CPU_TYPE_X86_64 => ("CPU_TYPE_X86_64", "X86_64"),
6362
CPU_TYPE_MIPS => ("CPU_TYPE_MIPS", "MIPS"),
6463
CPU_TYPE_NS32352 => ("CPU_TYPE_NS32352", "NS32352"),

0 commit comments

Comments
 (0)