1
0
mirror of https://github.com/golang/go synced 2024-09-29 16:24:28 -06:00

embed: document the maximum file size supported

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>
This commit is contained in:
korzhao 2021-08-12 23:39:29 +08:00 committed by Jay Conrod
parent f98b6111eb
commit d70c69d830

View File

@ -92,6 +92,10 @@ func StringSym(pos src.XPos, s string) (data *obj.LSym) {
return symdata 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. // fileStringSym returns a symbol for the contents and the size of file.
// If readonly is true, the symbol shares storage with any literal string // 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. // 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 return sym, size, nil
} }
if size > 2e9 { if size > maxFileSize {
// ggloblsym takes an int32, // ggloblsym takes an int32,
// and probably the rest of the toolchain // and probably the rest of the toolchain
// can't handle such big symbols either. // can't handle such big symbols either.
// See golang.org/issue/9862. // 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. // File is too big to read and keep in memory.