diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2024-04-17 19:06:17 +0100 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2024-04-19 16:14:48 +0100 |
commit | edc27e2d90a2af3afddd68e7a534afcc428719e5 (patch) | |
tree | a73199add56dd75a88d30317f24f109b41c9b16a /gdb/target-debug.h | |
parent | d8e1bca7ebc357ebd9b7a338a53d2767cf0564b6 (diff) | |
download | binutils-edc27e2d90a2af3afddd68e7a534afcc428719e5.zip binutils-edc27e2d90a2af3afddd68e7a534afcc428719e5.tar.gz binutils-edc27e2d90a2af3afddd68e7a534afcc428719e5.tar.bz2 |
libctf: do not include undefined functions in libctf.ver
libctf's version script is applied to two libraries: libctf.so,
and libctf-nobfd.so. The latter library is a subset of the former
which does not link to libbfd and does not include a few public
entry points that use it (found in libctf-open-bfd.c). This means
that some of the symbols in this version script only exist in one
of the libraries it's applied to.
A number of linkers dislike this: before now, only Solaris's linker
caused serious problems, introducing NOTYPE-typed symbols when such
things were found, but now LLD has started to complain as well:
ld: error: version script assignment of 'LIBCTF_1.0' to symbol 'ctf_arc_open' failed: symbol not defined
ld: error: version script assignment of 'LIBCTF_1.0' to symbol 'ctf_fdopen' failed: symbol not defined
ld: error: version script assignment of 'LIBCTF_1.0' to symbol 'ctf_open' failed: symbol not defined
ld: error: version script assignment of 'LIBCTF_1.0' to symbol 'ctf_bfdopen' failed: symbol not defined
ld: error: version script assignment of 'LIBCTF_1.0' to symbol 'ctf_bfdopen_ctfsect' failed: symbol not defined
Rather than adding more and more whack-a-mole fixes for every
linker we encounter that does this, simply exclude such symbols
unconditionally, using the same trick we used to use for Solaris.
(Well, unconditionally if we can use version scripts with this
linker at all, which is not always the case.)
Thanks to Nicholas Vinson for the original report and a fix very
similar to this one (but not quite identical).
libctf/
* configure.ac: Always exclude libctf symbols from
libctf-nobfd's version script.
* configure: Regenerated.
Diffstat (limited to 'gdb/target-debug.h')
0 files changed, 0 insertions, 0 deletions