summaryrefslogtreecommitdiffhomepage
path: root/Private/Source
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-02-15 11:09:38 +0100
committerAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-02-15 11:09:38 +0100
commitf323b1049bb581403d903f95224c0476b1812d43 (patch)
treec757c75cc476b79a57d39be8b5f20045dc720031 /Private/Source
parentc6592da1f0461ee7b60fcc5a7f9e852273171b6d (diff)
HCR-18
Kernel: - Add back RuntimeMain jump. - Update DLL/SO runtime for PEF. NewBoot: - Figured out how to load this PE in a reusable way. Signed-off-by: Amlal El Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Private/Source')
-rw-r--r--Private/Source/PEFSharedObjectRT.cxx21
1 files changed, 6 insertions, 15 deletions
diff --git a/Private/Source/PEFSharedObjectRT.cxx b/Private/Source/PEFSharedObjectRT.cxx
index aceca259..60a3ea8f 100644
--- a/Private/Source/PEFSharedObjectRT.cxx
+++ b/Private/Source/PEFSharedObjectRT.cxx
@@ -20,6 +20,7 @@
01/02/24: Rework shared library ABI, except a __LibInit and __LibFini
(amlel)
+ 15/02/24: Breaking changes, changed the name of the routines. (amlel)
------------------------------------------- */
@@ -31,14 +32,13 @@ using namespace HCore;
/***********************************************************************************/
/***********************************************************************************/
-/* @brief Allocates a new library. */
+/* @brief Library runtime initializer. */
/***********************************************************************************/
-extern "C" SharedObject *__LibInit() {
- SharedObject *library = hcore_tls_new_class<SharedObject>();
+extern "C" SharedObjectPtr ke_library_init(void) {
+ SharedObjectPtr library = hcore_tls_new_class<SharedObject>();
if (!library) {
- kcout << "__LibInit: Out of Memory!\n";
ProcessManager::Shared().Leak().GetCurrent().Leak().Crash();
return nullptr;
@@ -47,7 +47,6 @@ extern "C" SharedObject *__LibInit() {
library->Mount(hcore_tls_new_class<SharedObject::SharedObjectTraits>());
if (!library->Get()) {
- kcout << "__LibInit: Out of Memory!\n";
ProcessManager::Shared().Leak().GetCurrent().Leak().Crash();
return nullptr;
@@ -57,7 +56,6 @@ extern "C" SharedObject *__LibInit() {
ProcessManager::Shared().Leak().GetCurrent().Leak().Image;
if (!library->Get()->fImageObject) {
- kcout << "__LibInit: Invalid image!\n";
ProcessManager::Shared().Leak().GetCurrent().Leak().Crash();
return nullptr;
@@ -66,25 +64,20 @@ extern "C" SharedObject *__LibInit() {
library->Get()->fImageEntrypointOffset =
library->Load<VoidPtr>(kPefStart, rt_string_len(kPefStart, 0), kPefCode);
- kcout << "__LibInit: Task is successful!\n";
-
return library;
}
/***********************************************************************************/
-
-/***********************************************************************************/
-/* @brief Frees the library. */
+/* @brief Ends the library. */
/* @note Please check if the lib got freed! */
/* @param SharedObjectPtr the library to free. */
/***********************************************************************************/
-extern "C" Void __LibFini(SharedObjectPtr lib, bool *successful) {
+extern "C" Void ke_library_free(SharedObjectPtr lib, bool *successful) {
MUST_PASS(successful);
// sanity check (will also trigger a bug check)
if (lib == nullptr) {
- kcout << "__LibFini: Invalid image!\n";
*successful = false;
ProcessManager::Shared().Leak().GetCurrent().Leak().Crash();
}
@@ -94,8 +87,6 @@ extern "C" Void __LibFini(SharedObjectPtr lib, bool *successful) {
lib = nullptr;
- kcout << "__LibFini: Task is successful!\n";
-
*successful = true;
}