From 29a66b56639c235c56287488f69225d626c10820 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Fri, 26 Sep 2025 14:05:50 +1000 Subject: [PATCH] add ELF data types --- lib/elf/README.md | 6 ++++++ lib/elf/elf.h | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 lib/elf/README.md create mode 100644 lib/elf/elf.h diff --git a/lib/elf/README.md b/lib/elf/README.md new file mode 100644 index 0000000..71a89ae --- /dev/null +++ b/lib/elf/README.md @@ -0,0 +1,6 @@ +# Executable and Linkable Format (ELF) + +## References: +1. https://en.wikipedia.org/wiki/Executable_and_Linkable_Format +2. https://gabi.xinuos.com/ +3. https://github.com/xinuos/gabi diff --git a/lib/elf/elf.h b/lib/elf/elf.h new file mode 100644 index 0000000..d15919e --- /dev/null +++ b/lib/elf/elf.h @@ -0,0 +1,26 @@ +/* + * REF: https://gabi.xinuos.com/elf/01-intro.html + */ + +#include + +/* Byte alignment for the ELF data types will always match the size. + * For example a structure containing an Elf32_Addr member will + * be aligned on a 4-byte boundary within the file. + */ +/* 32-Bit Data Types */ +typedef uint32_t Elf32_Addr; /* Unsigned program address */ +typedef uint32_t Elf32_Off; /* Unsigned file offset */ +typedef uint16_t Elf32_Half; /* Unsigned medium integer */ +typedef uint32_t Elf32_Word; /* Unsigned integer */ +typedef int32_t Elf32_Sword; /* Signed integer */ +/* 64-Bit Data Types */ +typedef uint64_t Elf64_Addr; /* Unsigned program address */ +typedef uint64_t Elf64_Off; /* Unsigned file offset */ +typedef uint16_t Elf64_Half; /* Unsigned medium integer */ +typedef uint32_t Elf64_Word; /* Unsigned integer */ +typedef int32_t Elf64_Sword; /* Signed integer */ +typedef uint64_t Elf64_Xword; /* Unsigned long integer */ +typedef int64_t Elf64_Sxword; /* Signed long integer */ + +