lkml.org 
[lkml]   [2020]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC][PATCH 24/36] objtool: mcount: Move helpers out of ELF wrapper
    Date
    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@vmware.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
    \
     
     \ /
      Last update: 2020-04-10 21:39    [W:4.063 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site