mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-24 01:15:29 +02:00
Section offset info to absolute address.
This commit is contained in:
parent
c18c6ff16f
commit
03b46ea0c6
1 changed files with 13 additions and 4 deletions
|
@ -648,15 +648,24 @@ public class PE {
|
|||
|
||||
public Symbol[] getSymbols() throws IOException {
|
||||
if (symbolTable == null) {
|
||||
SectionHeader[] secHeaders = getSectionHeaders();
|
||||
NTOptionalHeader ntHeader = getNTOptionalHeader();
|
||||
|
||||
RandomAccessFile accessFile = getRandomAccessFile();
|
||||
long offset = fileHeader.f_symptr;
|
||||
symbolTable = new Symbol[fileHeader.f_nsyms];
|
||||
for (int i = 0; i < symbolTable.length; i++, offset += Symbol.SYMSZ) {
|
||||
symbolTable[i] = new Symbol(accessFile, offset);
|
||||
NTOptionalHeader ntHeader = getNTOptionalHeader();
|
||||
// FIXME: What is this again ?
|
||||
Symbol newSym = new Symbol(accessFile, offset);
|
||||
|
||||
// Now convert section offset of the symbol to image offset.
|
||||
if (newSym.n_scnum >= 1 && newSym.n_scnum <= secHeaders.length) // valid section #
|
||||
newSym.n_value += secHeaders[newSym.n_scnum-1].s_vaddr;
|
||||
|
||||
// convert to absolute address.
|
||||
if (ntHeader != null)
|
||||
symbolTable[i].n_value += ntHeader.ImageBase + ntHeader.FileAlignment;
|
||||
newSym.n_value += ntHeader.ImageBase;
|
||||
|
||||
symbolTable[i] = newSym;
|
||||
}
|
||||
}
|
||||
return symbolTable;
|
||||
|
|
Loading…
Add table
Reference in a new issue