]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: don't record interpreter in flagInterpreter
authorIan Lance Taylor <iant@golang.org>
Tue, 23 Aug 2016 05:29:24 +0000 (22:29 -0700)
committerIan Lance Taylor <iant@golang.org>
Tue, 23 Aug 2016 13:10:12 +0000 (13:10 +0000)
Keep flagInterpreter unchanged after flag parsing. This lets us replace
flagInterpreterSet with flagInterpreter != "".

Change-Id: Ifd2edbb2ce0011e97276ca18281b8ffbabde1c50
Reviewed-on: https://go-review.googlesource.com/27563
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/link/internal/ld/elf.go
src/cmd/link/internal/ld/go.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/main.go

index 9ba2374e759bdae17f2616ae90c9945ae750b7d5..4ac53eaf501f721c1d8ec167bd6fd71b60132045 100644 (file)
@@ -2205,29 +2205,29 @@ func Asmbelf(ctxt *Link, symo int64) {
                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
index b89843779b569b8aa91c8574c9d9fe18aa68d1fe..ffae53eda3767258b8145f28abcbbc52f84d3255 100644 (file)
@@ -267,14 +267,14 @@ func loadcgo(ctxt *Link, file string, pkg string, p string) {
                                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
index 4acb34006e304dfe68bb2c07ea14386c7c6032cb..e0dd87819ad2ffbde3ca0693b8e768744111a3c1 100644 (file)
@@ -179,6 +179,7 @@ var (
        Funcalign       int
        iscgo           bool
        elfglobalsymndx int
+       interpreter     string
 
        debug_s  bool // backup old value of debug['s']
        HEADR    int32
index 280648a06f9b998ca20314f9ff1d631476a845b7..349542bde1f3dea536ceb3de6c342585fcf1d636 100644 (file)
@@ -73,20 +73,18 @@ var (
        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`")
@@ -133,7 +131,6 @@ func Main() {
        }
 
        obj.Flagparse(usage)
-       flagInterpreterSet = *flagInterpreter != ""
 
        startProfile()
        ctxt.Bso = ctxt.Bso
@@ -159,6 +156,8 @@ func Main() {
                }
        }
 
+       interpreter = *flagInterpreter
+
        libinit(ctxt) // creates outfile
 
        if HEADTYPE == -1 {