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);
}