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 [63.128.21.124]) by sourceware.org (Postfix) with ESMTP id E557C3857831 for ; Tue, 1 Dec 2020 08:39:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E557C3857831 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-72-6tuNzz86Nkykbzsmy5oRLw-1; Tue, 01 Dec 2020 03:39:07 -0500 X-MC-Unique: 6tuNzz86Nkykbzsmy5oRLw-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 41A958030BF for ; Tue, 1 Dec 2020 08:39:06 +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 7338A189C7 for ; Tue, 1 Dec 2020 08:39:05 +0000 (UTC) From: tbaeder@redhat.com To: elfutils-devel@sourceware.org Subject: [PATCH 3/3] link_map: Inline consider_phdr() into only caller Date: Tue, 1 Dec 2020 09:38:54 +0100 Message-Id: <20201201083854.1870943-4-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=-15.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, 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:10 -0000 From: Timm Bäder This gets rid of the tested function and is shorter. --- libdwfl/link_map.c | 66 ++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 40 deletions(-) diff --git a/libdwfl/link_map.c b/libdwfl/link_map.c index 64baaec4..8a19f358 100644 --- a/libdwfl/link_map.c +++ b/libdwfl/link_map.c @@ -793,31 +793,6 @@ dwfl_link_map_report (Dwfl *dwfl, const void *auxv, size_t auxv_size, GElf_Xword dyn_filesz = 0; GElf_Addr dyn_bias = (GElf_Addr) -1; - inline bool consider_phdr (GElf_Word type, - GElf_Addr vaddr, GElf_Xword filesz) - { - switch (type) - { - case PT_PHDR: - if (dyn_bias == (GElf_Addr) -1 - /* Do a sanity check on the putative address. */ - && ((vaddr & (dwfl->segment_align - 1)) - == (phdr & (dwfl->segment_align - 1)))) - { - dyn_bias = phdr - vaddr; - return dyn_vaddr != 0; - } - break; - - case PT_DYNAMIC: - dyn_vaddr = vaddr; - dyn_filesz = filesz; - return dyn_bias != (GElf_Addr) -1; - } - - return false; - } - if (phdr != 0 && phnum != 0) { Dwfl_Module *phdr_mod; @@ -930,22 +905,33 @@ dwfl_link_map_report (Dwfl *dwfl, const void *auxv, size_t auxv_size, ? elf32_xlatetom : elf64_xlatetom) (&out, &in, elfdata) != NULL)) { - /* We are looking for PT_DYNAMIC. */ - if (elfclass == ELFCLASS32) + bool is32 = (elfclass == ELFCLASS32); + for (size_t i = 0; i < phnum; ++i) { - for (size_t i = 0; i < phnum; ++i) - if (consider_phdr ((*p32)[i].p_type, - (*p32)[i].p_vaddr, - (*p32)[i].p_filesz)) - break; - } - else - { - for (size_t i = 0; i < phnum; ++i) - if (consider_phdr ((*p64)[i].p_type, - (*p64)[i].p_vaddr, - (*p64)[i].p_filesz)) - break; + GElf_Word type = is32 ? (*p32)[i].p_type : (*p64)[i].p_type; + GElf_Addr vaddr = is32 ? (*p32)[i].p_vaddr : (*p64)[i].p_vaddr; + GElf_Xword filesz = is32 ? (*p32)[i].p_filesz : (*p64)[i].p_filesz; + + if (type == PT_PHDR) + { + if (dyn_bias == (GElf_Addr) -1 + /* Do a sanity check on the putative address. */ + && ((vaddr & (dwfl->segment_align - 1)) + == (phdr & (dwfl->segment_align - 1)))) + { + dyn_bias = phdr - vaddr; + if (dyn_vaddr != 0) + break; + } + + } + else if (type == PT_DYNAMIC) + { + dyn_vaddr = vaddr; + dyn_filesz = filesz; + if (dyn_bias != (GElf_Addr) -1) + break; + } } } -- 2.26.2