[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8a4dfa4e57702c4a24475dcf130b2c8a515f06bd.1586468801.git.mhelsley@vmware.com>
Date: Fri, 10 Apr 2020 12:35:47 -0700
From: Matt Helsley <mhelsley@...are.com>
To: <linux-kernel@...r.kernel.org>
CC: Josh Poimboeuf <jpoimboe@...hat.com>,
Peter Zijlstra <peterz@...radead.org>,
Julien Thierry <jthierry@...hat.com>,
Ingo Molnar <mingo@...hat.com>,
Steven Rostedt <rostedt@...dmis.org>,
Miroslav Benes <mbenes@...e.cz>,
Matt Helsley <mhelsley@...are.com>
Subject: [RFC][PATCH 24/36] objtool: mcount: Move helpers out of ELF wrapper
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 <mhelsley@...are.com>
---
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
Powered by blists - more mailing lists