mirror of
https://github.com/encounter/object.git
synced 2026-07-10 12:18:39 -07:00
readobj: print mach-o integer fields as version strings as appropriate (#813)
This commit is contained in:
@@ -3,6 +3,19 @@ use object::macho::*;
|
||||
use object::read::macho::*;
|
||||
use object::BigEndian;
|
||||
|
||||
trait PrinterMachoExt {
|
||||
fn field_version(&mut self, name: &str, value: u32);
|
||||
}
|
||||
|
||||
impl<'a> PrinterMachoExt for Printer<'a> {
|
||||
fn field_version(&mut self, name: &str, value: u32) {
|
||||
let major = (value >> 16) & 0xFFFF;
|
||||
let minor = (value >> 8) & 0xFF;
|
||||
let update = value & 0xFF;
|
||||
self.field(name, format!("{}.{}.{}", major, minor, update));
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn print_dyld_cache(p: &mut Printer<'_>, data: &[u8], subcache_data: &[&[u8]]) {
|
||||
print_dyld_subcache(p, data);
|
||||
for subcache in subcache_data {
|
||||
@@ -417,8 +430,8 @@ fn print_load_command<Mach: MachHeader>(
|
||||
command.string(endian, x.dylib.name),
|
||||
);
|
||||
p.field("Timestamp", x.dylib.timestamp.get(endian));
|
||||
p.field_hex("CurrentVersion", x.dylib.current_version.get(endian));
|
||||
p.field_hex(
|
||||
p.field_version("CurrentVersion", x.dylib.current_version.get(endian));
|
||||
p.field_version(
|
||||
"CompatibilityVersion",
|
||||
x.dylib.compatibility_version.get(endian),
|
||||
);
|
||||
@@ -606,8 +619,8 @@ fn print_load_command<Mach: MachHeader>(
|
||||
p.group("VersionMinCommand", |p| {
|
||||
p.field_enum("Cmd", x.cmd.get(endian), FLAGS_LC);
|
||||
p.field_hex("CmdSize", x.cmdsize.get(endian));
|
||||
p.field_hex("Version", x.version.get(endian));
|
||||
p.field_hex("Sdk", x.sdk.get(endian));
|
||||
p.field_version("Version", x.version.get(endian));
|
||||
p.field_version("Sdk", x.sdk.get(endian));
|
||||
});
|
||||
}
|
||||
LoadCommandVariant::EntryPoint(x) => {
|
||||
@@ -648,8 +661,8 @@ fn print_load_command<Mach: MachHeader>(
|
||||
p.field_enum("Cmd", x.cmd.get(endian), FLAGS_LC);
|
||||
p.field_hex("CmdSize", x.cmdsize.get(endian));
|
||||
p.field_enum("Platform", x.platform.get(endian), FLAGS_PLATFORM);
|
||||
p.field_hex("MinOs", x.minos.get(endian));
|
||||
p.field_hex("Sdk", x.sdk.get(endian));
|
||||
p.field_version("MinOs", x.minos.get(endian));
|
||||
p.field_version("Sdk", x.sdk.get(endian));
|
||||
p.field_hex("NumberOfTools", x.ntools.get(endian));
|
||||
// TODO: dump tools
|
||||
});
|
||||
|
||||
@@ -241,8 +241,8 @@ BuildVersionCommand {
|
||||
Cmd: LC_BUILD_VERSION (0x32)
|
||||
CmdSize: 0x18
|
||||
Platform: PLATFORM_MACOS (0x1)
|
||||
MinOs: 0xD0000
|
||||
Sdk: 0xD0300
|
||||
MinOs: 13.0.0
|
||||
Sdk: 13.3.0
|
||||
NumberOfTools: 0x0
|
||||
}
|
||||
SymtabCommand {
|
||||
|
||||
@@ -105,8 +105,8 @@ BuildVersionCommand {
|
||||
Cmd: LC_BUILD_VERSION (0x32)
|
||||
CmdSize: 0x18
|
||||
Platform: PLATFORM_MACOS (0x1)
|
||||
MinOs: 0xD0000
|
||||
Sdk: 0xD0300
|
||||
MinOs: 13.0.0
|
||||
Sdk: 13.3.0
|
||||
NumberOfTools: 0x0
|
||||
}
|
||||
SymtabCommand {
|
||||
|
||||
@@ -105,8 +105,8 @@ BuildVersionCommand {
|
||||
Cmd: LC_BUILD_VERSION (0x32)
|
||||
CmdSize: 0x18
|
||||
Platform: PLATFORM_MACOS (0x1)
|
||||
MinOs: 0xD0000
|
||||
Sdk: 0xD0300
|
||||
MinOs: 13.0.0
|
||||
Sdk: 13.3.0
|
||||
NumberOfTools: 0x0
|
||||
}
|
||||
SymtabCommand {
|
||||
|
||||
@@ -227,8 +227,8 @@ BuildVersionCommand {
|
||||
Cmd: LC_BUILD_VERSION (0x32)
|
||||
CmdSize: 0x20
|
||||
Platform: PLATFORM_MACOS (0x1)
|
||||
MinOs: 0xD0000
|
||||
Sdk: 0xD0300
|
||||
MinOs: 13.0.0
|
||||
Sdk: 13.3.0
|
||||
NumberOfTools: 0x1
|
||||
}
|
||||
SourceVersionCommand {
|
||||
@@ -248,8 +248,8 @@ DylibCommand {
|
||||
Dylib {
|
||||
Name: "/usr/lib/libSystem.B.dylib" (0x18)
|
||||
Timestamp: 2
|
||||
CurrentVersion: 0x5276403
|
||||
CompatibilityVersion: 0x10000
|
||||
CurrentVersion: 1319.100.3
|
||||
CompatibilityVersion: 1.0.0
|
||||
}
|
||||
}
|
||||
LinkeditDataCommand {
|
||||
|
||||
@@ -249,8 +249,8 @@ BuildVersionCommand {
|
||||
Cmd: LC_BUILD_VERSION (0x32)
|
||||
CmdSize: 0x18
|
||||
Platform: PLATFORM_MACOS (0x1)
|
||||
MinOs: 0xC0000
|
||||
Sdk: 0xD0100
|
||||
MinOs: 12.0.0
|
||||
Sdk: 13.1.0
|
||||
NumberOfTools: 0x0
|
||||
}
|
||||
SymtabCommand {
|
||||
|
||||
@@ -113,8 +113,8 @@ BuildVersionCommand {
|
||||
Cmd: LC_BUILD_VERSION (0x32)
|
||||
CmdSize: 0x18
|
||||
Platform: PLATFORM_MACOS (0x1)
|
||||
MinOs: 0xC0000
|
||||
Sdk: 0xD0100
|
||||
MinOs: 12.0.0
|
||||
Sdk: 13.1.0
|
||||
NumberOfTools: 0x0
|
||||
}
|
||||
SymtabCommand {
|
||||
|
||||
@@ -113,8 +113,8 @@ BuildVersionCommand {
|
||||
Cmd: LC_BUILD_VERSION (0x32)
|
||||
CmdSize: 0x18
|
||||
Platform: PLATFORM_MACOS (0x1)
|
||||
MinOs: 0xC0000
|
||||
Sdk: 0xD0100
|
||||
MinOs: 12.0.0
|
||||
Sdk: 13.1.0
|
||||
NumberOfTools: 0x0
|
||||
}
|
||||
SymtabCommand {
|
||||
|
||||
@@ -305,8 +305,8 @@ BuildVersionCommand {
|
||||
Cmd: LC_BUILD_VERSION (0x32)
|
||||
CmdSize: 0x20
|
||||
Platform: PLATFORM_MACOS (0x1)
|
||||
MinOs: 0xC0000
|
||||
Sdk: 0xD0100
|
||||
MinOs: 12.0.0
|
||||
Sdk: 13.1.0
|
||||
NumberOfTools: 0x1
|
||||
}
|
||||
SourceVersionCommand {
|
||||
@@ -326,8 +326,8 @@ DylibCommand {
|
||||
Dylib {
|
||||
Name: "/usr/lib/libSystem.B.dylib" (0x18)
|
||||
Timestamp: 2
|
||||
CurrentVersion: 0x5270000
|
||||
CompatibilityVersion: 0x10000
|
||||
CurrentVersion: 1319.0.0
|
||||
CompatibilityVersion: 1.0.0
|
||||
}
|
||||
}
|
||||
LinkeditDataCommand {
|
||||
|
||||
Reference in New Issue
Block a user