mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-07 07:21:25 +12:00
Unused include in unself.h, ELF.h. New line after an if to enable debugging. Rewrite strange boolean expression in ELF.cpp.
63 lines
973 B
C++
63 lines
973 B
C++
#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();
|
|
}
|