Le 16/06/2022 à 15:57, Peter Zijlstra a écrit :
> On Thu, Jun 16, 2022 at 01:40:34PM +0000, Christophe Leroy wrote:
>> sizeof(u64) is always 8 by definition.
>>
>> So if size is 8 we are working on a binary file for a 64 bits target, if
>> not it means we are working for a 32 bits target.
> 
> Cross-builds invalidate this I think. Best to look at something like:
> 
>    elf->ehdr.e_ident[EI_CLASS] == ELFCLASS32
> 
> 

Yes that's what it does indirectly:

        int size = elf_class_size(elf);


With

static inline int elf_class_size(struct elf *elf)
{
        if (elf->ehdr.e_ident[EI_CLASS] == ELFCLASS32)
                return sizeof(u32);
        else
                return sizeof(u64);
}

Reply via email to