internal void DoRelocs(BinaryWriter reloc)
{
if (relocTide > 0) {
// align block to 32 bit boundary
relocOff = (uint)reloc.Seek(0,SeekOrigin.Current);
if ((relocOff % 32) != 0) {
uint padding = 32 - (relocOff % 32);
for (int i=0; i < padding; i++)
reloc.Write((byte)0);
relocOff += padding;
}
uint block = (relocs[0]/relocPageSize + 1) * relocPageSize;
int start = 0;
for (int i=1; i < relocTide; i++) {
if (relocs[i] >= block) {
DoBlock(reloc,block-relocPageSize,start,i);
start = i;
block = (relocs[i]/relocPageSize + 1) * relocPageSize;
}
}
DoBlock(reloc,block-relocPageSize,start,(int)relocTide);
}
}