summaryrefslogtreecommitdiffhomepage
path: root/dev
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-06-18 10:26:27 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-06-18 10:26:27 +0200
commit42301b6977bf11f8d5b55c6ca8c08b97a2b4cc3c (patch)
tree81ae387f90d666bfdb08ad77064c4264c085a564 /dev
parent6c817b699af42ff454b601e592ff1d3e4894d2e5 (diff)
PEF format update `5.0` and codebase refactors.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev')
-rw-r--r--dev/kernel/KernelKit/PEF.h14
-rw-r--r--dev/kernel/src/PEFCodeMgr.cc4
2 files changed, 10 insertions, 8 deletions
diff --git a/dev/kernel/KernelKit/PEF.h b/dev/kernel/KernelKit/PEF.h
index c28c8f8c..a357e827 100644
--- a/dev/kernel/KernelKit/PEF.h
+++ b/dev/kernel/KernelKit/PEF.h
@@ -18,12 +18,12 @@
#include <KernelKit/LoaderInterface.h>
#include <NeKit/Defines.h>
-#define kPefMagic "Joy!"
-#define kPefMagicFat "yoJ!"
+#define kPefMagic "Open"
+#define kPefMagicFat "nepO"
#define kPefMagicLen (5)
-#define kPefVersion (4)
+#define kPefVersion (0x0500)
#define kPefNameLen (256U)
/* not mandatory, only for non fork based filesystems. */
@@ -59,10 +59,10 @@ enum {
};
enum {
+ kPefSubArchGeneric,
kPefSubArchAMD = 200,
kPefSubArchIntel,
kPefSubArchARM,
- kPefSubArchGeneric,
kPefSubArchIBM,
};
@@ -98,15 +98,17 @@ typedef struct PEFCommandHeader final {
UInt32 Flags; /* container flags */
UInt16 Kind; /* container kind */
UIntPtr Offset; /* content offset */
- UIntPtr VMAddress; /* VM offset */
- SizeT Size; /* content Size */
+ UIntPtr VMAddress; /* Virtual Address */
+ SizeT VMSize; /* Virtual Size */
} PACKED PEFCommandHeader;
enum {
+ kPefInvalid = 0x0,
kPefCode = 0xC,
kPefData = 0xD,
kPefZero = 0xE,
kPefLinkerID = 0x1,
+ kPefCount = 4,
};
} // namespace Kernel
diff --git a/dev/kernel/src/PEFCodeMgr.cc b/dev/kernel/src/PEFCodeMgr.cc
index ed72473f..f572fe99 100644
--- a/dev/kernel/src/PEFCodeMgr.cc
+++ b/dev/kernel/src/PEFCodeMgr.cc
@@ -152,10 +152,10 @@ ErrorOr<VoidPtr> PEFLoader::FindSymbol(const Char* name, Int32 kind) {
}
}
- Char* container_blob_value = new Char[container_header->Size];
+ Char* container_blob_value = new Char[container_header->VMSize];
rt_copy_memory((VoidPtr) ((Char*) blob + sizeof(PEFCommandHeader)), container_blob_value,
- container_header->Size);
+ container_header->VMSize);
mm_free_ptr(blob);
kout << "PEFLoader: Information: Loaded stub: " << container_header->Name << "!\r";