From b47b7aa0a731e4f50eb92adead67fd8d737d65ba Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Mon, 23 Nov 2020 13:27:09 +0100 Subject: [PATCH] segment_report_module: Inline read_phdr() into only caller MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit There is now only one caller for this nested function, so get rid of it by just inlining it there. Signed-off-by: Timm Bäder --- libdwfl/ChangeLog | 5 +++++ libdwfl/dwfl_segment_report_module.c | 27 ++++++++++----------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 7e28036..dd0d281 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,5 +1,10 @@ 2020-11-23 Timm Bäder + * segment_report_module.c (dwfl_segment_report_module): Remove + read_phdr, do check and call memory_callback directly. + +2020-11-23 Timm Bäder + * segment_report_module.c (dwfl_segment_report_module): Do one loop check for p32/p64 arrays. diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c index 514f40c..0729a8f 100644 --- a/libdwfl/dwfl_segment_report_module.c +++ b/libdwfl/dwfl_segment_report_module.c @@ -904,31 +904,24 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, { /* We can't use the memory image verbatim as the file image. So we'll be reading into a local image of the virtual file. */ - - inline void read_phdr (GElf_Word type, GElf_Addr vaddr, - GElf_Off offset, GElf_Xword filesz) - { - if (type == PT_LOAD) - { - void *into = contents + offset; - size_t read_size = filesz; - (*memory_callback) (dwfl, - addr_segndx (dwfl, segment, - vaddr + bias, false), - &into, &read_size, vaddr + bias, - read_size, memory_callback_arg); - } - } - for (uint_fast16_t i = 0; i < phnum; ++i) { bool is32 = (ei_class == ELFCLASS32); GElf_Word type = is32 ? p32[i].p_type : p64[i].p_type; + + if (type != PT_LOAD) + continue; + GElf_Addr vaddr = is32 ? p32[i].p_vaddr : p64[i].p_vaddr; GElf_Off offset = is32 ? p32[i].p_offset : p64[i].p_offset; GElf_Xword filesz = is32 ? p32[i].p_filesz : p64[i].p_filesz; - read_phdr (type, vaddr, offset, filesz); + void *into = contents + offset; + size_t read_size = filesz; + (*memory_callback) (dwfl, addr_segndx (dwfl, segment, + vaddr + bias, false), + &into, &read_size, vaddr + bias, read_size, + memory_callback_arg); } } else -- 2.7.4