https://sourceware.org/bugzilla/show_bug.cgi?id=27210

--- Comment #2 from Fangrui Song <i at maskray dot me> ---
(In reply to H.J. Lu from comment #1)
> (In reply to Fangrui Song from comment #0)
> > cat > a.s <<eof
> > .globl foo
> > .symver foo, foo@v1
> > foo: nop
> > eof
> > echo 'v1 {};' > a.ver
> > cat > b.s <<eof
> > .globl  foo_v1
> > foo_v1: nop
> > .symver foo_v1, foo@v1
> > eof
> > 
> > exit
> > 
> > 
> > GNU ld has a special rule removing foo if foo@v1 is defined. gold and LLD
> 
> This is done on purpose. A single '@' defines a 'hidden' versioned symbol,
> which is intended for dynamic linker and shouldn't be used by ld to satisfy
> the unversioned reference.  ld behavior is correct.

I disagree. This interpretation does not explain why foo_v1 is not suppressed.

The special rule for foo should just be dropped.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Reply via email to