From 09f119a3ce4fdfd56f87b7572d648e8bf1b162db Mon Sep 17 00:00:00 2001 From: David Miller Date: Wed, 29 Apr 2020 16:39:40 -0400 Subject: [PATCH] removed front end header / class from EmulatedFiles.cpp --- .../HLE/EmulatedFiles/EmulatedFiles.cpp | 18 ++++++------------ .../FEXCore/include/FEXCore/Core/CodeLoader.h | 2 ++ Source/Tests/HarnessHelpers.h | 2 +- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/External/FEXCore/Source/Interface/HLE/EmulatedFiles/EmulatedFiles.cpp b/External/FEXCore/Source/Interface/HLE/EmulatedFiles/EmulatedFiles.cpp index fc250d0e0..6f26b38aa 100644 --- a/External/FEXCore/Source/Interface/HLE/EmulatedFiles/EmulatedFiles.cpp +++ b/External/FEXCore/Source/Interface/HLE/EmulatedFiles/EmulatedFiles.cpp @@ -1,7 +1,7 @@ #include #include #include "LogManager.h" -#include "Tests/HarnessHelpers.h" +#include "FEXCore/Core/CodeLoader.h" #include "Interface/Context/Context.h" #include "Interface/HLE/FileManagement.h" @@ -10,7 +10,7 @@ using string = std::string; namespace FEXCore::EmulatedFile { - static const std::string proc_cpuinfo = R"( + static const string proc_cpuinfo = R"( processor : 0 vendor_id : AuthenticAMD cpu family : 23 @@ -39,7 +39,7 @@ cache_alignment : 64 address sizes : 43 bits physical, 48 bits virtual )"; - static const std::string cpus_online = R"( + static const string cpus_online = R"( 0 )"; @@ -64,7 +64,7 @@ address sizes : 43 bits physical, 48 bits virtual }; string procAuxv = string("/proc/") + std::to_string(getpid()) + string("/auxv"); - EmulatedMap.emplace(procAuxv); // * get pid /proc/$PID/auxv , self is a symlink albeit likely to be what's used + EmulatedMap.emplace(procAuxv); EmulatedMap.emplace("/proc/self/auxv"); FDReadCreators[procAuxv] = &EmulatedFDManager::ProcAuxv; @@ -75,7 +75,7 @@ address sizes : 43 bits physical, 48 bits virtual } int32_t EmulatedFDManager::OpenAt(int dirfs, const char *pathname, int flags, uint32_t mode) { - std::string cpath = std::filesystem::exists(pathname) ? std::filesystem::canonical(pathname) + string cpath = std::filesystem::exists(pathname) ? std::filesystem::canonical(pathname) : std::filesystem::path(pathname).lexically_normal(); // *Note: this doesn't transform to absolute if (EmulatedMap.find(cpath) == EmulatedMap.end()) { @@ -87,14 +87,8 @@ address sizes : 43 bits physical, 48 bits virtual int32_t EmulatedFDManager::ProcAuxv(FEXCore::Context::Context* ctx, int32_t fd, const char* pathname, int32_t flags, mode_t mode) { - FEX::HarnessHelper::ELFCodeLoader *const elfLoader = dynamic_cast(ctx->GetCodeLoader()); - if (!elfLoader) { - LogMan::Msg::D("Failed to get ELFCodeLoader"); - return -1; - } - uint64_t auxvBase=0, auxvSize=0; - elfLoader->GetAuxv(auxvBase, auxvSize); + ctx->GetCodeLoader()->GetAuxv(auxvBase, auxvSize); if (!auxvBase) { LogMan::Msg::D("Failed to get Auxv stack address"); return -1; diff --git a/External/FEXCore/include/FEXCore/Core/CodeLoader.h b/External/FEXCore/include/FEXCore/Core/CodeLoader.h index 172a0d694..8b98f5fbc 100644 --- a/External/FEXCore/include/FEXCore/Core/CodeLoader.h +++ b/External/FEXCore/include/FEXCore/Core/CodeLoader.h @@ -82,6 +82,8 @@ public: virtual char const *FindSymbolNameInRange(uint64_t Address) { return nullptr; } virtual void GetExecveArguments(std::vector *Args) {} + + virtual void GetAuxv(uint64_t& addr, uint64_t& size) {} }; diff --git a/Source/Tests/HarnessHelpers.h b/Source/Tests/HarnessHelpers.h index fe01293d4..dd4b6bbfd 100644 --- a/Source/Tests/HarnessHelpers.h +++ b/Source/Tests/HarnessHelpers.h @@ -600,7 +600,7 @@ public: void GetExecveArguments(std::vector *Args) override { *Args = LoaderArgs; } - void GetAuxv(uint64_t& addr, uint64_t& size) { + void GetAuxv(uint64_t& addr, uint64_t& size) override { addr = AuxTabBase; size = AuxTabSize; }