On 22/09/20 09:40 +0000, JonY via Libstdc++ wrote:
On 9/22/20 8:50 AM, Jonathan Wakely wrote:

I don't see a patch, or any previous email to the libstdc++ list.

Please resend with the patch, CCing libstdc++@

Thanks.




Resent for the record.

Thanks.

I've been told it might not be appropriate
because some targets cannot link yet and therefore will fail incorrectly.


We only use the GLIBCXX_CHECK_LINKER_FEATURES macro for native builds,
or for specific cross targets.  And we already do AC_TRY_LINK just
before the relro check, so I think it's probably OK. But I admit to
not fully understanding this.


Currently, the linker support is misdetected since binutils can support
multiple targets. MinGW/Cygwin PE formats don't support such a flag.

From: Jonathan Yong <10wa...@gmail.com>
Date: Sun, 22 Mar 2020 01:59:37 +0000 (+0800)
Subject: libstdc++: use a link test to test for -Wl,-z,relro
X-Git-Url: 
https://repo.or.cz/gcc/cygwin-gcc.git/commitdiff_plain/1b20e03e7468760828bfc70fc5e811b5b3738adf

libstdc++: use a link test to test for -Wl,-z,relro

Do a link test instead of just a grep. The linker can
support multiple targets, but not all targets can use it.

Signed-off-by: Jonathan Yong <10wa...@gmail.com>
---

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index bc7d137dc74..209aa3a91f3 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -274,7 +274,16 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
  ac_ld_relro=no
  if test x"$with_gnu_ld" = x"yes"; then
    AC_MSG_CHECKING([for ld that supports -Wl,-z,relro])
-    cxx_z_relo=`$LD -v --help 2>/dev/null | grep "z relro"`
+    ac_save_ldflags="$LDFLAGS"
+    LDFLAGS="$LDFLAGS -Wl,-z,relro"
+    AC_LINK_IFELSE([
+      AC_LANG_SOURCE(
+        [[int main() { return 0; }]]
+      )],
+      [cxx_z_relo="1"],
+      [cxx_z_relo=""])
+   LDFLAGS="$ac_save_ldflags"
+
    if test -n "$cxx_z_relo"; then
      OPT_LDFLAGS="-Wl,-z,relro"
      ac_ld_relro=yes




Reply via email to