sh.type_ = SHT_PROGBITS
sh.flags = SHF_ALLOC
sh.addralign = 1
- if *flagInterpreter == "" {
+ if interpreter == "" {
switch HEADTYPE {
case obj.Hlinux:
- *flagInterpreter = Thearch.Linuxdynld
+ interpreter = Thearch.Linuxdynld
case obj.Hfreebsd:
- *flagInterpreter = Thearch.Freebsddynld
+ interpreter = Thearch.Freebsddynld
case obj.Hnetbsd:
- *flagInterpreter = Thearch.Netbsddynld
+ interpreter = Thearch.Netbsddynld
case obj.Hopenbsd:
- *flagInterpreter = Thearch.Openbsddynld
+ interpreter = Thearch.Openbsddynld
case obj.Hdragonfly:
- *flagInterpreter = Thearch.Dragonflydynld
+ interpreter = Thearch.Dragonflydynld
case obj.Hsolaris:
- *flagInterpreter = Thearch.Solarisdynld
+ interpreter = Thearch.Solarisdynld
}
}
- resoff -= int64(elfinterp(sh, uint64(startva), uint64(resoff), *flagInterpreter))
+ resoff -= int64(elfinterp(sh, uint64(startva), uint64(resoff), interpreter))
ph := newElfPhdr(ctxt)
ph.type_ = PT_INTERP
goto err
}
- if !flagInterpreterSet {
- if *flagInterpreter != "" && *flagInterpreter != f[1] {
- fmt.Fprintf(os.Stderr, "%s: conflict dynlinker: %s and %s\n", os.Args[0], *flagInterpreter, f[1])
+ if *flagInterpreter == "" {
+ if interpreter != "" && interpreter != f[1] {
+ fmt.Fprintf(os.Stderr, "%s: conflict dynlinker: %s and %s\n", os.Args[0], interpreter, f[1])
nerrors++
return
}
- *flagInterpreter = f[1]
+ interpreter = f[1]
}
continue
flagExtldflags = flag.String("extldflags", "", "pass `flags` to external linker")
flagExtar = flag.String("extar", "", "archive program for buildmode=c-archive")
- flagA = flag.Bool("a", false, "disassemble output")
- FlagC = flag.Bool("c", false, "dump call graph")
- FlagD = flag.Bool("d", false, "disable dynamic executable")
- flagF = flag.Bool("f", false, "ignore version mismatch")
- flagG = flag.Bool("g", false, "disable go package data checks")
- flagH = flag.Bool("h", false, "halt on error")
- flagN = flag.Bool("n", false, "dump symbol table")
- FlagS = flag.Bool("s", false, "disable symbol table")
- flagU = flag.Bool("u", false, "reject unsafe packages")
- FlagW = flag.Bool("w", false, "disable DWARF generation")
- Flag8 bool // use 64-bit addresses in symbol table
-
- flagInterpreter = flag.String("I", "", "use `linker` as ELF dynamic linker")
- flagInterpreterSet bool
+ flagA = flag.Bool("a", false, "disassemble output")
+ FlagC = flag.Bool("c", false, "dump call graph")
+ FlagD = flag.Bool("d", false, "disable dynamic executable")
+ flagF = flag.Bool("f", false, "ignore version mismatch")
+ flagG = flag.Bool("g", false, "disable go package data checks")
+ flagH = flag.Bool("h", false, "halt on error")
+ flagN = flag.Bool("n", false, "dump symbol table")
+ FlagS = flag.Bool("s", false, "disable symbol table")
+ flagU = flag.Bool("u", false, "reject unsafe packages")
+ FlagW = flag.Bool("w", false, "disable DWARF generation")
+ Flag8 bool // use 64-bit addresses in symbol table
+ flagInterpreter = flag.String("I", "", "use `linker` as ELF dynamic linker")
FlagRound = flag.Int("R", -1, "set address rounding `quantum`")
FlagTextAddr = flag.Int64("T", -1, "set text segment `address`")
}
obj.Flagparse(usage)
- flagInterpreterSet = *flagInterpreter != ""
startProfile()
ctxt.Bso = ctxt.Bso
}
}
+ interpreter = *flagInterpreter
+
libinit(ctxt) // creates outfile
if HEADTYPE == -1 {