{
int i, j;
+ seek(cout, 0, 0);
ewrite(cout, dosstub, sizeof dosstub);
strnput("PE", 4);
void
dope(void)
{
- textsect = new_section(".text", textsize, 0);
+ textsect = new_section(".text", segtext.len, 0);
textsect->Characteristics = IMAGE_SCN_CNT_CODE|
IMAGE_SCN_CNT_INITIALIZED_DATA|
IMAGE_SCN_MEM_EXECUTE|IMAGE_SCN_MEM_READ;
for(f=fs; f->name; f++)
f->thunk += va;
- vlong off = seek(cout, 0, 1);
seek(cout, 0, 2);
for(d=ds; ; d++) {
lputl(d->OriginalFirstThunk);
lputl(f->thunk);
strnput("", isect->SizeOfRawData - size);
cflush();
- seek(cout, off, 0);
}
void
asmbpe(void)
{
+ vlong eof;
+
switch(thechar) {
default:
diag("unknown PE architecture");
break;
}
+ // make sure the end of file is INITRND-aligned.
+ eof = seek(cout, 0, 2);
+ strnput("", rnd(eof, INITRND) - eof);
+
add_import_table();
fh.NumberOfSections = nsect;