ELF struct datatype
recently, I had confusion about ELF datatype. let's look into elf.h
see it?
// 32 bit elf
typedef __u32 Elf32_Word;
// 64 bit elf
typedef __u32 Elf64_Word;
why word? even in assembly says
- 8 bit -> byte
- 16 bit -> word
- 32 bit -> dword
- 64 -> qword
why word (that is 16 bit), its uses u32 instead u16?
answer
the key is portability. lets look at elf64 and elf32
typedef __u32 Elf32_Word;
typedef __u32 Elf64_Word;
keep in mind that word (in ELF) is 32 bit int. so we use this convention
- half -> unsigned 16 bit
- word -> unsigned 32 bit
- Xword -> unsigned 64 bit
also works for
- Shalf -> signed 16 bit
- Sword -> signed 32 bit
- Sxword -> signed 64 bit