Commit 75fb2f6c authored by Alex Brainman's avatar Alex Brainman

8l/6l: new -Hwindowsgui flag allows to build windows gui pe

Fixes #1516.

R=rsc, mattn
CC=golang-dev
https://golang.org/cl/4214041
parent a1d95dea
......@@ -51,6 +51,7 @@ Header headers[] = {
"linux", Hlinux,
"freebsd", Hfreebsd,
"windows", Hwindows,
"windowsgui", Hwindows,
0, 0
};
......
......@@ -57,6 +57,7 @@ Header headers[] = {
"nacl", Hnacl,
"freebsd", Hfreebsd,
"windows", Hwindows,
"windowsgui", Hwindows,
"tiny", Htiny,
0, 0
};
......
......@@ -1271,8 +1271,10 @@ headtype(char *name)
int i;
for(i=0; headers[i].name; i++)
if(strcmp(name, headers[i].name) == 0)
if(strcmp(name, headers[i].name) == 0) {
headstring = headers[i].name;
return headers[i].val;
}
fprint(2, "unknown header type -H %s\n", name);
errorexit();
return -1; // not reached
......
......@@ -237,5 +237,7 @@ struct Header {
int val;
};
EXTERN char* headstring;
extern Header headers[];
int headtype(char*);
......@@ -526,7 +526,10 @@ asmbpe(void)
set(MinorSubsystemVersion, 0);
set(SizeOfImage, nextsectoff);
set(SizeOfHeaders, PEFILEHEADR);
set(Subsystem, 3); // WINDOWS_CUI
if(strcmp(headstring, "windowsgui") == 0)
set(Subsystem, IMAGE_SUBSYSTEM_WINDOWS_GUI);
else
set(Subsystem, IMAGE_SUBSYSTEM_WINDOWS_CUI);
set(SizeOfStackReserve, 0x0040000);
set(SizeOfStackCommit, 0x00001000);
set(SizeOfHeapReserve, 0x00100000);
......
......@@ -131,6 +131,9 @@ enum {
IMAGE_DIRECTORY_ENTRY_IAT = 12,
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13,
IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14,
IMAGE_SUBSYSTEM_WINDOWS_GUI = 2,
IMAGE_SUBSYSTEM_WINDOWS_CUI = 3,
};
void peinit(void);
......
......@@ -6,6 +6,8 @@ GOOS=windows
include ../../../Make.inc
LD:=$(LD) -Hwindowsgui
TARG=wingui
GOFILES=\
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment