Open
Description
With gccgo,
$ go version
go version go1.10.3 gccgo (GCC) 9.0.0 20180622 (experimental) linux/amd64
$ gccgo --version
gccgo (GCC) 9.0.0 20180622 (experimental)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ go build -gccgoflags="-static-libgo" hello.go
$ objdump -h hello
hello: file format elf64-x86-64
Sections:
Idx Name Size VMA LMA File off Algn
...
31 .go_export 000363b8 0000000000000000 0000000000000000 002b460b 2**0
CONTENTS, READONLY
...
Dumping out the .go_export section, it looks like indeed export data. I think it is not needed at run time. It probably should not be linked into the binary.
-static-libgo
is just for demonstration. The export data also present in the default dynamically linked binary, or completely -static
binary, though the size varies.
With some big binaries, like kubernetes, the export data can be quite big (over 40% of the binary size).