arm/pe: no need to try to precompute the size of relocations
This commit is contained in:
parent
bd1014abb6
commit
b3e20fc324
@ -1892,13 +1892,10 @@ void PackArmPe::pack(OutputFile *fo)
|
|||||||
const unsigned ncsection = (s1addr + s1size + oam1) &~ oam1;
|
const unsigned ncsection = (s1addr + s1size + oam1) &~ oam1;
|
||||||
const unsigned upxsection = s1addr + ic + clen;
|
const unsigned upxsection = s1addr + ic + clen;
|
||||||
|
|
||||||
const unsigned assumed_soxrelocs = !isdll ? 0 :
|
|
||||||
ALIGN_UP(8 + 2 * (3 + (ft.id ? 2 : 0) + (sorelocs ? 1 : 0) + 2), 4);
|
|
||||||
const unsigned myimport = ncsection + assumed_soxrelocs + soresources - rvamin;
|
|
||||||
|
|
||||||
Reloc rel(1024); // new relocations are put here
|
Reloc rel(1024); // new relocations are put here
|
||||||
// patch loader
|
// patch loader
|
||||||
rpatch_le32(loader, codesize, "ONAM", ih.imagebase + myimport + rvamin, rel, upxsection);
|
// the exact value of "ONAM" can not be computed here, so we set it later
|
||||||
|
int onam_offset = rpatch_le32(loader, codesize, "ONAM", 0, rel, upxsection);
|
||||||
rpatch_le32(loader, codesize, "BIMP", ih.imagebase + rvamin + cimports, rel, upxsection);
|
rpatch_le32(loader, codesize, "BIMP", ih.imagebase + rvamin + cimports, rel, upxsection);
|
||||||
|
|
||||||
if (sorelocs)
|
if (sorelocs)
|
||||||
@ -1971,8 +1968,8 @@ void PackArmPe::pack(OutputFile *fo)
|
|||||||
}
|
}
|
||||||
ic += soexport;
|
ic += soexport;
|
||||||
|
|
||||||
if (isdll && soxrelocs != assumed_soxrelocs)
|
const unsigned onam = ncsection + soxrelocs + soresources + ih.imagebase;
|
||||||
throwInternalError("FIXME: soxrelocs != assumed_soxrelocs");
|
set_le32(loader + onam_offset, onam);
|
||||||
|
|
||||||
// this is computed here, because soxrelocs changes some lines above
|
// this is computed here, because soxrelocs changes some lines above
|
||||||
const unsigned ncsize = soxrelocs + soresources + soimpdlls + soexport;
|
const unsigned ncsize = soxrelocs + soresources + soimpdlls + soexport;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user