internal void BuildRelocSection() { // do entry point reloc uint relocPage = entryPointReloc / Section.relocPageSize; uint pageOff = relocPage * Section.relocPageSize; reloc.Write(text.RVA() + pageOff); reloc.Write(12); uint fixUpOff = entryPointReloc - pageOff; reloc.Write((ushort)((0x3 << 12) | fixUpOff)); reloc.Write((ushort)0); // text.DoRelocs(reloc); if (sdata != null) { sdata.DoRelocs(reloc); } if (rsrc != null) { rsrc.DoRelocs(reloc); } relocTide = (uint)reloc.Seek(0, SeekOrigin.Current); //reloc.Write((uint)0); if (Diag.DiagOn) { Console.WriteLine("relocTide = " + relocTide); } relocPadding = NumToAlign(relocTide, verInfo.fileAlign); relocSize = relocTide + relocPadding; imageSize = relocRVA + FileImage.SectionAlignment; initDataSize += relocSize; }