aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2020-08-07 18:00:00 +0000
committerDmitry V. Levin <ldv@altlinux.org>2020-08-07 18:00:00 +0000
commitd5cb4409ab6b04a6ed7c00245e2c9a430f352b16 (patch)
tree8a702b9b589b6b1f0f9a984b1e972cb28cfe6ca1
parent82906480da407a48391ff4406b96a62261128c97 (diff)
downloadpam-d5cb4409ab6b04a6ed7c00245e2c9a430f352b16.tar.gz
pam-d5cb4409ab6b04a6ed7c00245e2c9a430f352b16.tar.bz2
pam-d5cb4409ab6b04a6ed7c00245e2c9a430f352b16.zip
Build all installed executables with -Wl,-z,now if available
This makes them built with full RELRO if -Wl,-z,relro is specified. * m4/ld-z-now.m4: New file. * m4/.gitignore: Add it to exclude list. * configure.ac: Call PAM_LD_Z_NOW. (EXE_LDFLAGS): Append $ZNOW_LDFLAGS.
-rw-r--r--configure.ac3
-rw-r--r--m4/.gitignore1
-rw-r--r--m4/ld-z-now.m416
3 files changed, 19 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 36f2cbe1..40c1c557 100644
--- a/configure.ac
+++ b/configure.ac
@@ -75,6 +75,7 @@ AM_PROG_CC_C_O
PAM_LD_AS_NEEDED
PAM_LD_NO_UNDEFINED
PAM_LD_O1
+PAM_LD_Z_NOW
dnl Largefile support
AC_SYS_LARGEFILE
@@ -209,7 +210,7 @@ AS_IF([test "$enable_pie" = yes],
PIE_LDFLAGS=])
EXE_CFLAGS="$PIE_CFLAGS"
-EXE_LDFLAGS="$PIE_LDFLAGS"
+EXE_LDFLAGS="$PIE_LDFLAGS $ZNOW_LDFLAGS"
AC_SUBST(EXE_CFLAGS)
AC_SUBST(EXE_LDFLAGS)
diff --git a/m4/.gitignore b/m4/.gitignore
index 6937d745..c78f8072 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -3,6 +3,7 @@
!jh_path_xml_catalog.m4
!ld-as-needed.m4
!ld-no-undefined.m4
+!ld-z-now.m4
!ld-O1.m4
!libprelude.m4
!warnings.m4
diff --git a/m4/ld-z-now.m4 b/m4/ld-z-now.m4
new file mode 100644
index 00000000..1bc82594
--- /dev/null
+++ b/m4/ld-z-now.m4
@@ -0,0 +1,16 @@
+#!/usr/bin/m4
+dnl Check whether ld supports "-z now"
+
+AC_DEFUN([PAM_LD_Z_NOW], [dnl
+ AC_CACHE_CHECK([whether ld supports "-z now"],
+ [pam_cv_ld_z_now],
+ [saved_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -Wl,-z,now"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
+ [pam_cv_ld_z_now=yes],
+ [pam_cv_ld_z_now=no])
+ LDFLAGS="$saved_LDFLAGS"])
+ AS_IF([test $pam_cv_ld_z_now = yes],
+ [ZNOW_LDFLAGS="-Wl,-z,now"],
+ [ZNOW_LDFLAGS=])
+])