summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel')
-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";