lkml.org 
[lkml]   [2022]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [RFC PATCH 4/4] objtool/powerpc: Add --mcount specific implementation
    From


    Le 25/05/2022 à 19:27, Christophe Leroy a écrit :
    >
    >
    > Le 24/05/2022 à 15:33, Christophe Leroy a écrit :
    >>
    >>
    >> Le 24/05/2022 à 13:00, Sathvika Vasireddy a écrit :
    >>>>
    >>>>> +{
    >>>>> +    switch (elf->ehdr.e_machine) {
    >>>>> +    case EM_X86_64:
    >>>>> +            return R_X86_64_64;
    >>>>> +    case EM_PPC64:
    >>>>> +            return R_PPC64_ADDR64;
    >>>>> +    default:
    >>>>> +            WARN("unknown machine...");
    >>>>> +            exit(-1);
    >>>>> +    }
    >>>>> +}
    >>>> Wouldn't it be better to make that function arch specific ?
    >>>
    >>> This is so that we can support cross architecture builds.
    >>>
    >>
    >>
    >> I'm not sure I follow you here.
    >>
    >> This is only based on the target, it doesn't depend on the build host so
    >> I can't the link with cross arch builds.
    >>
    >> The same as you have arch_decode_instruction(), you could have
    >> arch_elf_reloc_type_long()
    >> It would make sense indeed, because there is no point in supporting X86
    >> relocation when you don't support X86 instruction decoding.
    >>
    >
    > Could simply be some macro defined in
    > tools/objtool/arch/powerpc/include/arch/elf.h and
    > tools/objtool/arch/x86/include/arch/elf.h
    >
    > The x86 version would be:
    >
    > #define R_ADDR(elf) R_X86_64_64
    >
    > And the powerpc version would be:
    >
    > #define R_ADDR(elf) (elf->ehdr.e_machine == EM_PPC64 ? R_PPC64_ADDR64 :
    > R_PPC_ADDR32)
    >

    Well, looking once more, and taking into account the patch from Chen
    https://lore.kernel.org/lkml/20220531020744.236970-4-chenzhongjin@huawei.com/

    It would be easier to just define two macros:

    #define R_ABS64 R_PPC64_ADDR64
    #define R_ABS32 R_PPC_ADDR32

    And then in the caller, as we know the size, do something like

    size == sizeof(u64) ? R_ABS64 : R_ABS32;

    Christophe

    \
     
     \ /
      Last update: 2022-05-31 08:21    [W:4.322 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site