Apply riperiperi's suggestion

This commit is contained in:
Thog 2020-01-06 16:18:51 +01:00
parent e4c672d9bf
commit 2a35ae7700
No known key found for this signature in database
GPG key ID: 0CD291558FAFDBC6

View file

@ -311,7 +311,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
while ((ulong)symTblAddr < (ulong)strTblAddr)
{
ElfSymbol sym = GetSymbol(memory, symTblAddr, strTblAddr);
ElfSymbol sym = isAArch32 ? GetSymbol32(memory, symTblAddr, strTblAddr) : GetSymbol64(memory, symTblAddr, strTblAddr);
symbols.Add(sym);
@ -324,7 +324,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
}
}
private ElfSymbol GetSymbol(MemoryManager memory, long address, long strTblAddr)
private ElfSymbol GetSymbol64(MemoryManager memory, long address, long strTblAddr)
{
int nameIndex = memory.ReadInt32(address + 0);
int info = memory.ReadByte (address + 4);
@ -342,5 +342,24 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
return new ElfSymbol(name, info, other, shIdx, value, size);
}
private ElfSymbol GetSymbol32(MemoryManager memory, long address, long strTblAddr)
{
int nameIndex = memory.ReadInt32(address + 0);
int info = memory.ReadByte (address + 4);
int other = memory.ReadByte (address + 5);
int shIdx = memory.ReadByte (address + 12);
long value = memory.ReadByte (address + 13);
long size = memory.ReadInt16(address + 14);
string name = string.Empty;
for (int chr; (chr = memory.ReadByte(strTblAddr + nameIndex++)) != 0;)
{
name += (char)chr;
}
return new ElfSymbol(name, info, other, shIdx, value, size);
}
}
}