Fix internal error caused by IFUNC patch.
authorCary Coutant <ccoutant@gmail.com>
Mon, 7 Sep 2015 16:44:11 +0000 (09:44 -0700)
committerCary Coutant <ccoutant@gmail.com>
Mon, 7 Sep 2015 16:44:11 +0000 (09:44 -0700)
commit3d4fde6974a1237d79055ee734d99cc49c6fd3f9
tree5f796d0f0233bad52c8d48118f310973c0648364
parentb31103ae77d36254fa0b237a87f03fbd4079da87
Fix internal error caused by IFUNC patch.

The previous commit to fix PR gold/18886 converted STT_IFUNC
to STT_FUNC when resolving to a symbol defined in a shared library.
This leads to an internal error if the shared library symbol is
seen first, as we do not convert the symbol at all.

We need to override the STT_IFUNC in add_from_dynobj() instead of
in override_base().

gold/
PR gold/18930
PR gold/18886
* resolve.cc (Symbol::override_base): Don't convert IFUNC symbols here.
* symtab.cc (Symbol_table::add_from_dynobj): Convert them here instead.
gold/ChangeLog
gold/resolve.cc
gold/symtab.cc