Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp912382ybb; Fri, 10 Apr 2020 12:41:33 -0700 (PDT) X-Google-Smtp-Source: APiQypL3UN23vOV9MaMmDSCGa1ZIB7bX+g+CU7eoWZQ5tkr2rSIBs5RrhWJd6skCamc3cgGjI8lI X-Received: by 2002:a05:620a:8d0:: with SMTP id z16mr5521493qkz.483.1586547693572; Fri, 10 Apr 2020 12:41:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586547693; cv=none; d=google.com; s=arc-20160816; b=nS8bZNYAIfHFDo44+cTcZJKYo35fFzXxvVIvCyHrySxJphw4uFSRCPgobYHN/h4FmV YbCWdrjpd1g62WksC3Nhqye5WE6Ro1N23TzdG7HPO5ed08FO1cT/bl7sMpALQCOwTxyP Vh4HsXLlmTaaiKxIa7pdAtCZtqwgHut8cl2strrsY97J8BtUuwgKfPolnduXH3p4JVno 45QTn2CreUrIxtXD3BZKjghOgf9BU9xRCU9t/O5Ey2UD2vAcraJfTQDkaD1iIxv00ROz vUG9FYZMFgaG1tsr/2IwiMxe0dMBB6ulYJRBF322wTOliXZOTDebZThywirx7ytPJBJe h06Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=wZ1LZ21gL2EsJ2/K2cqsPRVt8WieWmxRjF1MsCwUqP4=; b=WqZ6xRBOt26RuwFH5C+Q4duyvUGkbrPVu60DJdUzepkktM03WC1cusLlntT65SvJO/ eiipQVGN0Tajoycf5RUsxu11UmcK6uRur+xOcUHvF/uBPxMx3ZP6PLacIbTzE1hSrUTn 9SXgAVz7CsrnsMbxv+UespPST0wvU8Pl8pxra2LKmMpXK/Lqdjd/phABg0gIrTstoTo1 WjVmoqinZmy9daa+mjkiIkdcVbAFAd/AhWAJcc+bJapYMjxMiMHf4RwUSSPnhqSZouuM wWfMR458sbW6dj8FMBsSy1JKVy2H15F4st/rah274ZGjrkTWTUBBnMgBsXpc93o+isRn oBnQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a5si1883185qkn.149.2020.04.10.12.41.19; Fri, 10 Apr 2020 12:41:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727053AbgDJTig (ORCPT + 99 others); Fri, 10 Apr 2020 15:38:36 -0400 Received: from ex13-edg-ou-001.vmware.com ([208.91.0.189]:28720 "EHLO EX13-EDG-OU-001.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726795AbgDJTif (ORCPT ); Fri, 10 Apr 2020 15:38:35 -0400 Received: from sc9-mailhost3.vmware.com (10.113.161.73) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Fri, 10 Apr 2020 12:38:30 -0700 Received: from sc9-mailhost3.vmware.com (unknown [10.166.69.226]) by sc9-mailhost3.vmware.com (Postfix) with ESMTP id A863640C50; Fri, 10 Apr 2020 12:38:34 -0700 (PDT) From: Matt Helsley To: CC: Josh Poimboeuf , Peter Zijlstra , Julien Thierry , Ingo Molnar , Steven Rostedt , Miroslav Benes , Matt Helsley Subject: [RFC][PATCH 24/36] objtool: mcount: Move helpers out of ELF wrapper Date: Fri, 10 Apr 2020 12:35:47 -0700 Message-ID: <8a4dfa4e57702c4a24475dcf130b2c8a515f06bd.1586468801.git.mhelsley@vmware.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII Received-SPF: None (EX13-EDG-OU-001.vmware.com: mhelsley@vmware.com does not designate permitted sender hosts) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org These helpers are no longer dependent on the old ELF wrapper and can be moved into the wrapper-independent code of recordmcount.c Signed-off-by: Matt Helsley --- tools/objtool/recordmcount.c | 25 +++++++++++++++++++++++++ tools/objtool/recordmcount.h | 33 --------------------------------- 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/tools/objtool/recordmcount.c b/tools/objtool/recordmcount.c index 99938d5a5bb1..f39919e1ea7e 100644 --- a/tools/objtool/recordmcount.c +++ b/tools/objtool/recordmcount.c @@ -445,6 +445,31 @@ static int nop_mcount(struct section * const rels, return 0; } +static char const *has_rel_mcount(const struct section * const rels) +{ + const struct section *txts; + if (rels->sh.sh_type != SHT_REL && rels->sh.sh_type != SHT_RELA) + return NULL; + txts = find_section_by_index(lf, rels->sh.sh_info); + if ((txts->sh.sh_type != SHT_PROGBITS) || + !(txts->sh.sh_flags & SHF_EXECINSTR)) + return NULL; + return txts->name; +} + +static unsigned tot_relsize(void) +{ + const struct section *sec; + unsigned totrelsz = 0; + char const *txtname; + + list_for_each_entry(sec, &lf->sections, list) { + txtname = has_rel_mcount(sec); + if (txtname && is_mcounted_section_name(txtname)) + totrelsz += sec->sh.sh_size; + } + return totrelsz; +} /* 32 bit and 64 bit are very similar */ #include "recordmcount.h" #define RECORD_MCOUNT_64 diff --git a/tools/objtool/recordmcount.h b/tools/objtool/recordmcount.h index 4bbdb6c107b8..e6efdd34958e 100644 --- a/tools/objtool/recordmcount.h +++ b/tools/objtool/recordmcount.h @@ -20,8 +20,6 @@ #undef append_func #undef mcount_adjust #undef sift_rel_mcount -#undef has_rel_mcount -#undef tot_relsize #undef do_func #undef Elf_Shdr #undef Elf_Rel @@ -36,8 +34,6 @@ #ifdef RECORD_MCOUNT_64 # define append_func append64 # define sift_rel_mcount sift64_rel_mcount -# define has_rel_mcount has64_rel_mcount -# define tot_relsize tot64_relsize # define do_func do64 # define mcount_adjust mcount_adjust_64 # define Elf_Rel Elf64_Rel @@ -51,8 +47,6 @@ #else # define append_func append32 # define sift_rel_mcount sift32_rel_mcount -# define has_rel_mcount has32_rel_mcount -# define tot_relsize tot32_relsize # define do_func do32 # define mcount_adjust mcount_adjust_32 # define Elf_Rel Elf32_Rel @@ -168,33 +162,6 @@ static uint_t *sift_rel_mcount(uint_t *mlocp, return mlocp; } -static char const *has_rel_mcount(const struct section * const rels) -{ - const struct section *txts; - if (rels->sh.sh_type != SHT_REL && rels->sh.sh_type != SHT_RELA) - return NULL; - txts = find_section_by_index(lf, rels->sh.sh_info); - if ((txts->sh.sh_type != SHT_PROGBITS) || - !(txts->sh.sh_flags & SHF_EXECINSTR)) - return NULL; - return txts->name; -} - - -static unsigned tot_relsize(void) -{ - const struct section *sec; - unsigned totrelsz = 0; - char const *txtname; - - list_for_each_entry(sec, &lf->sections, list) { - txtname = has_rel_mcount(sec); - if (txtname && is_mcounted_section_name(txtname)) - totrelsz += sec->sh.sh_size; - } - return totrelsz; -} - /* Overall supervision for Elf32 ET_REL file. */ static int do_func(unsigned const reltype) -- 2.20.1