mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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>
This commit is contained in:
parent
0a6df4a87b
commit
214c7a2c43
2 changed files with 12 additions and 4 deletions
|
|
@ -365,9 +365,10 @@ const (
|
|||
SCONST
|
||||
SDYNIMPORT
|
||||
SHOSTOBJ
|
||||
SSUB = 1 << 8
|
||||
SMASK = SSUB - 1
|
||||
SHIDDEN = 1 << 9
|
||||
SSUB = 1 << 8
|
||||
SMASK = SSUB - 1
|
||||
SHIDDEN = 1 << 9
|
||||
SCONTAINER = 1 << 10 // has a sub-symbol
|
||||
)
|
||||
|
||||
type Reloc struct {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue