Fix compilation on Release mode

This commit is contained in:
Alex 2023-08-06 15:46:30 +03:00
parent 2c51e4432f
commit 0dc4593625
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
2 changed files with 20 additions and 5 deletions

View File

@ -188,9 +188,9 @@ namespace Execute
// AT_RANDOM 25 // AT_RANDOM 25
// AT_SECURE 23 // AT_SECURE 23
Elfauxv.push_back({.archaux = {.a_type = AT_EGID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */ Elfauxv.push_back({.archaux = {.a_type = AT_EGID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */
Elfauxv.push_back({.archaux = {.a_type = AT_GID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */ Elfauxv.push_back({.archaux = {.a_type = AT_GID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */
Elfauxv.push_back({.archaux = {.a_type = AT_EUID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */ Elfauxv.push_back({.archaux = {.a_type = AT_EUID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */
Elfauxv.push_back({.archaux = {.a_type = AT_UID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */ Elfauxv.push_back({.archaux = {.a_type = AT_UID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */
Elfauxv.push_back({.archaux = {.a_type = AT_ENTRY, .a_un = {.a_val = (uint64_t)EntryPoint}}}); Elfauxv.push_back({.archaux = {.a_type = AT_ENTRY, .a_un = {.a_val = (uint64_t)EntryPoint}}});
// AT_FLAGS 8 // AT_FLAGS 8
Elfauxv.push_back({.archaux = {.a_type = AT_BASE, .a_un = {.a_val = (uint64_t)BaseAddress}}}); Elfauxv.push_back({.archaux = {.a_type = AT_BASE, .a_un = {.a_val = (uint64_t)BaseAddress}}});
@ -392,22 +392,34 @@ namespace Execute
std::size_t PltGotSize = PltGot.size(); std::size_t PltGotSize = PltGot.size();
if (JmpRelSize < 1) if (JmpRelSize < 1)
{
debug("No DT_JMPREL"); debug("No DT_JMPREL");
}
if (SymTabSize < 1) if (SymTabSize < 1)
{
debug("No DT_SYMTAB"); debug("No DT_SYMTAB");
}
if (StrTabSize < 1) if (StrTabSize < 1)
{
debug("No DT_STRTAB"); debug("No DT_STRTAB");
}
if (RelaDynSize_v < 1) if (RelaDynSize_v < 1)
{
debug("No DT_RELA"); debug("No DT_RELA");
}
if (RelaDynSize[0].d_un.d_val < 1) if (RelaDynSize[0].d_un.d_val < 1)
{
debug("DT_RELASZ is < 1"); debug("DT_RELASZ is < 1");
}
if (PltGotSize < 1) if (PltGotSize < 1)
{
debug("No DT_PLTGOT"); debug("No DT_PLTGOT");
}
if (JmpRelSize > 0 && SymTabSize > 0 && StrTabSize > 0) if (JmpRelSize > 0 && SymTabSize > 0 && StrTabSize > 0)
{ {
@ -585,9 +597,9 @@ namespace Execute
// AT_RANDOM 25 // AT_RANDOM 25
// AT_SECURE 23 // AT_SECURE 23
Elfauxv.push_back({.archaux = {.a_type = AT_EGID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */ Elfauxv.push_back({.archaux = {.a_type = AT_EGID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */
Elfauxv.push_back({.archaux = {.a_type = AT_GID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */ Elfauxv.push_back({.archaux = {.a_type = AT_GID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */
Elfauxv.push_back({.archaux = {.a_type = AT_EUID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */ Elfauxv.push_back({.archaux = {.a_type = AT_EUID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */
Elfauxv.push_back({.archaux = {.a_type = AT_UID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */ Elfauxv.push_back({.archaux = {.a_type = AT_UID, .a_un = {.a_val = (uint64_t)0}}}); /* FIXME */
Elfauxv.push_back({.archaux = {.a_type = AT_ENTRY, .a_un = {.a_val = (uint64_t)EntryPoint}}}); Elfauxv.push_back({.archaux = {.a_type = AT_ENTRY, .a_un = {.a_val = (uint64_t)EntryPoint}}});
// AT_FLAGS 8 // AT_FLAGS 8
Elfauxv.push_back({.archaux = {.a_type = AT_BASE, .a_un = {.a_val = (uint64_t)BaseAddress}}}); Elfauxv.push_back({.archaux = {.a_type = AT_BASE, .a_un = {.a_val = (uint64_t)BaseAddress}}});

View File

@ -117,7 +117,10 @@ namespace Execute
debug("Loaded elf %s at %#lx with the length of %ld", debug("Loaded elf %s at %#lx with the length of %ld",
Path, ElfFile, statbuf.st_size); Path, ElfFile, statbuf.st_size);
PCB *Process = TaskManager->CreateProcess(thisProcess, if (Parent == nullptr)
Parent = thisProcess;
PCB *Process = TaskManager->CreateProcess(Parent,
BaseName, BaseName,
TaskExecutionMode::User, TaskExecutionMode::User,
ElfFile, false, ElfFile, false,