]> Cypherpunks repositories - gostls13.git/commit
cmd/go: add support for build IDs with gccgo
authorIan Lance Taylor <iant@golang.org>
Wed, 27 Dec 2017 22:07:01 +0000 (14:07 -0800)
committerIan Lance Taylor <iant@golang.org>
Fri, 5 Jan 2018 22:41:35 +0000 (22:41 +0000)
commitfc408b620a1488323d8ac456a18685888541ac2d
tree9503238caeedfacabf676fd288090dd78a9bb139
parent65fa53183b3978085e20e3f5794e88ae8c2671c1
cmd/go: add support for build IDs with gccgo

This just adds support on ELF systems, which is OK for now since that
is all that gccgo works on.

For the archive file generated by the compiler we add a new file
_buildid.o that has a section .go.buildid containing the build ID.
Using a new file lets us set the SHF_EXCLUDE bit in the section header,
so the linker will discard the section. It would be nicer to use
`objcopy --add-section`, but objcopy doesn't support setting the
SHF_EXCLUDE bit.

For an executable we just use an ordinary GNU build ID. Doing this
required modifying cmd/internal/buildid to look for a GNU build ID,
and use it if there is no other Go-specific note.

This CL fixes a minor bug in gccgoTOolchain.link: it was using .Target
instead of .built, so it failed for a cached file.

This CL fixes a bug reading note segments: the notes are aligned as
reported by the PT_NOTE's alignment field.

Updates #22472

Change-Id: I4d9e9978ef060bafc5b9574d9af16d97c13f3102
Reviewed-on: https://go-review.googlesource.com/85555
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/go/internal/work/buildid.go
src/cmd/go/internal/work/exec.go
src/cmd/go/internal/work/gccgo.go
src/cmd/internal/buildid/buildid.go
src/cmd/internal/buildid/note.go