From a01313467e5c08c5c9f463d9dbb78ae107d8053d Mon Sep 17 00:00:00 2001 From: auronandace Date: Sat, 14 Mar 2026 14:20:22 +0000 Subject: [PATCH 1/2] tackle some clippy lints in ld_so --- src/ld_so/dso.rs | 6 +++--- src/ld_so/linker.rs | 3 ++- src/ld_so/mod.rs | 4 ++-- src/ld_so/start.rs | 9 +++------ 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/ld_so/dso.rs b/src/ld_so/dso.rs index bb3fa63b25..4b34082b2b 100644 --- a/src/ld_so/dso.rs +++ b/src/ld_so/dso.rs @@ -37,7 +37,7 @@ use core::{ sync::atomic::{AtomicBool, Ordering}, }; -pub const CHAR_BITS: usize = size_of::() * 8; +pub const CHAR_BITS: usize = c_char::BITS as usize; pub type Relr = usize; #[cfg(target_pointer_width = "32")] @@ -432,7 +432,7 @@ impl DSO { let (_, sym) = self.dynamic.hash_table.find( name, None, - &self.dynamic.symbols, + self.dynamic.symbols, self.dynamic.dynstrtab, &VersionTable::default(), )?; @@ -777,7 +777,7 @@ impl DSO { let dynstrtab = StringTable::new( &*mmap, strtab_offset as u64, - strtab_offset as u64 + strtab_size as u64, + strtab_offset as u64 + strtab_size, ); let get_str = |entry: &Dyn| { diff --git a/src/ld_so/linker.rs b/src/ld_so/linker.rs index 9a4a0591cd..cb85754ad0 100644 --- a/src/ld_so/linker.rs +++ b/src/ld_so/linker.rs @@ -754,7 +754,8 @@ impl Linker { /// /// If a dependency has already been loaded, it is *not* added to the scope /// nor to `new_objects`. - fn load_objects_recursive<'a>( + #[allow(clippy::too_many_arguments)] + fn load_objects_recursive( &mut self, name: &str, parent_runpath: &Option, diff --git a/src/ld_so/mod.rs b/src/ld_so/mod.rs index 14d75d55e1..3cdc0edfe6 100644 --- a/src/ld_so/mod.rs +++ b/src/ld_so/mod.rs @@ -101,11 +101,11 @@ pub fn static_init( let page_size = Sys::getpagesize(); let voff = p_vaddr % page_size; // let vaddr = ph.p_vaddr as usize - voff; - let vsize = ((p_memsz + voff + page_size - 1) / page_size) * page_size; + let vsize = (p_memsz + voff).div_ceil(page_size) * page_size; if p_type == elf::PT_TLS { let valign = if p_align > 0 { - ((p_memsz + (p_align - 1)) / p_align) * p_align + p_memsz.div_ceil(p_align) * p_align } else { p_memsz }; diff --git a/src/ld_so/start.rs b/src/ld_so/start.rs index 920aac726d..a23df3c198 100644 --- a/src/ld_so/start.rs +++ b/src/ld_so/start.rs @@ -206,7 +206,7 @@ pub unsafe extern "C" fn relibc_ld_so_start( } else { let ph = phdrs .iter() - .find(|ph| ph.p_type(NativeEndian) == PT_DYNAMIC as u32) + .find(|ph| ph.p_type(NativeEndian) == PT_DYNAMIC) .unwrap(); unsafe { dynamic.byte_sub(ph.p_vaddr(NativeEndian) as usize) as usize } }; @@ -266,11 +266,8 @@ pub unsafe extern "C" fn relibc_ld_so_start( for reloc in relocs { let reloc: Relocation = reloc.into(); let ptr = (reloc.offset + self_base) as *mut usize; - match reloc.kind { - RelocationKind::RELATIVE => { - unsafe { *ptr = self_base + reloc.addend.unwrap_or_default() }; - } - _ => {} + if reloc.kind == RelocationKind::RELATIVE { + unsafe { *ptr = self_base + reloc.addend.unwrap_or_default() }; } } } From 5c646e78a1004963dce95fe2ee7b4ae36f39ee8b Mon Sep 17 00:00:00 2001 From: auronandace Date: Sat, 14 Mar 2026 14:30:06 +0000 Subject: [PATCH 2/2] add as conversion back in for i586 --- src/ld_so/dso.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ld_so/dso.rs b/src/ld_so/dso.rs index 4b34082b2b..afb4c7c1e6 100644 --- a/src/ld_so/dso.rs +++ b/src/ld_so/dso.rs @@ -777,7 +777,7 @@ impl DSO { let dynstrtab = StringTable::new( &*mmap, strtab_offset as u64, - strtab_offset as u64 + strtab_size, + strtab_offset as u64 + strtab_size as u64, ); let get_str = |entry: &Dyn| {