From patchwork Wed Nov 15 16:41:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Wielaard X-Patchwork-Id: 79958 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AC4263858C41 for ; Wed, 15 Nov 2023 16:41:21 +0000 (GMT) X-Original-To: elfutils-devel@sourceware.org Delivered-To: elfutils-devel@sourceware.org Received: from gnu.wildebeest.org (gnu.wildebeest.org [45.83.234.184]) by sourceware.org (Postfix) with ESMTPS id DF8263858D20 for ; Wed, 15 Nov 2023 16:41:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DF8263858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org DF8263858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=45.83.234.184 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700066476; cv=none; b=wJ0GddMFBwL44QLQNh+zewp1lZ5krgsbxVXY3Q+4j1bFbDteCp7SiOiSH0j4vwkOFzvA+8kfZRvnWvQ2uin98NHuiSNk0UhHuUpww6bjYp1JkArq2i9VyyreLz2wnshKYjtGNyaYKV8ldU2rnuxerxtvdo0xNBv2vltJQy6SRMA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700066476; c=relaxed/simple; bh=Uc4p3uLO2I7EppKyggR6lq4MTq01mKNnMBVHExIemRU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=xVzPga2YmwiPH2ebmRhvLNJVQhzUFsLQkWM94P5s59p7gh/f+50T6L0X+07C9ctK41H7TYwWVsH2D42xYQuqTn4BMHTsyfR8oqZ5HJ8UEfXSD9GW7fxpkZjmtLd30CfUd2noZxkACeM73c58SM06yaxLYQ10okeoKJ4XDg1PUwQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from r6.localdomain (82-217-174-174.cable.dynamic.v4.ziggo.nl [82.217.174.174]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id A38AF302FDDB; Wed, 15 Nov 2023 17:41:13 +0100 (CET) Received: by r6.localdomain (Postfix, from userid 1000) id 66631340588; Wed, 15 Nov 2023 17:41:13 +0100 (CET) From: Mark Wielaard To: elfutils-devel@sourceware.org Cc: Mark Wielaard Subject: [PATCH] readelf: Don't print average number of tests when no tests are done Date: Wed, 15 Nov 2023 17:41:11 +0100 Message-ID: <20231115164111.657025-1-mark@klomp.org> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Spam-Status: No, score=-3033.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_BARRACUDACENTRAL, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: elfutils-devel-bounces+patchwork=sourceware.org@sourceware.org If the symbol hash table only contains lenght zero chains, no lookup tests need to be done and eu-readelf -I would print out bogus numbers for the number of tests that were successful/unsuccessful. e.g. for an "empty" program like int main() {} eu-readelf -I would print: Histogram for bucket list length in section [ 5] '.gnu.hash' (total of 1 bucket): Addr: 0x00000000004003c0 Offset: 0x0003c0 Link to section: [ 6] '.dynsym' Symbol Bias: 1 Bitmask Size: 8 bytes 0% bits set 2nd hash shift: 0 Length Number % of total Coverage 0 1 100.0% Average number of tests: successful lookup: -nan unsuccessful lookup: 0.000000 Only print out the Average number of tests when there were actual tests to do. Signed-off-by: Mark Wielaard --- src/readelf.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/readelf.c b/src/readelf.c index decfaf15..802f8ede 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -3644,11 +3644,12 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, size_t shstrndx, success += counts[cnt] * acc; } - printf (_("\ + if (nzero_counts > 0) + printf (_("\ Average number of tests: successful lookup: %f\n\ unsuccessful lookup: %f\n"), - (double) success / (double) nzero_counts, - (double) nzero_counts / (double) nbucket); + (double) success / (double) nzero_counts, + (double) nzero_counts / (double) nbucket); } free (counts);