]> Cypherpunks repositories - gostls13.git/commit
cmd/link/internal/ld: exclude only real container symbols from symtab
authorKeith Randall <khr@golang.org>
Sat, 27 Jun 2015 19:57:06 +0000 (12:57 -0700)
committerKeith Randall <khr@golang.org>
Mon, 29 Jun 2015 02:54:09 +0000 (02:54 +0000)
commit214c7a2c43a43fd05e3b94dbc67e7d0082460986
treee97b5b29656a5fd209cae86ad6d5498862f32a43
parent0a6df4a87b8333e1029c1940c84e39fad66352fa
cmd/link/internal/ld: exclude only real container symbols from symtab

It looks like the test for whether symbols contain subsymbols is wrong.
In particular, symbols in C libraries are mistakenly considered container
symbols.

Fix the test so only symbols which actually have a subsymbol
are excluded from the symtab.  When linking cgo programs the list
of containers is small, something like:

container _/home/khr/sandbox/symtab/misc/cgo/test(.text)<74>
container _/home/khr/sandbox/symtab/misc/cgo/test/issue8828(.text)<75>
container _/home/khr/sandbox/symtab/misc/cgo/test/issue9026(.text)<76>
container runtime/cgo(.text)<77>

I'm not sure this is the right fix.  In particular I can't reproduce
the original problem.  Anyone have a repro they can try and see if
this fix works?

Fixes #10747
Fixes #11396

Change-Id: Id8b016389d33348b4a791fdcba0f9db8ae71ebf3
Reviewed-on: https://go-review.googlesource.com/11652
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/internal/obj/link.go
src/cmd/link/internal/ld/pcln.go