[PATCH] as: Replace the removed symbol with the versioned symbol

Fangrui Song i@maskray.me
Tue Aug 10 21:56:05 GMT 2021


On 2021-08-01, H.J. Lu via Binutils wrote:
>When a symbol removed by .symver is used in relocation and there is one
>and only one versioned symbol, don't remove the symbol.  Instead, mark
>it to be removed and replace the removed symbol used in relocation with
>the versioned symbol before generating relocation.

Thanks for the patch.
The behavior looks good.

.symver foo, foo@v1, remove
.globl foo
foo:
   call foo   # R_X86_64_PLT32 foo@v1



I think this can be extended to non-remove one-@ as well.
The unadorned symbol and relocations referencing it just add complexity
to linker internals.

.symver foo, foo@v1


More information about the Binutils mailing list