case obj.Hopenbsd:
argv = append(argv, "-Wl,-nopie")
case obj.Hwindows:
- argv = append(argv, "-mconsole")
- case obj.Hwindowsgui:
- argv = append(argv, "-mwindows")
+ if windowsgui {
+ argv = append(argv, "-mwindows")
+ } else {
+ argv = append(argv, "-mconsole")
+ }
}
switch Buildmode {
var (
pkglistfornote []byte
+ windowsgui bool // writes a "GUI binary" instead of a "console binary"
)
func init() {
flag.Var(&Linkmode, "linkmode", "set link `mode`")
flag.Var(&Buildmode, "buildmode", "set build `mode`")
- flag.Var(&Headtype, "H", "set header `type`")
flag.Var(&rpath, "r", "set the ELF dynamic linker search `path` to dir1:dir2:...")
}
flagInterpreter = flag.String("I", "", "use `linker` as ELF dynamic linker")
FlagDebugTramp = flag.Int("debugtramp", 0, "debug trampolines")
+ flagHeadtype = flag.String("H", "", "set header `type`")
FlagRound = flag.Int("R", -1, "set address rounding `quantum`")
FlagTextAddr = flag.Int64("T", -1, "set text segment `address`")
FlagDataAddr = flag.Int64("D", -1, "set data segment `address`")
obj.Flagparse(usage)
+ switch *flagHeadtype {
+ case "":
+ case "windowsgui":
+ Headtype = obj.Hwindows
+ windowsgui = true
+ default:
+ if err := Headtype.Set(*flagHeadtype); err != nil {
+ Errorf(nil, "%v", err)
+ usage()
+ }
+ }
+
startProfile()
if Buildmode == BuildmodeUnset {
Buildmode = BuildmodeExe
oh.SizeOfImage = uint32(nextsectoff)
oh64.SizeOfHeaders = uint32(PEFILEHEADR)
oh.SizeOfHeaders = uint32(PEFILEHEADR)
- if Headtype == obj.Hwindowsgui {
+ if windowsgui {
oh64.Subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI
oh.Subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI
} else {