]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link: port asmb2 pe generation over to generic functions
authorJeremy Faller <jeremy@golang.org>
Thu, 21 May 2020 21:32:59 +0000 (17:32 -0400)
committerJeremy Faller <jeremy@golang.org>
Tue, 26 May 2020 17:54:56 +0000 (17:54 +0000)
Change-Id: I09ab68e1fa99bf0260b7e820b8747d5d418fd581
Reviewed-on: https://go-review.googlesource.com/c/go/+/234890
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/cmd/link/internal/amd64/asm.go
src/cmd/link/internal/arm/asm.go
src/cmd/link/internal/ld/asmb.go
src/cmd/link/internal/x86/asm.go

index 514edad55cc0cc235848f5ac84ff0d43521b0869..849095d07d2a7cb84e65e5b4a76d3fc2502da541 100644 (file)
@@ -686,6 +686,9 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
        if ctxt.IsElf() {
                panic("elf should be generic")
        }
+       if ctxt.IsWindows() {
+               panic("pe should be generic")
+       }
 
        switch ctxt.HeadType {
        default:
@@ -693,7 +696,6 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
                fallthrough
 
        case objabi.Hplan9:
-       case objabi.Hwindows:
                break
        }
 
@@ -701,24 +703,15 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
        ld.Spsize = 0
        ld.Lcsize = 0
        if !*ld.FlagS {
-               if ctxt.HeadType == objabi.Hplan9 {
-                       *ld.FlagS = true
-                       symo := int64(ld.Segdata.Fileoff + ld.Segdata.Filelen)
-                       ctxt.Out.SeekSet(symo)
-                       ld.Asmplan9sym(ctxt)
-               }
+               *ld.FlagS = true
+               symo := int64(ld.Segdata.Fileoff + ld.Segdata.Filelen)
+               ctxt.Out.SeekSet(symo)
+               ld.Asmplan9sym(ctxt)
        }
 
        ctxt.Out.SeekSet(0)
-       switch ctxt.HeadType {
-       default:
-       case objabi.Hplan9: /* plan9 */
-               magic := uint32(4*26*26 + 7)
-               ld.WritePlan9Header(ctxt.Out, magic, ld.Entryvalue(ctxt), true)
-
-       case objabi.Hwindows:
-               ld.Asmbpe(ctxt)
-       }
+       magic := uint32(4*26*26 + 7)
+       ld.WritePlan9Header(ctxt.Out, magic, ld.Entryvalue(ctxt), true)
 }
 
 func tlsIEtoLE(P []byte, off, size int) {
index 8197fb991887144bce709e52d616ba5558fc334d..3515a60ea754f5b230a295a3e9672ac7bbff7f5d 100644 (file)
@@ -675,27 +675,20 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
        if ctxt.IsElf() {
                panic("elf should be generic")
        }
+       if ctxt.IsWindows() {
+               panic("pe should be generic")
+       }
        /* output symbol table */
        ld.Symsize = 0
 
        ld.Lcsize = 0
        if !*ld.FlagS {
-               if ctxt.IsPlan9() {
-                       symo := uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)
-                       ctxt.Out.SeekSet(int64(symo))
-                       ld.Asmplan9sym(ctxt)
-               }
+               symo := uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)
+               ctxt.Out.SeekSet(int64(symo))
+               ld.Asmplan9sym(ctxt)
        }
 
-       ctxt.Out.SeekSet(0)
-       switch ctxt.HeadType {
-       default:
-       case objabi.Hplan9: /* plan 9 */
-               ld.WritePlan9Header(ctxt.Out, 0x647, ld.Entryvalue(ctxt), false)
-
-       case objabi.Hwindows:
-               ld.Asmbpe(ctxt)
-       }
+       ld.WritePlan9Header(ctxt.Out, 0x647, ld.Entryvalue(ctxt), false)
 
        if *ld.FlagC {
                fmt.Printf("textsize=%d\n", ld.Segtext.Filelen)
index eccd3e56fbd104a921fabe3207b9742418ba581f..aebd1d2ceb24f4f9ebe74b8464c951418bbda8ff 100644 (file)
@@ -108,6 +108,13 @@ func asmb2(ctxt *Link) bool {
                Asmbelf(ctxt, symo)
                return true
        }
+       if ctxt.IsWindows() {
+               Symsize = 0
+               Spsize = 0
+               Lcsize = 0
+               Asmbpe(ctxt)
+               return true
+       }
        return false
 }
 
index dc5b56a2b96b2102a922988053d88e916cf0b0d8..746661a0288114990ed38549604d08f7d104f3f1 100644 (file)
@@ -517,26 +517,20 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
        if ctxt.IsElf() {
                panic("elf should be generic")
        }
+       if ctxt.IsWindows() {
+               panic("pe should be generic")
+       }
 
        ld.Symsize = 0
        ld.Spsize = 0
        ld.Lcsize = 0
        if !*ld.FlagS {
-               if ctxt.HeadType == objabi.Hplan9 {
-                       symo := uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)
-                       ctxt.Out.SeekSet(int64(symo))
-                       ld.Asmplan9sym(ctxt)
-               }
+               symo := uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)
+               ctxt.Out.SeekSet(int64(symo))
+               ld.Asmplan9sym(ctxt)
        }
 
        ctxt.Out.SeekSet(0)
-       switch ctxt.HeadType {
-       default:
-       case objabi.Hplan9: /* plan9 */
-               magic := uint32(4*11*11 + 7)
-               ld.WritePlan9Header(ctxt.Out, magic, ld.Entryvalue(ctxt), false)
-
-       case objabi.Hwindows:
-               ld.Asmbpe(ctxt)
-       }
+       magic := uint32(4*11*11 + 7)
+       ld.WritePlan9Header(ctxt.Out, magic, ld.Entryvalue(ctxt), false)
 }