Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp4619807iob; Sun, 8 May 2022 19:28:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwPVoIbOnNH9Eh6B4yNbKIwHoheKZbaCdBGMr3YxtX0+6OU1KYeTmn8TzJmYwTqCBjsru3D X-Received: by 2002:a63:86c6:0:b0:3ab:2c2c:42e9 with SMTP id x189-20020a6386c6000000b003ab2c2c42e9mr11274381pgd.230.1652063321898; Sun, 08 May 2022 19:28:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652063321; cv=none; d=google.com; s=arc-20160816; b=YGAvElWMQDISUXzhUECl7Sj0cCZ7rvzTo5ewcv7I4nHOgc31kHhUz3PGr/Ri7yC6MU WFwQeQLaWbdpYBhOZaC4xnEsDhsEmzh5wKYChcgzPTE12BoB1koMn8ouh8x+G88/6TF+ S+O24JuZMh95aMxfIQgb8RCA4elvY/El2wCT8vgBYq7Y/UxpDPZ6gXxCzAH0gZYOXlym f37njKvH+gHpcK9CjLh7IFg8Md2+Eoq3mhVQXtDwL9l4g7b1n0RLxuHEpQ4a8asmdd7U CRHP2MaKLPs7bvfsH5rpcTHDyPe30VrAThH2fwtHlzhCvrZdeHmduNU7NzwbaolJShsR hVfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=l9/q598OKwr/tc5L8j2iWnxZqr4k7MGBzJA9R8UoCBY=; b=PoC7GjL5Y2vZVECOdAgC4nNbaACFEOVuWn9QSc/4xPwqbDN6JQQMyzxgt5Tljq3kZO xGoK7G4VYLOGqtR5wSVvw2yh5wBHqDnM/aLxtL8gPeKsr0UBuLDw36Wafsj9NWLdn3pm /Bm0HIHcvALnvf0pi2VfSgPTaSB/sLgiFiVFESIT6bIl3VzIaoE4FfbjnsWZ+AFHulPP zjE8wGR840vlO+WWVo1TcX1G1pRuSoHEKaB4GBw4eNZhFX5yFMX0ZpNfQ6YKUbBdu0UK VwvDiP3ymv+vK6GSWOYkS3EoKbVSFJybChiiP3LjzcRjS3dgdGT8eNiEEIbQHVYmLHnO 931w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=LeAwfg9Z; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id k65-20020a628444000000b004faa79d798bsi8579123pfd.27.2022.05.08.19.28.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 May 2022 19:28:41 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=LeAwfg9Z; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A136E69485; Sun, 8 May 2022 19:28:27 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376348AbiEDRud (ORCPT + 99 others); Wed, 4 May 2022 13:50:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1358026AbiEDRPg (ORCPT ); Wed, 4 May 2022 13:15:36 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 357D4562DB; Wed, 4 May 2022 09:59:16 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 5A27961931; Wed, 4 May 2022 16:59:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9A27CC385B3; Wed, 4 May 2022 16:59:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1651683554; bh=KLrmzLdykux6+zcJXpjIZLWwX5oEYBXLyo/PuTSQqhY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LeAwfg9ZAFvJhHkjvnwiEFMNb2qheOQ+WsUk6HFiYBy42W/k1ZNkn83oqEWS9wCq7 fS2EjIyv7CICeuru0FPvpxzea2bjj8/s7Q9jYCg4A3EcSm3sPemyOVDnYmMuMC/hHL toDUURkkJPZYkk044FvgiO0PhehNJJ0KbYlk1sNc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Namhyung Kim , Ian Rogers , Heiko Carstens , Ingo Molnar , Jiri Olsa , John Garry , Leo Yan , Mark Rutland , Masami Hiramatsu , Mathieu Poirier , Michael Ellerman , Michael Petlan , Peter Zijlstra , Song Liu , Will Deacon , linux-s390@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Arnaldo Carvalho de Melo Subject: [PATCH 5.17 198/225] perf symbol: Pass is_kallsyms to symbols__fixup_end() Date: Wed, 4 May 2022 18:47:16 +0200 Message-Id: <20220504153127.841006742@linuxfoundation.org> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220504153110.096069935@linuxfoundation.org> References: <20220504153110.096069935@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Namhyung Kim commit 838425f2defe5262906b698752d28fd2fca1aac2 upstream. The symbol fixup is necessary for symbols in kallsyms since they don't have size info. So we use the next symbol's address to calculate the size. Now it's also used for user binaries because sometimes they miss size for hand-written asm functions. There's a arch-specific function to handle kallsyms differently but currently it cannot distinguish kallsyms from others. Pass this information explicitly to handle it properly. Note that those arch functions will be moved to the generic function so I didn't added it to the arch-functions. Fixes: 3cf6a32f3f2a4594 ("perf symbols: Fix symbol size calculation condition") Signed-off-by: Namhyung Kim Acked-by: Ian Rogers Cc: Heiko Carstens Cc: Ingo Molnar Cc: Jiri Olsa Cc: John Garry Cc: Leo Yan Cc: Mark Rutland Cc: Masami Hiramatsu Cc: Mathieu Poirier Cc: Michael Ellerman Cc: Michael Petlan Cc: Peter Zijlstra Cc: Song Liu Cc: Will Deacon Cc: linux-s390@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Link: https://lore.kernel.org/r/20220416004048.1514900-2-namhyung@kernel.org Signed-off-by: Arnaldo Carvalho de Melo Signed-off-by: Greg Kroah-Hartman --- tools/perf/util/symbol-elf.c | 2 +- tools/perf/util/symbol.c | 7 ++++--- tools/perf/util/symbol.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) --- a/tools/perf/util/symbol-elf.c +++ b/tools/perf/util/symbol-elf.c @@ -1290,7 +1290,7 @@ dso__load_sym_internal(struct dso *dso, * For misannotated, zeroed, ASM function sizes. */ if (nr > 0) { - symbols__fixup_end(&dso->symbols); + symbols__fixup_end(&dso->symbols, false); symbols__fixup_duplicate(&dso->symbols); if (kmap) { /* --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c @@ -217,7 +217,8 @@ again: } } -void symbols__fixup_end(struct rb_root_cached *symbols) +void symbols__fixup_end(struct rb_root_cached *symbols, + bool is_kallsyms __maybe_unused) { struct rb_node *nd, *prevnd = rb_first_cached(symbols); struct symbol *curr, *prev; @@ -1467,7 +1468,7 @@ int __dso__load_kallsyms(struct dso *dso if (kallsyms__delta(kmap, filename, &delta)) return -1; - symbols__fixup_end(&dso->symbols); + symbols__fixup_end(&dso->symbols, true); symbols__fixup_duplicate(&dso->symbols); if (dso->kernel == DSO_SPACE__KERNEL_GUEST) @@ -1659,7 +1660,7 @@ int dso__load_bfd_symbols(struct dso *ds #undef bfd_asymbol_section #endif - symbols__fixup_end(&dso->symbols); + symbols__fixup_end(&dso->symbols, false); symbols__fixup_duplicate(&dso->symbols); dso->adjust_symbols = 1; --- a/tools/perf/util/symbol.h +++ b/tools/perf/util/symbol.h @@ -203,7 +203,7 @@ void __symbols__insert(struct rb_root_ca bool kernel); void symbols__insert(struct rb_root_cached *symbols, struct symbol *sym); void symbols__fixup_duplicate(struct rb_root_cached *symbols); -void symbols__fixup_end(struct rb_root_cached *symbols); +void symbols__fixup_end(struct rb_root_cached *symbols, bool is_kallsyms); void maps__fixup_end(struct maps *maps); typedef int (*mapfn_t)(u64 start, u64 len, u64 pgoff, void *data);