mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/internal/goobj2: add referenced symbol names to object file
Currently, for symbols defined in other packages and referenced by index, we don't record its name in the object file, as the linker doesn't need the name, only the index. As a consequence, tools like objdump and nm also don't know the referenced symbol names and cannot dump it properly. This CL adds referenced symbol names to the object file. So the object file is self-contained. And tools can retrieve referenced symbol names properly. Tools now should work as good for new object files as for old object files. Fixes #38875. Change-Id: I16c685c1fd83273ab1faef474e19acf4af46396f Reviewed-on: https://go-review.googlesource.com/c/go/+/236168 Reviewed-by: Austin Clements <austin@google.com> Reviewed-by: Jeremy Faller <jeremy@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
b7717e4634
commit
73dd74a9fe
4 changed files with 101 additions and 5 deletions
|
|
@ -1914,7 +1914,7 @@ func (l *Loader) FuncInfo(i Sym) FuncInfo {
|
|||
// Does not read symbol data.
|
||||
// Returns the fingerprint of the object.
|
||||
func (l *Loader) Preload(syms *sym.Symbols, f *bio.Reader, lib *sym.Library, unit *sym.CompilationUnit, length int64) goobj2.FingerprintType {
|
||||
roObject, readonly, err := f.Slice(uint64(length))
|
||||
roObject, readonly, err := f.Slice(uint64(length)) // TODO: no need to map blocks that are for tools only (e.g. RefName)
|
||||
if err != nil {
|
||||
log.Fatal("cannot read object file:", err)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue