From cafcccf9c6183ceba1fa6f6d9f566a2b2b90fdde Mon Sep 17 00:00:00 2001 From: Simon Chopin Date: Tue, 25 Aug 2026 16:34:46 +0200 Subject: [PATCH] linux: module_reader: expose the headers and dynamic entries We'll need access to the raw when building the module list candidate straight from the debugger rendezvous. --- src/linux/module_reader.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/linux/module_reader.rs b/src/linux/module_reader.rs index e6450fe7..a6b70bb9 100644 --- a/src/linux/module_reader.rs +++ b/src/linux/module_reader.rs @@ -290,6 +290,30 @@ impl ModuleReader { }) } + /// The object's ELF header. + pub fn header(&self) -> &elf::Header { + &self.header + } + + /// The object's program header table. + pub fn program_headers(&self) -> Result { + self.read_program_headers() + } + + /// The object's dynamic linking entries, up to the `DT_NULL` terminator. + pub fn dynamic_entries(&self) -> Result, Error> { + let program_headers = self.read_program_headers()?; + + let dynamic_segment_header = program_headers + .iter() + .find(|h| h.p_type == elf::program_header::PT_DYNAMIC) + .ok_or(Error::NoDynamicSection)?; + + let dynamic_section = self.read_segment(dynamic_segment_header)?; + + DynIter::new(&dynamic_section, self.context).collect() + } + /// Find a note referenced by the program headers. pub fn find_program_note( &self,