Bug#540060: version script commands not handled correctly in sid/squeeze
severity 540751 normal
tag 540751 + wontfix
the proposed solution is to avoid the two global wildcard matches.
The linker script shown has two global wildcard matches. As the ld info doc
says, this is slightly crazy. They both match "test_new", so which one should
ld choose? The most specific match? How do you do that in general? eg. is
"tes*" a better match than "*new" for "test_new"? (If we make a special case
for "*", why stop there?)
From section 3.9, ld info manual:
When the linker finds a symbol defined in a library which is not
specifically bound to a version node, it will effectively bind it to an
unspecified base version of the library. You can bind all otherwise
unspecified symbols to a given version node by using `global: *;'
somewhere in the version script. Note that it's slightly crazy to use
wildcards in a global spec except on the last version node. Global
wildcards elsewhere run the risk of accidentally adding symbols to the
set exported for an old version. That's wrong since older versions
ought to have a fixed set of symbols.