Fix --no-as-needed when shared library is listed twice on the command line.
authorCary Coutant <ccoutant@gmail.com>
Fri, 21 Aug 2015 19:32:33 +0000 (12:32 -0700)
committerCary Coutant <ccoutant@gmail.com>
Wed, 26 Aug 2015 01:39:20 +0000 (18:39 -0700)
commit4bfacfd359a1f8d026d1a350f56f2f5d70b6cb65
treedaed2bfd37f874c2e75cf0d43c961d36180531bf
parent1757d35c8a35d77fd631705589024456c6030966
Fix --no-as-needed when shared library is listed twice on the command line.

When a shared library is listed twice on the command line, the linker
ignores the second mention. If the first mention is in the scope of
an --as-needed option, and the second one is under the scope of a
--no-as-needed option, the --no-as-needed should take effect, but
doesn't.  This patch keeps track of the objects we've already seen,
and updates the --as-needed flag so that if a shared object is ever
seen with --no-as-needed, it will be marked as such.

gold/
PR gold/18859
* object.cc (Input_objects::add_object): Store objects in a map,
indexed by soname; update as-needed flag when necessary.
* object.h (Object::clear_as_needed): New method.
(Input_objects::so_names_): Change from set to map.
gold/ChangeLog
gold/object.cc
gold/object.h