[RFC PATCH v3 07/12] objtool: Use macros to define arch specific reloc types

Christophe Leroy christophe.leroy at csgroup.eu
Tue Jul 5 01:53:50 AEST 2022



Le 04/07/2022 à 13:14, Peter Zijlstra a écrit :
> On Sat, Jun 25, 2022 at 12:02:33AM +0530, Sathvika Vasireddy wrote:
>> Make relocation types architecture specific.
>>
>> Signed-off-by: Sathvika Vasireddy <sv at linux.ibm.com>
>> ---
>>   tools/objtool/arch/x86/include/arch/elf.h | 2 ++
>>   tools/objtool/check.c                     | 2 +-
>>   2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/tools/objtool/arch/x86/include/arch/elf.h b/tools/objtool/arch/x86/include/arch/elf.h
>> index 69cc4264b28a..ac14987cf687 100644
>> --- a/tools/objtool/arch/x86/include/arch/elf.h
>> +++ b/tools/objtool/arch/x86/include/arch/elf.h
>> @@ -2,5 +2,7 @@
>>   #define _OBJTOOL_ARCH_ELF
>>   
>>   #define R_NONE R_X86_64_NONE
>> +#define R_ABS64 R_X86_64_64
>> +#define R_ABS32 R_X86_64_32
>>   
>>   #endif /* _OBJTOOL_ARCH_ELF */
>> diff --git a/tools/objtool/check.c b/tools/objtool/check.c
>> index 98e869721bc4..88f68269860e 100644
>> --- a/tools/objtool/check.c
>> +++ b/tools/objtool/check.c
>> @@ -834,7 +834,7 @@ static int create_mcount_loc_sections(struct objtool_file *file)
>>   		memset(loc, 0, size);
>>   
>>   		if (elf_add_reloc_to_insn(file->elf, sec, idx,
>> -					  R_X86_64_64,
>> +					  size == sizeof(u64) ? R_ABS64 : R_ABS32,
>>   					  insn->sec, insn->offset))
>>   			return -1;
>>   
> 
> Given cross compiles, should this not also be elf dependent?

size is elf dependent (From the same series [RFC PATCH v3 03/12] 
objtool: Use target file class size instead of a compiled constant)

R_ABS64 and R_ABS32 are defined in the architecture elf.h, and this is 
the architecture for which you are building your kernel, not the 
architecture you cross compile on.


More information about the Linuxppc-dev mailing list