]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link: move asmb2 elf to generic handling
authorJeremy Faller <jeremy@golang.org>
Thu, 21 May 2020 21:07:25 +0000 (17:07 -0400)
committerJeremy Faller <jeremy@golang.org>
Tue, 26 May 2020 17:54:41 +0000 (17:54 +0000)
Change-Id: Ic3e90793f0ce49909c4f76df1272b25a1d61ebdf
Reviewed-on: https://go-review.googlesource.com/c/go/+/234887
Reviewed-by: Cherry Zhang <cherryyz@google.com>
15 files changed:
src/cmd/link/internal/amd64/asm.go
src/cmd/link/internal/arm/asm.go
src/cmd/link/internal/arm64/asm.go
src/cmd/link/internal/arm64/obj.go
src/cmd/link/internal/ld/asmb.go
src/cmd/link/internal/mips/asm.go
src/cmd/link/internal/mips/obj.go
src/cmd/link/internal/mips64/asm.go
src/cmd/link/internal/mips64/obj.go
src/cmd/link/internal/ppc64/asm.go
src/cmd/link/internal/riscv64/asm.go
src/cmd/link/internal/riscv64/obj.go
src/cmd/link/internal/s390x/asm.go
src/cmd/link/internal/s390x/obj.go
src/cmd/link/internal/x86/asm.go

index dba91976a1710417683fd6b581c21ff3a722d201..514edad55cc0cc235848f5ac84ff0d43521b0869 100644 (file)
@@ -683,6 +683,9 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
        if ctxt.IsDarwin() {
                panic("darwin should be generic")
        }
+       if ctxt.IsElf() {
+               panic("elf should be generic")
+       }
 
        switch ctxt.HeadType {
        default:
@@ -690,12 +693,6 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
                fallthrough
 
        case objabi.Hplan9:
-       case objabi.Hlinux,
-               objabi.Hfreebsd,
-               objabi.Hnetbsd,
-               objabi.Hopenbsd,
-               objabi.Hdragonfly,
-               objabi.Hsolaris:
        case objabi.Hwindows:
                break
        }
@@ -703,46 +700,12 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
        ld.Symsize = 0
        ld.Spsize = 0
        ld.Lcsize = 0
-       symo := int64(0)
        if !*ld.FlagS {
-               switch ctxt.HeadType {
-               default:
-               case objabi.Hplan9:
+               if ctxt.HeadType == objabi.Hplan9 {
                        *ld.FlagS = true
-                       symo = int64(ld.Segdata.Fileoff + ld.Segdata.Filelen)
-
-               case objabi.Hlinux,
-                       objabi.Hfreebsd,
-                       objabi.Hnetbsd,
-                       objabi.Hopenbsd,
-                       objabi.Hdragonfly,
-                       objabi.Hsolaris:
-                       symo = int64(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                       symo = ld.Rnd(symo, int64(*ld.FlagRound))
-
-               case objabi.Hwindows:
-                       symo = int64(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                       symo = ld.Rnd(symo, ld.PEFILEALIGN)
-               }
-
-               ctxt.Out.SeekSet(symo)
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               ctxt.Out.SeekSet(symo)
-                               ld.Asmelfsym(ctxt)
-                               ctxt.Out.Write(ld.Elfstrdat)
-
-                               if ctxt.LinkMode == ld.LinkExternal {
-                                       ld.Elfemitreloc(ctxt)
-                               }
-                       }
-
-               case objabi.Hplan9:
+                       symo := int64(ld.Segdata.Fileoff + ld.Segdata.Filelen)
+                       ctxt.Out.SeekSet(symo)
                        ld.Asmplan9sym(ctxt)
-
-               case objabi.Hwindows:
-                       // Do nothing
                }
        }
 
@@ -753,14 +716,6 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
                magic := uint32(4*26*26 + 7)
                ld.WritePlan9Header(ctxt.Out, magic, ld.Entryvalue(ctxt), true)
 
-       case objabi.Hlinux,
-               objabi.Hfreebsd,
-               objabi.Hnetbsd,
-               objabi.Hopenbsd,
-               objabi.Hdragonfly,
-               objabi.Hsolaris:
-               ld.Asmbelf(ctxt, symo)
-
        case objabi.Hwindows:
                ld.Asmbpe(ctxt)
        }
index d9e0df5192899e656092532872f1a040d54ca193..8197fb991887144bce709e52d616ba5558fc334d 100644 (file)
@@ -672,45 +672,18 @@ func addgotsym(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, s loade
 }
 
 func asmb2(ctxt *ld.Link, _ *loader.Loader) {
+       if ctxt.IsElf() {
+               panic("elf should be generic")
+       }
        /* output symbol table */
        ld.Symsize = 0
 
        ld.Lcsize = 0
-       symo := uint32(0)
        if !*ld.FlagS {
-               // TODO: rationalize
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                               symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
-                       }
-
-               case objabi.Hplan9:
-                       symo = uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)
-
-               case objabi.Hwindows:
-                       symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                       symo = uint32(ld.Rnd(int64(symo), ld.PEFILEALIGN))
-               }
-
-               ctxt.Out.SeekSet(int64(symo))
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               ld.Asmelfsym(ctxt)
-                               ctxt.Out.Write(ld.Elfstrdat)
-
-                               if ctxt.LinkMode == ld.LinkExternal {
-                                       ld.Elfemitreloc(ctxt)
-                               }
-                       }
-
-               case objabi.Hplan9:
+               if ctxt.IsPlan9() {
+                       symo := uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)
+                       ctxt.Out.SeekSet(int64(symo))
                        ld.Asmplan9sym(ctxt)
-
-               case objabi.Hwindows:
-                       // Do nothing
                }
        }
 
@@ -720,12 +693,6 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
        case objabi.Hplan9: /* plan 9 */
                ld.WritePlan9Header(ctxt.Out, 0x647, ld.Entryvalue(ctxt), false)
 
-       case objabi.Hlinux,
-               objabi.Hfreebsd,
-               objabi.Hnetbsd,
-               objabi.Hopenbsd:
-               ld.Asmbelf(ctxt, int64(symo))
-
        case objabi.Hwindows:
                ld.Asmbpe(ctxt)
        }
index b919e5e88e575a8c68c07328650a680dcf839ac1..9482a0a1938830b8df080fdec4d45d9c535d164b 100644 (file)
@@ -37,7 +37,6 @@ import (
        "cmd/link/internal/loader"
        "cmd/link/internal/sym"
        "debug/elf"
-       "fmt"
        "log"
 )
 
@@ -795,58 +794,3 @@ func addgotsym(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, s loade
                ldr.Errorf(s, "addgotsym: unsupported binary format")
        }
 }
-
-func asmb2(ctxt *ld.Link, _ *loader.Loader) {
-       if ctxt.IsDarwin() {
-               panic("darwin should be generic")
-       }
-
-       /* output symbol table */
-       ld.Symsize = 0
-
-       ld.Lcsize = 0
-       symo := uint32(0)
-       if !*ld.FlagS {
-               // TODO: rationalize
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                               symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
-                       }
-
-               }
-
-               ctxt.Out.SeekSet(int64(symo))
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               ld.Asmelfsym(ctxt)
-                               ctxt.Out.Write(ld.Elfstrdat)
-
-                               if ctxt.LinkMode == ld.LinkExternal {
-                                       ld.Elfemitreloc(ctxt)
-                               }
-                       }
-               }
-       }
-
-       ctxt.Out.SeekSet(0)
-       switch ctxt.HeadType {
-       default:
-       case objabi.Hlinux,
-               objabi.Hfreebsd,
-               objabi.Hnetbsd,
-               objabi.Hopenbsd:
-               ld.Asmbelf(ctxt, int64(symo))
-       }
-
-       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)
-               fmt.Printf("symsize=%d\n", ld.Symsize)
-               fmt.Printf("lcsize=%d\n", ld.Lcsize)
-               fmt.Printf("total=%d\n", ld.Segtext.Filelen+ld.Segdata.Length+uint64(ld.Symsize)+uint64(ld.Lcsize))
-       }
-}
index de6ab5832924f2c49f86155fe52327336025fe74..c092cf482683edfb30a325f6d0cceadfd475f3c9 100644 (file)
@@ -50,7 +50,6 @@ func Init() (*sys.Arch, ld.Arch) {
                Archinit:         archinit,
                Archreloc:        archreloc,
                Archrelocvariant: archrelocvariant,
-               Asmb2:            asmb2,
                Elfreloc1:        elfreloc1,
                Elfsetupplt:      elfsetupplt,
                Gentext:          gentext,
index 888d453d7bb77532aa6bd6e32233080ccceaabdf..eccd3e56fbd104a921fabe3207b9742418ba581f 100644 (file)
@@ -74,6 +74,7 @@ func asmb(ctxt *Link, ldr *loader.Loader) {
 //  - writing out the architecture specific pieces.
 // This function handles the second part.
 func asmb2(ctxt *Link) bool {
+       // TODO: Spsize is only used for plan9
        if ctxt.IsDarwin() {
                machlink := Domacholink(ctxt)
                Symsize = 0
@@ -88,6 +89,25 @@ func asmb2(ctxt *Link) bool {
                Asmbmacho(ctxt)
                return true
        }
+       if ctxt.IsElf() {
+               Symsize = 0
+               Spsize = 0
+               Lcsize = 0
+               var symo int64
+               if !*FlagS {
+                       symo = int64(Segdwarf.Fileoff + Segdwarf.Filelen)
+                       symo = Rnd(symo, int64(*FlagRound))
+                       ctxt.Out.SeekSet(symo)
+                       Asmelfsym(ctxt)
+                       ctxt.Out.Write(Elfstrdat)
+                       if ctxt.IsExternal() {
+                               Elfemitreloc(ctxt)
+                       }
+               }
+               ctxt.Out.SeekSet(0)
+               Asmbelf(ctxt, symo)
+               return true
+       }
        return false
 }
 
index c43b1e61ef6575aac0597587762ebc9dcaf92cbd..6f8d64df6d4b606cec5dcd4239e982db94c5c8fc 100644 (file)
@@ -37,7 +37,6 @@ import (
        "cmd/link/internal/loader"
        "cmd/link/internal/sym"
        "debug/elf"
-       "fmt"
 )
 
 func gentext(ctxt *ld.Link, ldr *loader.Loader) {
@@ -151,43 +150,3 @@ func archreloc(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, r loade
 func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc2, sym.RelocVariant, loader.Sym, int64) int64 {
        return -1
 }
-
-func asmb2(ctxt *ld.Link, _ *loader.Loader) {
-       /* output symbol table */
-       ld.Symsize = 0
-
-       ld.Lcsize = 0
-       symo := uint32(0)
-       if !*ld.FlagS {
-               if !ctxt.IsELF {
-                       ld.Errorf(nil, "unsupported executable format")
-               }
-               symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-               symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
-
-               ctxt.Out.SeekSet(int64(symo))
-               ld.Asmelfsym(ctxt)
-               ctxt.Out.Write(ld.Elfstrdat)
-
-               if ctxt.LinkMode == ld.LinkExternal {
-                       ld.Elfemitreloc(ctxt)
-               }
-       }
-
-       ctxt.Out.SeekSet(0)
-       switch ctxt.HeadType {
-       default:
-               ld.Errorf(nil, "unsupported operating system")
-       case objabi.Hlinux:
-               ld.Asmbelf(ctxt, int64(symo))
-       }
-
-       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)
-               fmt.Printf("symsize=%d\n", ld.Symsize)
-               fmt.Printf("lcsize=%d\n", ld.Lcsize)
-               fmt.Printf("total=%d\n", ld.Segtext.Filelen+ld.Segdata.Length+uint64(ld.Symsize)+uint64(ld.Lcsize))
-       }
-}
index eb0dbe62beb38f43ed8c33f745a8f16f6536eb3a..a80d4ed37bb7b858d35323c8909b0f37706e2760 100644 (file)
@@ -52,7 +52,6 @@ func Init() (*sys.Arch, ld.Arch) {
                Archinit:         archinit,
                Archreloc:        archreloc,
                Archrelocvariant: archrelocvariant,
-               Asmb2:            asmb2,
                Elfreloc1:        elfreloc1,
                Elfsetupplt:      elfsetupplt,
                Gentext:          gentext,
index 7719377e2f5da0e96f2f0b2892f67fd457086405..b9d7c277f777708b32fd3352b6762ada72fd7663 100644 (file)
@@ -37,7 +37,6 @@ import (
        "cmd/link/internal/loader"
        "cmd/link/internal/sym"
        "debug/elf"
-       "fmt"
 )
 
 func gentext(ctxt *ld.Link, ldr *loader.Loader) {}
@@ -157,53 +156,3 @@ func archreloc(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, r loade
 func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc2, sym.RelocVariant, loader.Sym, int64) int64 {
        return -1
 }
-
-func asmb2(ctxt *ld.Link, _ *loader.Loader) {
-       /* output symbol table */
-       ld.Symsize = 0
-
-       ld.Lcsize = 0
-       symo := uint32(0)
-       if !*ld.FlagS {
-               // TODO: rationalize
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                               symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
-                       }
-               }
-
-               ctxt.Out.SeekSet(int64(symo))
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               ld.Asmelfsym(ctxt)
-                               ctxt.Out.Write(ld.Elfstrdat)
-
-                               if ctxt.LinkMode == ld.LinkExternal {
-                                       ld.Elfemitreloc(ctxt)
-                               }
-                       }
-               }
-       }
-
-       ctxt.Out.SeekSet(0)
-       switch ctxt.HeadType {
-       default:
-       case objabi.Hlinux,
-               objabi.Hfreebsd,
-               objabi.Hnetbsd,
-               objabi.Hopenbsd:
-               ld.Asmbelf(ctxt, int64(symo))
-       }
-
-       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)
-               fmt.Printf("symsize=%d\n", ld.Symsize)
-               fmt.Printf("lcsize=%d\n", ld.Lcsize)
-               fmt.Printf("total=%d\n", ld.Segtext.Filelen+ld.Segdata.Length+uint64(ld.Symsize)+uint64(ld.Lcsize))
-       }
-}
index 90919ee7376231ed8d07507d4666b762a796d05e..bbc1e84b5f06915b7f8628452139c97a9a74eaa8 100644 (file)
@@ -51,7 +51,6 @@ func Init() (*sys.Arch, ld.Arch) {
                Archinit:         archinit,
                Archreloc:        archreloc,
                Archrelocvariant: archrelocvariant,
-               Asmb2:            asmb2,
                Elfreloc1:        elfreloc1,
                Elfsetupplt:      elfsetupplt,
                Gentext:          gentext,
index dd1b2b463cf35eb4f03ea351e85ab474dc1c95c4..317c3dd0fe9f0b056a58ac07022dc431f013cc6c 100644 (file)
@@ -1081,49 +1081,16 @@ func ensureglinkresolver(ctxt *ld.Link, ldr *loader.Loader) *loader.SymbolBuilde
 }
 
 func asmb2(ctxt *ld.Link, _ *loader.Loader) {
+       if ctxt.IsElf() {
+               panic("elf should be generic")
+       }
+
        /* output symbol table */
        ld.Symsize = 0
-
        ld.Lcsize = 0
-       symo := uint32(0)
-       if !*ld.FlagS {
-               // TODO: rationalize
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                               symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
-                       }
-
-               case objabi.Haix:
-                       // Nothing to do
-               }
-
-               ctxt.Out.SeekSet(int64(symo))
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               ld.Asmelfsym(ctxt)
-                               ctxt.Out.Write(ld.Elfstrdat)
-
-                               if ctxt.LinkMode == ld.LinkExternal {
-                                       ld.Elfemitreloc(ctxt)
-                               }
-                       }
-
-               case objabi.Haix:
-                       // symtab must be added once sections have been created in ld.Asmbxcoff
-               }
-       }
-
        ctxt.Out.SeekSet(0)
        switch ctxt.HeadType {
        default:
-       case objabi.Hlinux,
-               objabi.Hfreebsd,
-               objabi.Hnetbsd,
-               objabi.Hopenbsd:
-               ld.Asmbelf(ctxt, int64(symo))
 
        case objabi.Haix:
                fileoff := uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
index bc39c0630996cc5e6ca733c08639c691a7aa8530..7bc511c3744e1bf96ed1ae44f4d9be84f90f3505 100644 (file)
@@ -89,43 +89,3 @@ func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc2, sym.RelocVarian
        log.Fatalf("archrelocvariant")
        return -1
 }
-
-func asmb2(ctxt *ld.Link, _ *loader.Loader) {
-       ld.Symsize = 0
-       ld.Lcsize = 0
-       symo := uint32(0)
-
-       if !*ld.FlagS {
-               if !ctxt.IsELF {
-                       ld.Errorf(nil, "unsupported executable format")
-               }
-
-               symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-               symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
-               ctxt.Out.SeekSet(int64(symo))
-
-               ld.Asmelfsym(ctxt)
-               ctxt.Out.Write(ld.Elfstrdat)
-
-               if ctxt.LinkMode == ld.LinkExternal {
-                       ld.Elfemitreloc(ctxt)
-               }
-       }
-
-       ctxt.Out.SeekSet(0)
-       switch ctxt.HeadType {
-       case objabi.Hlinux:
-               ld.Asmbelf(ctxt, int64(symo))
-       default:
-               ld.Errorf(nil, "unsupported operating system")
-       }
-
-       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)
-               fmt.Printf("symsize=%d\n", ld.Symsize)
-               fmt.Printf("lcsize=%d\n", ld.Lcsize)
-               fmt.Printf("total=%d\n", ld.Segtext.Filelen+ld.Segdata.Length+uint64(ld.Symsize)+uint64(ld.Lcsize))
-       }
-}
index a0ff179d83311797455e500de483e6de488c9550..e66d3cd8565d2c04c135589867ea3017e2c12413 100644 (file)
@@ -23,7 +23,6 @@ func Init() (*sys.Arch, ld.Arch) {
                Archinit:         archinit,
                Archreloc:        archreloc,
                Archrelocvariant: archrelocvariant,
-               Asmb2:            asmb2,
                Elfreloc1:        elfreloc1,
                Elfsetupplt:      elfsetupplt,
                Gentext:          gentext,
index 7465212b9daf82f6e42b4ab81a0d0ca8bc122a8a..218519746073b641b3bfdbe7885ab53adaf102e4 100644 (file)
@@ -37,7 +37,6 @@ import (
        "cmd/link/internal/loader"
        "cmd/link/internal/sym"
        "debug/elf"
-       "fmt"
 )
 
 // gentext generates assembly to append the local moduledata to the global
@@ -475,43 +474,3 @@ func addgotsym(target *ld.Target, ldr *loader.Loader, syms *ld.ArchSyms, s loade
                ldr.Errorf(s, "addgotsym: unsupported binary format")
        }
 }
-
-func asmb2(ctxt *ld.Link, _ *loader.Loader) {
-       /* output symbol table */
-       ld.Symsize = 0
-
-       ld.Lcsize = 0
-       symo := uint32(0)
-       if !*ld.FlagS {
-               if !ctxt.IsELF {
-                       ld.Errorf(nil, "unsupported executable format")
-               }
-               symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-               symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
-
-               ctxt.Out.SeekSet(int64(symo))
-               ld.Asmelfsym(ctxt)
-               ctxt.Out.Write(ld.Elfstrdat)
-
-               if ctxt.LinkMode == ld.LinkExternal {
-                       ld.Elfemitreloc(ctxt)
-               }
-       }
-
-       ctxt.Out.SeekSet(0)
-       switch ctxt.HeadType {
-       default:
-               ld.Errorf(nil, "unsupported operating system")
-       case objabi.Hlinux:
-               ld.Asmbelf(ctxt, int64(symo))
-       }
-
-       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)
-               fmt.Printf("symsize=%d\n", ld.Symsize)
-               fmt.Printf("lcsize=%d\n", ld.Lcsize)
-               fmt.Printf("total=%d\n", ld.Segtext.Filelen+ld.Segdata.Length+uint64(ld.Symsize)+uint64(ld.Lcsize))
-       }
-}
index 28886804b773b336309f8405dbefebee0da36b26..5e4c86371da19b583ca6be6c715de3874cad3bfe 100644 (file)
@@ -50,7 +50,6 @@ func Init() (*sys.Arch, ld.Arch) {
                Archinit:         archinit,
                Archreloc:        archreloc,
                Archrelocvariant: archrelocvariant,
-               Asmb2:            asmb2,
                Elfreloc1:        elfreloc1,
                Elfsetupplt:      elfsetupplt,
                Gentext:          gentext,
index a3b40f5a063713bf05b36abcca647e0e7e8b18b0..dc5b56a2b96b2102a922988053d88e916cf0b0d8 100644 (file)
@@ -514,45 +514,18 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
        if ctxt.IsDarwin() {
                panic("darwin should be generic")
        }
+       if ctxt.IsElf() {
+               panic("elf should be generic")
+       }
 
        ld.Symsize = 0
        ld.Spsize = 0
        ld.Lcsize = 0
-       symo := uint32(0)
        if !*ld.FlagS {
-               // TODO: rationalize
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                               symo = uint32(ld.Rnd(int64(symo), int64(*ld.FlagRound)))
-                       }
-
-               case objabi.Hplan9:
-                       symo = uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)
-
-               case objabi.Hwindows:
-                       symo = uint32(ld.Segdwarf.Fileoff + ld.Segdwarf.Filelen)
-                       symo = uint32(ld.Rnd(int64(symo), ld.PEFILEALIGN))
-               }
-
-               ctxt.Out.SeekSet(int64(symo))
-               switch ctxt.HeadType {
-               default:
-                       if ctxt.IsELF {
-                               ld.Asmelfsym(ctxt)
-                               ctxt.Out.Write(ld.Elfstrdat)
-
-                               if ctxt.LinkMode == ld.LinkExternal {
-                                       ld.Elfemitreloc(ctxt)
-                               }
-                       }
-
-               case objabi.Hplan9:
+               if ctxt.HeadType == objabi.Hplan9 {
+                       symo := uint32(ld.Segdata.Fileoff + ld.Segdata.Filelen)
+                       ctxt.Out.SeekSet(int64(symo))
                        ld.Asmplan9sym(ctxt)
-
-               case objabi.Hwindows:
-                       // Do nothing
                }
        }
 
@@ -563,12 +536,6 @@ func asmb2(ctxt *ld.Link, _ *loader.Loader) {
                magic := uint32(4*11*11 + 7)
                ld.WritePlan9Header(ctxt.Out, magic, ld.Entryvalue(ctxt), false)
 
-       case objabi.Hlinux,
-               objabi.Hfreebsd,
-               objabi.Hnetbsd,
-               objabi.Hopenbsd:
-               ld.Asmbelf(ctxt, int64(symo))
-
        case objabi.Hwindows:
                ld.Asmbpe(ctxt)
        }