public static void Setup() { KernelMessage.WriteLine("Setup ELF Headers"); //KernelMessage.WriteLine("Image Header:"); //KernelMemory.DumpToConsoleLine(Address.KernelElfSection, 124); Main = FromAddress(Address.KernelElfSectionVirt); Native = FromSectionName("native"); }
public static unsafe ElfSections FromAddress(Addr elfStart) { var elfHeader = (ElfHeader *)elfStart; var helper = new ElfSections { PhyOffset = elfStart, SectionHeaderArray = (ElfSectionHeader *)(elfStart + elfHeader->ShOff), SectionHeaderCount = elfHeader->ShNum, StringTableSectionHeaderIndex = elfHeader->ShStrNdx, }; helper.Init(); return(helper); }
public static unsafe ElfSections FromAddress(Addr elfStart) { var elfHeader = (ElfHeader *)elfStart; if (elfHeader->Ident1 != ElfHeader.Magic1) { KernelMessage.WriteLine("No valid ELF found at {0:X8}", elfStart); // TODO: Throw Exception } if (KConfig.Log.ELF) { KernelMessage.WriteLine("Found ELF at {0:X8}", elfStart); } return(ElfSections.FromAddress(elfStart)); }