Re: [RFC PATCH 4/4] objtool/powerpc: Add --mcount specific implementation
From: Naveen N. Rao <hidden>
Date: 2022-06-16 13:34:59
Also in:
lkml
Christophe Leroy wrote:
Le 25/05/2022 à 19:27, Christophe Leroy a écrit :quoted
Le 24/05/2022 à 15:33, Christophe Leroy a écrit :quoted
Le 24/05/2022 à 13:00, Sathvika Vasireddy a écrit :quoted
quoted
quoted
+{ + 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/ (local) 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;
How does 'sizeof(u64)' work here? - Naveen