]> Cypherpunks repositories - gostls13.git/commitdiff
embed: document the maximum file size supported
authorkorzhao <korzhao95@gmail.com>
Thu, 12 Aug 2021 15:39:29 +0000 (23:39 +0800)
committerJay Conrod <jayconrod@google.com>
Tue, 24 Aug 2021 15:55:38 +0000 (15:55 +0000)
Fixes #47627

Change-Id: Ia1edfb6249863ab055fab68a35666bc2bdf21dcb
Reviewed-on: https://go-review.googlesource.com/c/go/+/341689
Reviewed-by: Jay Conrod <jayconrod@google.com>
Trust: Michael Matloob <matloob@golang.org>

src/cmd/compile/internal/staticdata/data.go

index abb0bba646e0caacf183e436cc084784b5907250..f25d8d8ec541f8a68aea5a513e4ae222397549fa 100644 (file)
@@ -92,6 +92,10 @@ func StringSym(pos src.XPos, s string) (data *obj.LSym) {
        return symdata
 }
 
+// maxFileSize is the maximum file size permitted by the linker
+// (see issue #9862).
+const maxFileSize = int64(2e9)
+
 // fileStringSym returns a symbol for the contents and the size of file.
 // If readonly is true, the symbol shares storage with any literal string
 // or other file with the same content and is placed in a read-only section.
@@ -133,12 +137,12 @@ func fileStringSym(pos src.XPos, file string, readonly bool, hash []byte) (*obj.
                }
                return sym, size, nil
        }
-       if size > 2e9 {
+       if size > maxFileSize {
                // ggloblsym takes an int32,
                // and probably the rest of the toolchain
                // can't handle such big symbols either.
                // See golang.org/issue/9862.
-               return nil, 0, fmt.Errorf("file too large")
+               return nil, 0, fmt.Errorf("file too large (%d bytes > %d bytes)", size, maxFileSize)
        }
 
        // File is too big to read and keep in memory.