mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-09 00:14:56 +00:00
Implemented LLE Modules Manager (draft)
Improved loader core. Implemented *_thread wrappers. Minor fixes. Temporary disabled ELF Compiler & DisAsm frame.
This commit is contained in:
parent
1d61484992
commit
598d929aba
57 changed files with 2844 additions and 2804 deletions
|
|
@ -1,63 +0,0 @@
|
|||
#include "stdafx.h"
|
||||
#include "Emu/FS/vfsStream.h"
|
||||
#include "ELF.h"
|
||||
#include "ELF64.h"
|
||||
#include "ELF32.h"
|
||||
|
||||
void Elf_Ehdr::Show()
|
||||
{
|
||||
}
|
||||
|
||||
void Elf_Ehdr::Load(vfsStream& f)
|
||||
{
|
||||
e_magic = Read32(f);
|
||||
e_class = Read8(f);
|
||||
}
|
||||
|
||||
ELFLoader::ELFLoader(vfsStream& f)
|
||||
: m_elf_file(f)
|
||||
, LoaderBase()
|
||||
, m_loader(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
bool ELFLoader::LoadInfo()
|
||||
{
|
||||
if(!m_elf_file.IsOpened())
|
||||
return false;
|
||||
|
||||
m_elf_file.Seek(0);
|
||||
ehdr.Load(m_elf_file);
|
||||
if(!ehdr.CheckMagic())
|
||||
return false;
|
||||
|
||||
switch(ehdr.GetClass())
|
||||
{
|
||||
case CLASS_ELF32:
|
||||
m_loader = new ELF32Loader(m_elf_file);
|
||||
break;
|
||||
case CLASS_ELF64:
|
||||
m_loader = new ELF64Loader(m_elf_file);
|
||||
break;
|
||||
}
|
||||
|
||||
if(!(m_loader && m_loader->LoadInfo()))
|
||||
return false;
|
||||
|
||||
entry = m_loader->GetEntry();
|
||||
machine = m_loader->GetMachine();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ELFLoader::LoadData(u64 offset)
|
||||
{
|
||||
return m_loader && m_loader->LoadData(offset);
|
||||
}
|
||||
|
||||
bool ELFLoader::Close()
|
||||
{
|
||||
delete m_loader;
|
||||
m_loader = nullptr;
|
||||
return m_elf_file.Close();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue