diff options
| author | H.J. Lu <hjl.tools@gmail.com> | 2024-12-20 04:32:49 +0800 |
|---|---|---|
| committer | H.J. Lu <hjl.tools@gmail.com> | 2024-12-22 17:20:15 +0800 |
| commit | 8d25b9f2c82d45def99e3c7538dcd87c909aae8b (patch) | |
| tree | 549443cb82a2d2bc3ef84b3aab10c2cdbad7e26d /configure.ac | |
| parent | bce70034b1122d504c9fb794684f3ec288d955e6 (diff) | |
elf: Enable tst-dlopen-nodelete-reloc if TEST_CXX supports STB_GNU_UNIQUE
tst-dlopen-nodelete-reloc requires STB_GNU_UNIQUE support so that NODELETE
is propagated by do_lookup_unique. Enable it only if TEST_CXX supports
STB_GNU_UNIQUE,
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'configure.ac')
| -rw-r--r-- | configure.ac | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index d230635a71..829f4be0ec 100644 --- a/configure.ac +++ b/configure.ac @@ -1599,6 +1599,40 @@ LIBC_TRY_TEST_CXX_OPTION([-finput-charset=ascii], LIBC_CONFIG_VAR(test-config-cxxflags-finput-charset-ascii, $libc_cv_test_cxxflags_finput_charset_ascii) +conftest_code=" +extern int not_exist (void); + +inline int make_unique (void) +{ + /* Static variables in inline functions and classes + generate STB_GNU_UNIQUE symbols. */ + static int unique; + return ++unique; +} + +int foo (void) +{ + return make_unique () + not_exist (); +} +" + +dnl Check if TEST_CXX supports STB_GNU_UNIQUE. +LIBC_TRY_TEST_CXX_COMMAND([for STB_GNU_UNIQUE], + [$conftest_code], + [-c], + libc_cv_test_stb_gnu_unique, + [ +if LC_ALL=C $READELF -sW conftest \ + | grep -q "UNIQUE.* _ZZ11make_uniquevE6unique"; then + libc_cv_test_stb_gnu_unique=yes +else + libc_cv_test_stb_gnu_unique=no +fi + ], + [libc_cv_test_stb_gnu_unique=no], +) +LIBC_CONFIG_VAR([have-test-stb-gnu-unique], [$libc_cv_test_stb_gnu_unique]) + dnl Check whether we have the gd library available. AC_MSG_CHECKING(for libgd) if test "$with_gd" != "no"; then |
