From 5e4963d9e8952d2f527746df3dd51dbde2354700 Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Wed, 20 Oct 2010 14:06:00 +1100 Subject: [PATCH] 8l: fix windows build R=rsc CC=golang-dev https://golang.org/cl/2595041 --- src/cmd/ld/pe.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/cmd/ld/pe.c b/src/cmd/ld/pe.c index 4351c7c57c..025782f872 100644 --- a/src/cmd/ld/pe.c +++ b/src/cmd/ld/pe.c @@ -86,6 +86,7 @@ pewrite(void) { int i, j; + seek(cout, 0, 0); ewrite(cout, dosstub, sizeof dosstub); strnput("PE", 4); @@ -102,7 +103,7 @@ pewrite(void) 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; @@ -167,7 +168,6 @@ add_import_table(void) 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); @@ -187,12 +187,13 @@ add_import_table(void) lputl(f->thunk); strnput("", isect->SizeOfRawData - size); cflush(); - seek(cout, off, 0); } void asmbpe(void) { + vlong eof; + switch(thechar) { default: diag("unknown PE architecture"); @@ -205,6 +206,10 @@ asmbpe(void) 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; -- 2.50.0