linux_demon: checkpoint

This commit is contained in:
Ryan Fleury committed 2026-08-11 14:02:40 -07:00
1 parent 338a8226a1
commit 94392b4975
7 files changed
+305 -346

No files matched your search

+38
View File
@@ -213,6 +213,20 @@ elf_sym_size_from_class(ELF_Class elf_class)
return result;
}
internal U64
elf_auxv_size_from_class(ELF_Class elf_class)
{
U64 result = 0;
switch((ELF_ClassEnum)elf_class)
{
case ELF_Class_COUNT:
case ELF_Class_None:{}break;
case ELF_Class_32:{result = sizeof(ELF_Auxv32);}break;
case ELF_Class_64:{result = sizeof(ELF_Auxv64);}break;
}
return result;
}
////////////////////////////////
//~ rjf: Optional Class Conversion Readers
@@ -335,3 +349,27 @@ elf_sym64_from_class_data(ELF_Class elf_class, String8 data)
}
return result;
}
internal ELF_Auxv64
elf_auxv64_from_class_data(ELF_Class elf_class, String8 data)
{
ELF_Auxv64 result = {0};
U64 needed_size = elf_auxv_size_from_class(elf_class);
if(data.size >= needed_size)
{
switch(elf_class)
{
default:{}break;
case ELF_Class_32:
{
ELF_Auxv32 result32 = *(ELF_Auxv32 *)data.str;
result = elf_auxv64_from_auxv32(result32);
}break;
case ELF_Class_64:
{
result = *(ELF_Auxv64 *)data.str;
}break;
}
}
return result;
}
+2
View File
@@ -880,6 +880,7 @@ internal U64 elf_phdr_size_from_class(ELF_Class elf_class);
internal U64 elf_shdr_size_from_class(ELF_Class elf_class);
internal U64 elf_dyn_size_from_class(ELF_Class elf_class);
internal U64 elf_sym_size_from_class(ELF_Class elf_class);
internal U64 elf_auxv_size_from_class(ELF_Class elf_class);
////////////////////////////////
//~ rjf: Optional Class Conversion Readers
@@ -889,5 +890,6 @@ internal ELF_Phdr64 elf_phdr64_from_class_data(ELF_Class elf_class, String8 data
internal ELF_Shdr64 elf_shdr64_from_class_data(ELF_Class elf_class, String8 data);
internal ELF_Dyn64 elf_dyn64_from_class_data(ELF_Class elf_class, String8 data);
internal ELF_Sym64 elf_sym64_from_class_data(ELF_Class elf_class, String8 data);
internal ELF_Auxv64 elf_auxv64_from_class_data(ELF_Class elf_class, String8 data);
#endif // ELF_H