From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 65C9E3857831 for ; Tue, 1 Dec 2020 08:39:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 65C9E3857831 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-499-ApafzUZSNsKMDsSCGJ7cKA-1; Tue, 01 Dec 2020 03:39:04 -0500 X-MC-Unique: ApafzUZSNsKMDsSCGJ7cKA-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D8C698030A1 for ; Tue, 1 Dec 2020 08:39:03 +0000 (UTC) Received: from hostfoo.redhat.com (ovpn-112-220.ams2.redhat.com [10.36.112.220]) by smtp.corp.redhat.com (Postfix) with ESMTP id 25F3F13470 for ; Tue, 1 Dec 2020 08:39:02 +0000 (UTC) From: tbaeder@redhat.com To: elfutils-devel@sourceware.org Subject: [PATCH 1/3] link_map: Pull release_buffer() into file scope Date: Tue, 1 Dec 2020 09:38:52 +0100 Message-Id: <20201201083854.1870943-2-tbaeder@redhat.com> In-Reply-To: <20201201083854.1870943-1-tbaeder@redhat.com> References: <20201201083854.1870943-1-tbaeder@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIM_INVALID, DKIM_SIGNED, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Dec 2020 08:39:08 -0000 From: Timm Bäder Get rid of another nested function --- libdwfl/link_map.c | 47 +++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/libdwfl/link_map.c b/libdwfl/link_map.c index 29307c74..5c39c631 100644 --- a/libdwfl/link_map.c +++ b/libdwfl/link_map.c @@ -225,6 +225,18 @@ addrsize (uint_fast8_t elfclass) return elfclass * 4; } +static inline int +release_buffer (Dwfl *dwfl, + Dwfl_Memory_Callback *memory_callback, void *memory_callback_arg, + void **buffer, size_t *buffer_available, + int result) +{ + if (buffer != NULL) + (void) (*memory_callback) (dwfl, -1, buffer, buffer_available, 0, 0, + memory_callback_arg); + return result; +} + /* Report a module for each struct link_map in the linked list at r_map in the struct r_debug at R_DEBUG_VADDR. For r_debug_info description see dwfl_link_map_report in libdwflP.h. If R_DEBUG_INFO is not NULL then no @@ -249,13 +261,6 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, void *buffer = NULL; size_t buffer_available = 0; - inline int release_buffer (int result) - { - if (buffer != NULL) - (void) (*memory_callback) (dwfl, -1, &buffer, &buffer_available, 0, 0, - memory_callback_arg); - return result; - } GElf_Addr addrs[4]; inline bool read_addrs (GElf_Addr vaddr, size_t n) @@ -267,7 +272,8 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, || vaddr < read_vaddr || vaddr - read_vaddr + nb > buffer_available) { - release_buffer (0); + release_buffer (dwfl, memory_callback, memory_callback_arg, + &buffer, &buffer_available, 0); read_vaddr = vaddr; int segndx = INTUSE(dwfl_addrsegment) (dwfl, vaddr, NULL); @@ -304,7 +310,9 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, } if (unlikely (read_addrs (read_vaddr, 1))) - return release_buffer (-1); + release_buffer (dwfl, memory_callback, memory_callback_arg, + &buffer, &buffer_available, -1); + GElf_Addr next = addrs[0]; @@ -319,7 +327,8 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, while (next != 0 && ++iterations < dwfl->lookup_elts) { if (read_addrs (next, 4)) - return release_buffer (-1); + return release_buffer (dwfl, memory_callback, memory_callback_arg, + &buffer, &buffer_available, -1); /* Unused: l_addr is the difference between the address in memory and the ELF file when the core was created. We need to @@ -345,7 +354,9 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, name = l_name - read_vaddr + buffer; else { - release_buffer (0); + release_buffer (dwfl, memory_callback, memory_callback_arg, + &buffer, &buffer_available, 0); + read_vaddr = l_name; int segndx = INTUSE(dwfl_addrsegment) (dwfl, l_name, NULL); if (likely (segndx >= 0) @@ -372,7 +383,9 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, r_debug_info_module = malloc (sizeof (*r_debug_info_module) + strlen (name1) + 1); if (unlikely (r_debug_info_module == NULL)) - return release_buffer (result); + return release_buffer (dwfl, memory_callback, memory_callback_arg, + &buffer, &buffer_available, result); + r_debug_info_module->fd = -1; r_debug_info_module->elf = NULL; r_debug_info_module->l_ld = l_ld; @@ -413,7 +426,9 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, GElf_Addr build_id_vaddr = (build_id_elfaddr - elf_dynamic_vaddr + l_ld); - release_buffer (0); + release_buffer (dwfl, memory_callback, memory_callback_arg, + &buffer, &buffer_available, 0); + int segndx = INTUSE(dwfl_addrsegment) (dwfl, build_id_vaddr, NULL); @@ -432,7 +447,8 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, /* File has valid build-id which does not match the one in memory. */ valid = false; - release_buffer (0); + release_buffer (dwfl, memory_callback, memory_callback_arg, + &buffer, &buffer_available, 0); } } @@ -498,7 +514,8 @@ report_r_debug (uint_fast8_t elfclass, uint_fast8_t elfdata, } } - return release_buffer (result); + return release_buffer (dwfl, memory_callback, memory_callback_arg, + &buffer, &buffer_available, result); } static GElf_Addr -- 2.26.2