libctf: try several possibilities for linker versioning flags

Checking for linker versioning by just grepping ld --help output for
mentions of --version-script is inadequate now that Solaris 11.4
implements a --version-script with different semantics.  Try linking a
test program with a small wildcard-using version script with each
supported set of flags in turn, to make sure that linker versioning is
not only advertised but actually works.

The Solaris "GNU-compatible" linker versioning is not quite
GNU-compatible enough, but we can work around the differences by
generating a new version script that removes the comments from the
original (Solaris ld requires #-style comments), and making another
version script for libctf-nonbfd in particular which doesn't mention any
of the symbols that appear in libctf.la, to avoid Solaris ld introducing
corresponding new NOTYPE symbols to match the version script.

libctf/ChangeLog
2021-09-27  Nick Alcock  <nick.alcock@oracle.com>

	PR libctf/27967
	* configure.ac (VERSION_FLAGS): Replace with...
	(ac_cv_libctf_version_script): ... this multiple test.
	(VERSION_FLAGS_NOBFD): Substitute this too.
	* Makefile.am (libctf_nobfd_la_LDFLAGS): Use it.  Split out...
	(libctf_ldflags_nover): ... non-versioning flags here.
	(libctf_la_LDFLAGS): Use it.
	* libctf.ver: Give every symbol not in libctf-nobfd a comment on
	the same line noting as much.
This commit is contained in:
Nick Alcock 2021-09-27 20:31:21 +01:00
parent bef9ef8ca0
commit ea9c200911
4 changed files with 62 additions and 11 deletions

View file

@ -165,12 +165,10 @@ LIBCTF_1.0 {
ctf_link_shuffle_syms;
ctf_link_write;
/* In libctf alone. */
ctf_fdopen;
ctf_open;
ctf_bfdopen;
ctf_bfdopen_ctfsect;
ctf_fdopen; /* libctf only. */
ctf_open; /* libctf only. */
ctf_bfdopen; /* libctf only. */
ctf_bfdopen_ctfsect; /* libctf only. */
local:
*;
};