aboutsummaryrefslogtreecommitdiff
path: root/hikari/loader/elf/constants.zig
diff options
context:
space:
mode:
authorBobby <[email protected]>2026-02-24 06:45:06 +0530
committerBobby <[email protected]>2026-02-24 06:45:06 +0530
commit297c66b480a238dad5ce7f03405fe6f5b9123701 (patch)
treec034198726c68d011380a581b1c32282eb7a2420 /hikari/loader/elf/constants.zig
parent6a7363663f34a031f3138802eeab1d5e569a753d (diff)
downloadakiba-297c66b480a238dad5ce7f03405fe6f5b9123701.tar.xz
akiba-297c66b480a238dad5ce7f03405fe6f5b9123701.zip
Implement Hikari Custom Boot Loader
Diffstat (limited to 'hikari/loader/elf/constants.zig')
-rw-r--r--hikari/loader/elf/constants.zig85
1 files changed, 85 insertions, 0 deletions
diff --git a/hikari/loader/elf/constants.zig b/hikari/loader/elf/constants.zig
new file mode 100644
index 0000000..1a91701
--- /dev/null
+++ b/hikari/loader/elf/constants.zig
@@ -0,0 +1,85 @@
+//! Hikari ELF Constants
+
+pub const magic: [4]u8 = .{ 0x7F, 'E', 'L', 'F' };
+
+pub const class_none: u8 = 0;
+pub const class_32: u8 = 1;
+pub const class_64: u8 = 2;
+
+pub const data_none: u8 = 0;
+pub const data_little_endian: u8 = 1;
+pub const data_big_endian: u8 = 2;
+
+pub const version_none: u8 = 0;
+pub const version_current: u8 = 1;
+
+pub const osabi_none: u8 = 0;
+pub const osabi_sysv: u8 = 0;
+pub const osabi_linux: u8 = 3;
+pub const osabi_freebsd: u8 = 9;
+pub const osabi_standalone: u8 = 255;
+
+pub const type_none: u16 = 0;
+pub const type_relocatable: u16 = 1;
+pub const type_executable: u16 = 2;
+pub const type_shared: u16 = 3;
+pub const type_core: u16 = 4;
+
+pub const machine_none: u16 = 0;
+pub const machine_386: u16 = 3;
+pub const machine_x86_64: u16 = 62;
+pub const machine_aarch64: u16 = 183;
+pub const machine_riscv: u16 = 243;
+
+pub const segment_null: u32 = 0;
+pub const segment_load: u32 = 1;
+pub const segment_dynamic: u32 = 2;
+pub const segment_interp: u32 = 3;
+pub const segment_note: u32 = 4;
+pub const segment_shlib: u32 = 5;
+pub const segment_phdr: u32 = 6;
+pub const segment_tls: u32 = 7;
+pub const segment_gnu_eh_frame: u32 = 0x6474E550;
+pub const segment_gnu_stack: u32 = 0x6474E551;
+pub const segment_gnu_relro: u32 = 0x6474E552;
+
+pub const segment_flag_execute: u32 = 0x1;
+pub const segment_flag_write: u32 = 0x2;
+pub const segment_flag_read: u32 = 0x4;
+
+pub const section_null: u32 = 0;
+pub const section_progbits: u32 = 1;
+pub const section_symtab: u32 = 2;
+pub const section_strtab: u32 = 3;
+pub const section_rela: u32 = 4;
+pub const section_hash: u32 = 5;
+pub const section_dynamic: u32 = 6;
+pub const section_note: u32 = 7;
+pub const section_nobits: u32 = 8;
+pub const section_rel: u32 = 9;
+pub const section_shlib: u32 = 10;
+pub const section_dynsym: u32 = 11;
+pub const section_init_array: u32 = 14;
+pub const section_fini_array: u32 = 15;
+pub const section_preinit_array: u32 = 16;
+pub const section_group: u32 = 17;
+pub const section_symtab_shndx: u32 = 18;
+
+pub const section_flag_write: u64 = 0x1;
+pub const section_flag_alloc: u64 = 0x2;
+pub const section_flag_execinstr: u64 = 0x4;
+pub const section_flag_merge: u64 = 0x10;
+pub const section_flag_strings: u64 = 0x20;
+pub const section_flag_info_link: u64 = 0x40;
+pub const section_flag_link_order: u64 = 0x80;
+pub const section_flag_os_nonconforming: u64 = 0x100;
+pub const section_flag_group: u64 = 0x200;
+pub const section_flag_tls: u64 = 0x400;
+
+pub const section_index_undefined: u16 = 0;
+pub const section_index_abs: u16 = 0xFFF1;
+pub const section_index_common: u16 = 0xFFF2;
+
+pub const elf64_header_size: usize = 64;
+pub const elf64_program_header_size: usize = 56;
+pub const elf64_section_header_size: usize = 64;