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[] = { ...@@ -51,6 +51,7 @@ Header headers[] = {
"linux", Hlinux, "linux", Hlinux,
"freebsd", Hfreebsd, "freebsd", Hfreebsd,
"windows", Hwindows, "windows", Hwindows,
"windowsgui", Hwindows,
0, 0 0, 0
}; };
......
...@@ -57,6 +57,7 @@ Header headers[] = { ...@@ -57,6 +57,7 @@ Header headers[] = {
"nacl", Hnacl, "nacl", Hnacl,
"freebsd", Hfreebsd, "freebsd", Hfreebsd,
"windows", Hwindows, "windows", Hwindows,
"windowsgui", Hwindows,
"tiny", Htiny, "tiny", Htiny,
0, 0 0, 0
}; };
......
...@@ -1271,8 +1271,10 @@ headtype(char *name) ...@@ -1271,8 +1271,10 @@ headtype(char *name)
int i; int i;
for(i=0; headers[i].name; 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; return headers[i].val;
}
fprint(2, "unknown header type -H %s\n", name); fprint(2, "unknown header type -H %s\n", name);
errorexit(); errorexit();
return -1; // not reached return -1; // not reached
......
...@@ -237,5 +237,7 @@ struct Header { ...@@ -237,5 +237,7 @@ struct Header {
int val; int val;
}; };
EXTERN char* headstring;
extern Header headers[]; extern Header headers[];
int headtype(char*); int headtype(char*);
...@@ -526,7 +526,10 @@ asmbpe(void) ...@@ -526,7 +526,10 @@ asmbpe(void)
set(MinorSubsystemVersion, 0); set(MinorSubsystemVersion, 0);
set(SizeOfImage, nextsectoff); set(SizeOfImage, nextsectoff);
set(SizeOfHeaders, PEFILEHEADR); 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(SizeOfStackReserve, 0x0040000);
set(SizeOfStackCommit, 0x00001000); set(SizeOfStackCommit, 0x00001000);
set(SizeOfHeapReserve, 0x00100000); set(SizeOfHeapReserve, 0x00100000);
......
...@@ -131,6 +131,9 @@ enum { ...@@ -131,6 +131,9 @@ enum {
IMAGE_DIRECTORY_ENTRY_IAT = 12, IMAGE_DIRECTORY_ENTRY_IAT = 12,
IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13, IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13,
IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14, IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14,
IMAGE_SUBSYSTEM_WINDOWS_GUI = 2,
IMAGE_SUBSYSTEM_WINDOWS_CUI = 3,
}; };
void peinit(void); void peinit(void);
......
...@@ -6,6 +6,8 @@ GOOS=windows ...@@ -6,6 +6,8 @@ GOOS=windows
include ../../../Make.inc include ../../../Make.inc
LD:=$(LD) -Hwindowsgui
TARG=wingui TARG=wingui
GOFILES=\ 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