• Keith Randall's avatar
    cmd/link/internal/ld: exclude only real container symbols from symtab · 214c7a2c
    Keith Randall authored
    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/11652Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    214c7a2c
link.go 13.9 KB