Skip to content

Commit a6ddc50

Browse files
authored
Bump Object Crate to 0.39.1 (#348)
* Bump Object Crate to 0.39.0 * Bump Object Crate to 0.39.1
1 parent b8d7b3b commit a6ddc50

8 files changed

Lines changed: 35 additions & 36 deletions

File tree

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

objdiff-core/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ itertools = { version = "0.14", default-features = false, features = ["use_alloc
132132
log = { version = "0.4", default-features = false, optional = true }
133133
memmap2 = { version = "0.9", optional = true }
134134
num-traits = { version = "0.2", default-features = false, optional = true }
135-
object = { version = "0.37", default-features = false, features = ["read_core", "elf", "coff"] }
135+
object = { version = "0.39.1", default-features = false, features = ["read_core", "elf", "coff"] }
136136
pbjson = { version = "0.8", default-features = false, optional = true }
137137
prost = { version = "0.14", default-features = false, features = ["derive"], optional = true }
138138
regex = { version = "1.12", default-features = false, features = [], optional = true }

objdiff-core/src/arch/arm.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -352,17 +352,17 @@ impl Arch for ArchArm {
352352
| elf::R_ARM_CALL
353353
| elf::R_ARM_JUMP24 => {
354354
let data = section_data[address..address + 4].try_into()?;
355-
let addend = self.endianness.read_i32_bytes(data);
355+
let addend = self.endianness.read_i32(data);
356356
let imm24 = addend & 0xffffff;
357357
(imm24 << 2) << 8 >> 8
358358
}
359359

360360
// Thumb calls
361361
elf::R_ARM_THM_PC22 | elf::R_ARM_THM_XPC22 => {
362362
let data = section_data[address..address + 2].try_into()?;
363-
let high = self.endianness.read_i16_bytes(data) as i32;
363+
let high = self.endianness.read_i16(data) as i32;
364364
let data = section_data[address + 2..address + 4].try_into()?;
365-
let low = self.endianness.read_i16_bytes(data) as i32;
365+
let low = self.endianness.read_i16(data) as i32;
366366

367367
let imm22 = ((high & 0x7ff) << 11) | (low & 0x7ff);
368368
(imm22 << 1) << 9 >> 9
@@ -371,23 +371,23 @@ impl Arch for ArchArm {
371371
// Thumb unconditional branch (B, 11-bit offset)
372372
elf::R_ARM_THM_PC11 => {
373373
let data = section_data[address..address + 2].try_into()?;
374-
let insn = self.endianness.read_u16_bytes(data) as i32;
374+
let insn = self.endianness.read_u16(data) as i32;
375375
let imm11 = insn & 0x7ff;
376376
(imm11 << 1) << 20 >> 20
377377
}
378378

379379
// Thumb conditional branch (B<cond>, 8-bit offset)
380380
elf::R_ARM_THM_PC9 => {
381381
let data = section_data[address..address + 2].try_into()?;
382-
let insn = self.endianness.read_u16_bytes(data) as i32;
382+
let insn = self.endianness.read_u16(data) as i32;
383383
let imm8 = insn & 0xff;
384384
(imm8 << 1) << 23 >> 23
385385
}
386386

387387
// Data
388388
elf::R_ARM_ABS32 => {
389389
let data = section_data[address..address + 4].try_into()?;
390-
self.endianness.read_i32_bytes(data)
390+
self.endianness.read_i32(data)
391391
}
392392

393393
flags => bail!("Unsupported ARM implicit relocation {flags:?}"),

objdiff-core/src/arch/mips.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ impl ArchMips {
7777
.and_then(|section| section.data().ok())
7878
.and_then(|data| data.get(0x14..0x18))
7979
.and_then(|s| s.try_into().ok())
80-
.map(|bytes| endianness.read_i32_bytes(bytes))
80+
.map(|bytes| endianness.read_i32(bytes))
8181
.unwrap_or(0);
8282

8383
// Parse all relocations to pair R_MIPS_HI16 and R_MIPS_LO16. Since the instructions only
@@ -98,13 +98,13 @@ impl ArchMips {
9898
match reloc.flags() {
9999
object::RelocationFlags::Elf { r_type: elf::R_MIPS_HI16 } => {
100100
let code = data[addr as usize..addr as usize + 4].try_into()?;
101-
let addend = ((endianness.read_u32_bytes(code) & 0x0000FFFF) << 16) as i32;
101+
let addend = ((endianness.read_u32(code) & 0x0000FFFF) << 16) as i32;
102102
last_hi = Some(addr);
103103
last_hi_addend = addend;
104104
}
105105
object::RelocationFlags::Elf { r_type: elf::R_MIPS_LO16 } => {
106106
let code = data[addr as usize..addr as usize + 4].try_into()?;
107-
let addend = (endianness.read_u32_bytes(code) & 0x0000FFFF) as i16 as i32;
107+
let addend = (endianness.read_u32(code) & 0x0000FFFF) as i16 as i32;
108108
let full_addend = (last_hi_addend + addend) as i64;
109109
if let Some(hi_addr) = last_hi.take() {
110110
addends.insert(hi_addr, full_addend);
@@ -197,7 +197,7 @@ impl ArchMips {
197197
diff_config: &DiffObjConfig,
198198
) -> Result<rabbitizer::Instruction> {
199199
Ok(rabbitizer::Instruction::new(
200-
self.endianness.read_u32_bytes(code.try_into()?),
200+
self.endianness.read_u32(code.try_into()?),
201201
Vram::new(ins_ref.address as u32),
202202
self.instruction_flags(diff_config),
203203
))
@@ -217,7 +217,7 @@ impl Arch for ArchMips {
217217
let mut ops = Vec::<InstructionRef>::with_capacity(code.len() / 4);
218218
let mut cur_addr = address as u32;
219219
for chunk in code.chunks_exact(4) {
220-
let code = self.endianness.read_u32_bytes(chunk.try_into()?);
220+
let code = self.endianness.read_u32(chunk.try_into()?);
221221
let instruction =
222222
rabbitizer::Instruction::new(code, Vram::new(cur_addr), instruction_flags);
223223
let opcode = instruction.opcode() as u16;
@@ -269,7 +269,7 @@ impl Arch for ArchMips {
269269
let data = section.data()?;
270270
let code = self
271271
.endianness
272-
.read_u32_bytes(data[address as usize..address as usize + 4].try_into()?);
272+
.read_u32(data[address as usize..address as usize + 4].try_into()?);
273273
let addend = match r_type {
274274
elf::R_MIPS_32 => code as i64,
275275
elf::R_MIPS_26 => ((code & 0x03FFFFFF) << 2) as i64,
@@ -366,7 +366,7 @@ impl Arch for ArchMips {
366366
&& new_address >= symbol.address + 4
367367
&& let Some(data) = section.data_range(new_address - 4, 4)
368368
&& let instruction = rabbitizer::Instruction::new(
369-
self.endianness.read_u32_bytes(data.try_into().unwrap()),
369+
self.endianness.read_u32(data.try_into().unwrap()),
370370
Vram::new((new_address - 4) as u32),
371371
self.default_instruction_flags(),
372372
)

objdiff-core/src/arch/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ impl DataType {
151151
}
152152
}
153153
DataType::Int16 => {
154-
let i = endian.read_i16_bytes(bytes.try_into().unwrap());
154+
let i = endian.read_i16(bytes.try_into().unwrap());
155155
strs.push(LiteralInfo { literal: format!("{i:#x}"), ..Default::default() });
156156

157157
if i < 0 {
@@ -162,7 +162,7 @@ impl DataType {
162162
}
163163
}
164164
DataType::Int32 => {
165-
let i = endian.read_i32_bytes(bytes.try_into().unwrap());
165+
let i = endian.read_i32(bytes.try_into().unwrap());
166166
strs.push(LiteralInfo { literal: format!("{i:#x}"), ..Default::default() });
167167

168168
if i < 0 {
@@ -173,7 +173,7 @@ impl DataType {
173173
}
174174
}
175175
DataType::Int64 => {
176-
let i = endian.read_i64_bytes(bytes.try_into().unwrap());
176+
let i = endian.read_i64(bytes.try_into().unwrap());
177177
strs.push(LiteralInfo { literal: format!("{i:#x}"), ..Default::default() });
178178

179179
if i < 0 {

objdiff-core/src/arch/x86.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,8 @@ impl Arch for ArchX86 {
199199
if resolved.ins_ref.opcode == OPCODE_DATA {
200200
let (mnemonic, imm) = match resolved.ins_ref.size {
201201
1 => (".byte", resolved.code[0] as u64),
202-
2 => (".word", self.endianness.read_u16_bytes(resolved.code.try_into()?) as u64),
203-
4 => (".dword", self.endianness.read_u32_bytes(resolved.code.try_into()?) as u64),
202+
2 => (".word", self.endianness.read_u16(resolved.code.try_into()?) as u64),
203+
4 => (".dword", self.endianness.read_u32(resolved.code.try_into()?) as u64),
204204
_ => bail!("Unsupported x86 inline data size {}", resolved.ins_ref.size),
205205
};
206206
cb(InstructionPart::opcode(mnemonic, OPCODE_DATA))?;
@@ -294,7 +294,7 @@ impl Arch for ArchX86 {
294294
} => {
295295
let data =
296296
section.data()?[address as usize..address as usize + 4].try_into()?;
297-
self.endianness.read_i32_bytes(data) as i64
297+
self.endianness.read_i32(data) as i64
298298
}
299299
flags => bail!("Unsupported x86 implicit relocation {flags:?}"),
300300
},
@@ -305,13 +305,13 @@ impl Arch for ArchX86 {
305305
| object::RelocationFlags::Elf { r_type: elf::R_X86_64_32 | elf::R_X86_64_PC32 } => {
306306
let data =
307307
section.data()?[address as usize..address as usize + 4].try_into()?;
308-
self.endianness.read_i32_bytes(data) as i64
308+
self.endianness.read_i32(data) as i64
309309
}
310310
object::RelocationFlags::Coff { typ: pe::IMAGE_REL_AMD64_ADDR64 }
311311
| object::RelocationFlags::Elf { r_type: elf::R_X86_64_64 } => {
312312
let data =
313313
section.data()?[address as usize..address as usize + 8].try_into()?;
314-
self.endianness.read_i64_bytes(data)
314+
self.endianness.read_i64(data)
315315
}
316316
flags => bail!("Unsupported x86-64 implicit relocation {flags:?}"),
317317
},

objdiff-core/src/obj/split_meta.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,21 @@ impl SplitMeta {
5353
result.module_name = Some(string);
5454
}
5555
NT_SPLIT_MODULE_ID => {
56-
result.module_id = Some(e.read_u32_bytes(
56+
result.module_id = Some(e.read_u32(
5757
note.desc.try_into().map_err(|_| anyhow!("Invalid module ID size"))?,
5858
));
5959
}
6060
NT_SPLIT_VIRTUAL_ADDRESSES => {
6161
let vec = if is_64 {
6262
let mut vec = vec![0u64; note.desc.len() / 8];
6363
for (i, v) in vec.iter_mut().enumerate() {
64-
*v =
65-
e.read_u64_bytes(note.desc[i * 8..(i + 1) * 8].try_into().unwrap());
64+
*v = e.read_u64(note.desc[i * 8..(i + 1) * 8].try_into().unwrap());
6665
}
6766
vec
6867
} else {
6968
let mut vec = vec![0u64; note.desc.len() / 4];
7069
for (i, v) in vec.iter_mut().enumerate() {
71-
*v = e.read_u32_bytes(note.desc[i * 4..(i + 1) * 4].try_into().unwrap())
70+
*v = e.read_u32(note.desc[i * 4..(i + 1) * 4].try_into().unwrap())
7271
as u64;
7372
}
7473
vec
@@ -101,19 +100,19 @@ impl SplitMeta {
101100
}
102101
if let Some(module_id) = self.module_id {
103102
write_note_header(writer, e, NT_SPLIT_MODULE_ID, 4)?;
104-
writer.write_all(&e.write_u32_bytes(module_id))?;
103+
writer.write_all(&e.write_u32(module_id))?;
105104
}
106105
if let Some(virtual_addresses) = &self.virtual_addresses {
107106
let count = virtual_addresses.len();
108107
let size = if is_64 { count * 8 } else { count * 4 };
109108
write_note_header(writer, e, NT_SPLIT_VIRTUAL_ADDRESSES, size)?;
110109
if is_64 {
111110
for &addr in virtual_addresses {
112-
writer.write_all(&e.write_u64_bytes(addr))?;
111+
writer.write_all(&e.write_u64(addr))?;
113112
}
114113
} else {
115114
for &addr in virtual_addresses {
116-
writer.write_all(&e.write_u32_bytes(addr as u32))?;
115+
writer.write_all(&e.write_u32(addr as u32))?;
117116
}
118117
}
119118
}
@@ -208,9 +207,9 @@ where
208207
E: Endian,
209208
W: std::io::Write + ?Sized,
210209
{
211-
writer.write_all(&e.write_u32_bytes(ELF_NOTE_SPLIT.len() as u32 + 1))?; // Name Size
212-
writer.write_all(&e.write_u32_bytes(desc_len as u32))?; // Desc Size
213-
writer.write_all(&e.write_u32_bytes(kind))?; // Type
210+
writer.write_all(&e.write_u32(ELF_NOTE_SPLIT.len() as u32 + 1))?; // Name Size
211+
writer.write_all(&e.write_u32(desc_len as u32))?; // Desc Size
212+
writer.write_all(&e.write_u32(kind))?; // Type
214213
writer.write_all(ELF_NOTE_SPLIT)?; // Name
215214
writer.write_all(&[0; 1])?; // Null terminator
216215
align_data_to_4(writer, ELF_NOTE_SPLIT.len() + 1)?;

objdiff-core/src/util.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ impl<N: PrimInt> fmt::UpperHex for ReallySigned<N> {
2828

2929
pub fn read_u32(obj_file: &object::File, reader: &mut &[u8]) -> Result<u32> {
3030
ensure!(reader.len() >= 4, "Not enough bytes to read u32");
31-
let value = u32::from_ne_bytes(reader[..4].try_into()?);
31+
let value = reader[..4].try_into()?;
3232
*reader = &reader[4..];
3333
Ok(obj_file.endianness().read_u32(value))
3434
}
3535

3636
pub fn read_u16(obj_file: &object::File, reader: &mut &[u8]) -> Result<u16> {
3737
ensure!(reader.len() >= 2, "Not enough bytes to read u16");
38-
let value = u16::from_ne_bytes(reader[..2].try_into()?);
38+
let value = reader[..2].try_into()?;
3939
*reader = &reader[2..];
4040
Ok(obj_file.endianness().read_u16(value))
4141
}

0 commit comments

Comments
 (0)