Skip to content

Commit

Permalink
cmd/link: turn some globals into flag pointer variables
Browse files Browse the repository at this point in the history
This moves many of the flag globals into main and assigns them
to their flag.String/Int64/... directly.

Updates #16818

Change-Id: Ibbff44a273bbc5cb7228e43f147900ee8848517f
Reviewed-on: https://go-review.googlesource.com/27473
Reviewed-by: David Crawshaw <crawshaw@golang.org>
  • Loading branch information
matloob committed Aug 22, 2016
1 parent 2369013 commit fa8a28d
Show file tree
Hide file tree
Showing 26 changed files with 577 additions and 591 deletions.
12 changes: 6 additions & 6 deletions src/cmd/link/internal/amd64/asm.go
Expand Up @@ -657,15 +657,15 @@ func asmb(ctxt *ld.Link) {
break

case obj.Hdarwin:
ld.Debug['8'] = true /* 64-bit addresses */
ld.Flag8 = true /* 64-bit addresses */

case obj.Hlinux,
obj.Hfreebsd,
obj.Hnetbsd,
obj.Hopenbsd,
obj.Hdragonfly,
obj.Hsolaris:
ld.Debug['8'] = true /* 64-bit addresses */
ld.Flag8 = true /* 64-bit addresses */

case obj.Hnacl,
obj.Hwindows:
Expand All @@ -676,19 +676,19 @@ func asmb(ctxt *ld.Link) {
ld.Spsize = 0
ld.Lcsize = 0
symo := int64(0)
if !ld.Debug['s'] {
if !*ld.FlagS {
if ctxt.Debugvlog != 0 {
fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
}
ctxt.Bso.Flush()
switch ld.HEADTYPE {
default:
case obj.Hplan9:
ld.Debug['s'] = true
*ld.FlagS = true
symo = int64(ld.Segdata.Fileoff + ld.Segdata.Filelen)

case obj.Hdarwin:
symo = int64(ld.Segdwarf.Fileoff + uint64(ld.Rnd(int64(ld.Segdwarf.Filelen), int64(ld.INITRND))) + uint64(machlink))
symo = int64(ld.Segdwarf.Fileoff + uint64(ld.Rnd(int64(ld.Segdwarf.Filelen), int64(*ld.FlagRound))) + uint64(machlink))

case obj.Hlinux,
obj.Hfreebsd,
Expand All @@ -698,7 +698,7 @@ func asmb(ctxt *ld.Link) {
obj.Hsolaris,
obj.Hnacl:
symo = int64(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
symo = ld.Rnd(symo, int64(ld.INITRND))
symo = ld.Rnd(symo, int64(*ld.FlagRound))

case obj.Hwindows:
symo = int64(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
Expand Down
68 changes: 34 additions & 34 deletions src/cmd/link/internal/amd64/obj.go
Expand Up @@ -42,7 +42,7 @@ import (

func Main() {
linkarchinit()
ld.Ldmain()
ld.Main()
}

func linkarchinit() {
Expand Down Expand Up @@ -121,28 +121,28 @@ func archinit(ctxt *ld.Link) {
case obj.Hplan9: /* plan 9 */
ld.HEADR = 32 + 8

if ld.INITTEXT == -1 {
ld.INITTEXT = 0x200000 + int64(ld.HEADR)
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = 0x200000 + int64(ld.HEADR)
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}
if ld.INITRND == -1 {
ld.INITRND = 0x200000
if *ld.FlagRound == -1 {
*ld.FlagRound = 0x200000
}

case obj.Hdarwin: /* apple MACH */
ld.Machoinit()

ld.HEADR = ld.INITIAL_MACHO_HEADR
if ld.INITRND == -1 {
ld.INITRND = 4096
if *ld.FlagRound == -1 {
*ld.FlagRound = 4096
}
if ld.INITTEXT == -1 {
ld.INITTEXT = 4096 + int64(ld.HEADR)
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = 4096 + int64(ld.HEADR)
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}

case obj.Hlinux, /* elf64 executable */
Expand All @@ -154,47 +154,47 @@ func archinit(ctxt *ld.Link) {
ld.Elfinit(ctxt)

ld.HEADR = ld.ELFRESERVE
if ld.INITTEXT == -1 {
ld.INITTEXT = (1 << 22) + int64(ld.HEADR)
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = (1 << 22) + int64(ld.HEADR)
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}
if ld.INITRND == -1 {
ld.INITRND = 4096
if *ld.FlagRound == -1 {
*ld.FlagRound = 4096
}

case obj.Hnacl:
ld.Elfinit(ctxt)
ld.Debug['w'] = true // disable dwarf, which gets confused and is useless anyway
*ld.FlagW = true // disable dwarf, which gets confused and is useless anyway
ld.HEADR = 0x10000
ld.Funcalign = 32
if ld.INITTEXT == -1 {
ld.INITTEXT = 0x20000
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = 0x20000
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}
if ld.INITRND == -1 {
ld.INITRND = 0x10000
if *ld.FlagRound == -1 {
*ld.FlagRound = 0x10000
}

case obj.Hwindows: /* PE executable */
ld.Peinit(ctxt)

ld.HEADR = ld.PEFILEHEADR
if ld.INITTEXT == -1 {
ld.INITTEXT = ld.PEBASE + int64(ld.PESECTHEADR)
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = ld.PEBASE + int64(ld.PESECTHEADR)
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}
if ld.INITRND == -1 {
ld.INITRND = ld.PESECTALIGN
if *ld.FlagRound == -1 {
*ld.FlagRound = ld.PESECTALIGN
}
}

if ld.INITDAT != 0 && ld.INITRND != 0 {
fmt.Printf("warning: -D0x%x is ignored because of -R0x%x\n", uint64(ld.INITDAT), uint32(ld.INITRND))
if *ld.FlagDataAddr != 0 && *ld.FlagRound != 0 {
fmt.Printf("warning: -D0x%x is ignored because of -R0x%x\n", uint64(*ld.FlagDataAddr), uint32(*ld.FlagRound))
}
}
8 changes: 4 additions & 4 deletions src/cmd/link/internal/arm/asm.go
Expand Up @@ -630,7 +630,7 @@ func asmb(ctxt *ld.Link) {

ld.Lcsize = 0
symo := uint32(0)
if !ld.Debug['s'] {
if !*ld.FlagS {
// TODO: rationalize
if ctxt.Debugvlog != 0 {
fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
Expand All @@ -640,14 +640,14 @@ func asmb(ctxt *ld.Link) {
default:
if ld.Iself {
symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
symo = uint32(ld.Rnd(int64(symo), int64(ld.INITRND)))
symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
}

case obj.Hplan9:
symo = uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)

case obj.Hdarwin:
symo = uint32(ld.Segdwarf.Fileoff + uint64(ld.Rnd(int64(ld.Segdwarf.Filelen), int64(ld.INITRND))) + uint64(machlink))
symo = uint32(ld.Segdwarf.Fileoff + uint64(ld.Rnd(int64(ld.Segdwarf.Filelen), int64(*ld.FlagRound))) + uint64(machlink))
}

ld.Cseek(int64(symo))
Expand Down Expand Up @@ -717,7 +717,7 @@ func asmb(ctxt *ld.Link) {
}

ld.Cflush()
if ld.Debug['c'] {
if *ld.FlagC {
fmt.Printf("textsize=%d\n", ld.Segtext.Filelen)
fmt.Printf("datsize=%d\n", ld.Segdata.Filelen)
fmt.Printf("bsssize=%d\n", ld.Segdata.Length-ld.Segdata.Filelen)
Expand Down
58 changes: 29 additions & 29 deletions src/cmd/link/internal/arm/obj.go
Expand Up @@ -42,7 +42,7 @@ import (

func Main() {
linkarchinit()
ld.Ldmain()
ld.Main()
}

func linkarchinit() {
Expand Down Expand Up @@ -112,64 +112,64 @@ func archinit(ctxt *ld.Link) {
case obj.Hplan9: /* plan 9 */
ld.HEADR = 32

if ld.INITTEXT == -1 {
ld.INITTEXT = 4128
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = 4128
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}
if ld.INITRND == -1 {
ld.INITRND = 4096
if *ld.FlagRound == -1 {
*ld.FlagRound = 4096
}

case obj.Hlinux, /* arm elf */
obj.Hfreebsd,
obj.Hnetbsd,
obj.Hopenbsd:
ld.Debug['d'] = false
*ld.FlagD = false
// with dynamic linking
ld.Elfinit(ctxt)
ld.HEADR = ld.ELFRESERVE
if ld.INITTEXT == -1 {
ld.INITTEXT = 0x10000 + int64(ld.HEADR)
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = 0x10000 + int64(ld.HEADR)
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}
if ld.INITRND == -1 {
ld.INITRND = 4096
if *ld.FlagRound == -1 {
*ld.FlagRound = 4096
}

case obj.Hnacl:
ld.Elfinit(ctxt)
ld.HEADR = 0x10000
ld.Funcalign = 16
if ld.INITTEXT == -1 {
ld.INITTEXT = 0x20000
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = 0x20000
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}
if ld.INITRND == -1 {
ld.INITRND = 0x10000
if *ld.FlagRound == -1 {
*ld.FlagRound = 0x10000
}

case obj.Hdarwin: /* apple MACH */
ld.Debug['w'] = true // disable DWARF generation
*ld.FlagW = true // disable DWARF generation
ld.Machoinit()
ld.HEADR = ld.INITIAL_MACHO_HEADR
if ld.INITTEXT == -1 {
ld.INITTEXT = 4096 + int64(ld.HEADR)
if *ld.FlagTextAddr == -1 {
*ld.FlagTextAddr = 4096 + int64(ld.HEADR)
}
if ld.INITDAT == -1 {
ld.INITDAT = 0
if *ld.FlagDataAddr == -1 {
*ld.FlagDataAddr = 0
}
if ld.INITRND == -1 {
ld.INITRND = 4096
if *ld.FlagRound == -1 {
*ld.FlagRound = 4096
}
}

if ld.INITDAT != 0 && ld.INITRND != 0 {
fmt.Printf("warning: -D0x%x is ignored because of -R0x%x\n", uint64(ld.INITDAT), uint32(ld.INITRND))
if *ld.FlagDataAddr != 0 && *ld.FlagRound != 0 {
fmt.Printf("warning: -D0x%x is ignored because of -R0x%x\n", uint64(*ld.FlagDataAddr), uint32(*ld.FlagRound))
}
}
8 changes: 4 additions & 4 deletions src/cmd/link/internal/arm64/asm.go
Expand Up @@ -439,7 +439,7 @@ func asmb(ctxt *ld.Link) {

ld.Lcsize = 0
symo := uint32(0)
if !ld.Debug['s'] {
if !*ld.FlagS {
// TODO: rationalize
if ctxt.Debugvlog != 0 {
fmt.Fprintf(ctxt.Bso, "%5.2f sym\n", obj.Cputime())
Expand All @@ -449,14 +449,14 @@ func asmb(ctxt *ld.Link) {
default:
if ld.Iself {
symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
symo = uint32(ld.Rnd(int64(symo), int64(ld.INITRND)))
symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
}

case obj.Hplan9:
symo = uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)

case obj.Hdarwin:
symo = uint32(ld.Segdwarf.Fileoff + uint64(ld.Rnd(int64(ld.Segdwarf.Filelen), int64(ld.INITRND))) + uint64(machlink))
symo = uint32(ld.Segdwarf.Fileoff + uint64(ld.Rnd(int64(ld.Segdwarf.Filelen), int64(*ld.FlagRound))) + uint64(machlink))
}

ld.Cseek(int64(symo))
Expand Down Expand Up @@ -526,7 +526,7 @@ func asmb(ctxt *ld.Link) {
}

ld.Cflush()
if ld.Debug['c'] {
if *ld.FlagC {
fmt.Printf("textsize=%d\n", ld.Segtext.Filelen)
fmt.Printf("datsize=%d\n", ld.Segdata.Filelen)
fmt.Printf("bsssize=%d\n", ld.Segdata.Length-ld.Segdata.Filelen)
Expand Down

0 comments on commit fa8a28d

Please sign in to comment.