]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link: remove safe mode
authorCherry Zhang <cherryyz@google.com>
Mon, 1 Jun 2020 16:55:40 +0000 (12:55 -0400)
committerCherry Zhang <cherryyz@google.com>
Thu, 4 Jun 2020 16:05:56 +0000 (16:05 +0000)
Safe mode in the compiler is removed in CL 142717 in Go 1.12. I
think we can delete safe mode from the linker as well.

Change-Id: I201e84fca3a566a1bb84434ab4d504516160ac4e
Reviewed-on: https://go-review.googlesource.com/c/go/+/236117
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/internal/ld/go.go
src/cmd/link/internal/ld/lib.go
src/cmd/link/internal/ld/main.go
src/cmd/link/internal/sym/library.go

index 2131c039e5ed43de9931cd9e7d55296740b5a227..6d05c59b812ca5ae2abbe136543b6a2d61addd38 100644 (file)
@@ -39,18 +39,12 @@ func ldpkg(ctxt *Link, f *bio.Reader, lib *sym.Library, length int64, filename s
 
        if int64(int(length)) != length {
                fmt.Fprintf(os.Stderr, "%s: too much pkg data in %s\n", os.Args[0], filename)
-               if *flagU {
-                       errorexit()
-               }
                return
        }
 
        bdata := make([]byte, length)
        if _, err := io.ReadFull(f, bdata); err != nil {
                fmt.Fprintf(os.Stderr, "%s: short pkg read %s\n", os.Args[0], filename)
-               if *flagU {
-                       errorexit()
-               }
                return
        }
        data := string(bdata)
@@ -63,9 +57,6 @@ func ldpkg(ctxt *Link, f *bio.Reader, lib *sym.Library, length int64, filename s
                } else {
                        line, data = data, ""
                }
-               if line == "safe" {
-                       lib.Safe = true
-               }
                if line == "main" {
                        lib.Main = true
                }
@@ -82,9 +73,6 @@ func ldpkg(ctxt *Link, f *bio.Reader, lib *sym.Library, length int64, filename s
                i := strings.IndexByte(data[p0+1:], '\n')
                if i < 0 {
                        fmt.Fprintf(os.Stderr, "%s: found $$ // cgo but no newline in %s\n", os.Args[0], filename)
-                       if *flagU {
-                               errorexit()
-                       }
                        return
                }
                p0 += 1 + i
@@ -95,9 +83,6 @@ func ldpkg(ctxt *Link, f *bio.Reader, lib *sym.Library, length int64, filename s
                }
                if p1 < 0 {
                        fmt.Fprintf(os.Stderr, "%s: cannot find end of // cgo section in %s\n", os.Args[0], filename)
-                       if *flagU {
-                               errorexit()
-                       }
                        return
                }
                p1 += p0
index c4f3e0aedb621801f7d2c3df88e9eabd13fba30e..93524f0955936bde521088e8017e00c6e740ffe4 100644 (file)
@@ -995,21 +995,6 @@ func loadobjfile(ctxt *Link, lib *sym.Library) {
                if pkg == "main" && !lib.Main {
                        Exitf("%s: not package main", lib.File)
                }
-
-               // Ideally, we'd check that *all* object files within
-               // the archive were marked safe, but here we settle
-               // for *any*.
-               //
-               // Historically, cmd/link only checked the __.PKGDEF
-               // file, which in turn came from the first object
-               // file, typically produced by cmd/compile. The
-               // remaining object files are normally produced by
-               // cmd/asm, which doesn't support marking files as
-               // safe anyway. So at least in practice, this matches
-               // how safe mode has always worked.
-               if *flagU && !lib.Safe {
-                       Exitf("%s: load of unsafe package %s", lib.File, pkg)
-               }
        }()
 
        for i := 0; i < len(ARMAG); i++ {
index 1c9f33d68febd19e6a0c7f26cacd6cf39b01f171..3404ba766a66a4cf9de649365d0711fe30043f24 100644 (file)
@@ -82,7 +82,6 @@ var (
        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")
index 915510fb04942fd258b5dce1673e163829e04ec3..18e1380a68d490372e1919ed76d4c1dab16e693b 100644 (file)
@@ -17,7 +17,6 @@ type Library struct {
        Autolib     []goobj2.ImportedPkg
        Imports     []*Library
        Main        bool
-       Safe        bool
        Units       []*CompilationUnit
 
        Textp       []LoaderSym // text syms defined in this library