summaryrefslogtreecommitdiffhomepage
path: root/Private/Source
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-04 19:23:48 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-05-04 19:23:48 +0200
commit770b1034a8f1bc401251ebbbeb8af82568829f09 (patch)
tree1130dcc08167438f40189cbeff05d14125a04e09 /Private/Source
parentfd7b08906adf40b81f3ac758ca55da501cb2283d (diff)
MHR-23: Improve code and add a ProcessSubsystem inside the scheduler.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/Source')
-rw-r--r--Private/Source/PEFCodeManager.cxx19
1 files changed, 11 insertions, 8 deletions
diff --git a/Private/Source/PEFCodeManager.cxx b/Private/Source/PEFCodeManager.cxx
index cd1b301f..41a0d7f3 100644
--- a/Private/Source/PEFCodeManager.cxx
+++ b/Private/Source/PEFCodeManager.cxx
@@ -94,19 +94,22 @@ VoidPtr PEFLoader::FindSymbol(const char *name, Int32 kind) {
PEFCommandHeader *container_header = reinterpret_cast<PEFCommandHeader *>(
(UIntPtr)fCachedBlob + sizeof(PEFContainer));
+ constexpr auto cMangleCharacter = '$';
+ const char* cContainerKinds[] = { ".code64", ".data64", ".zero64", nullptr };
+
ErrorOr<StringView> errOrSym;
switch (kind) {
case kPefCode: {
- errOrSym = StringBuilder::Construct(".code64$");
+ errOrSym = StringBuilder::Construct(cContainerKinds[0]); // code symbol.
break;
}
case kPefData: {
- errOrSym = StringBuilder::Construct(".data64$");
+ errOrSym = StringBuilder::Construct(cContainerKinds[1]); // data symbol.
break;
}
case kPefZero: {
- errOrSym = StringBuilder::Construct(".zero64$");
+ errOrSym = StringBuilder::Construct(cContainerKinds[2]); // block starting symbol.
break;
}
default:
@@ -115,9 +118,9 @@ VoidPtr PEFLoader::FindSymbol(const char *name, Int32 kind) {
char *unconstSymbol = const_cast<char *>(name);
- for (SizeT i = 0UL; i < rt_string_len(name, 0); ++i) {
+ for (SizeT i = 0UL; i < rt_string_len(unconstSymbol, kPefNameLen); ++i) {
if (unconstSymbol[i] == ' ') {
- unconstSymbol[i] = '$';
+ unconstSymbol[i] = cMangleCharacter;
}
}
@@ -170,7 +173,7 @@ bool execute_from_image(PEFLoader &exec, const Int32& procKind) noexcept {
const char *PEFLoader::Path() { return fPath.Leak().CData(); }
-const char *PEFLoader::Format() {
+const char *PEFLoader::FormatAsString() {
#ifdef __32x0__
return "32x0 PEF.";
#elif defined(__64x0__)
@@ -180,8 +183,8 @@ const char *PEFLoader::Format() {
#elif defined(__powerpc64__)
return "POWER PEF.";
#else
- return "Unknonwn PEF.";
- #endif // __32x0__ || __64x0__ || __x86_64__
+ return "Unknown PEF.";
+ #endif // __32x0__ || __64x0__ || __x86_64__ || __powerpc64__
}
const char *PEFLoader::MIME() { return kPefApplicationMime; }