In preparation of getting rid of nested functions Signed-off-by: Timm Bäder <tbae...@redhat.com> --- libdwfl/dwfl_segment_report_module.c | 30 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c index dd3fdb9e..9f06672a 100644 --- a/libdwfl/dwfl_segment_report_module.c +++ b/libdwfl/dwfl_segment_report_module.c @@ -232,6 +232,16 @@ invalid_elf (Elf *elf, bool disk_file_has_build_id, return false; } +static inline bool +segment_read (Dwfl *dwfl, + Dwfl_Memory_Callback *memory_callback, void *memory_callback_arg, + int segndx, void **buffer, size_t *buffer_available, + GElf_Addr addr, size_t minread) +{ + return ! (*memory_callback) (dwfl, segndx, buffer, buffer_available, + addr, minread, memory_callback_arg); +} + int dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, Dwfl_Memory_Callback *memory_callback, @@ -257,18 +267,11 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, GElf_Addr start = dwfl->lookup_addr[segment]; - inline bool segment_read (int segndx, - void **buffer, size_t *buffer_available, - GElf_Addr addr, size_t minread) - { - return ! (*memory_callback) (dwfl, segndx, buffer, buffer_available, - addr, minread, memory_callback_arg); - } - inline void release_buffer (void **buffer, size_t *buffer_available) { if (*buffer != NULL) - (void) segment_read (-1, buffer, buffer_available, 0, 0); + (void) segment_read (dwfl, memory_callback, memory_callback_arg, + -1, buffer, buffer_available, 0, 0); } /* First read in the file header and check its sanity. */ @@ -293,7 +296,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, return ndx; } - if (segment_read (ndx, &buffer, &buffer_available, + if (segment_read (dwfl, memory_callback, memory_callback_arg, + ndx, &buffer, &buffer_available, start, sizeof (Elf64_Ehdr)) || memcmp (buffer, ELFMAG, SELFMAG) != 0) return finish (); @@ -312,7 +316,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, { *data = NULL; *data_size = filesz; - return segment_read (addr_segndx (dwfl, segment, vaddr, false), + return segment_read (dwfl, memory_callback, memory_callback_arg, + addr_segndx (dwfl, segment, vaddr, false), data, data_size, vaddr, filesz); } @@ -919,7 +924,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, { void *into = contents + offset; size_t read_size = size; - (void) segment_read (addr_segndx (dwfl, segment, vaddr, false), + (void) segment_read (dwfl, memory_callback, memory_callback_arg, + addr_segndx (dwfl, segment, vaddr, false), &into, &read_size, vaddr, size); } -- 2.26.2