diff options
-rw-r--r-- | acinclude.m4 | 19 | ||||
-rw-r--r-- | configure.in | 6 |
2 files changed, 24 insertions, 1 deletions
diff --git a/acinclude.m4 b/acinclude.m4 index 345e323b3..3e1dbeb2a 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,3 +1,5 @@ +dnl -*- Autoconf -*- + dnl On the NeXT, #including <utime.h> doesn't give you a definition for dnl struct utime, unless you #define _POSIX_SOURCE. @@ -308,3 +310,20 @@ else fi AC_LANG_RESTORE ])dnl ACX_PTHREAD + + +dnl Check whether GNU ld's read-only relocations (the `PT_GNU_RELRO' +dnl ELF segment header) are supported. This allows things like +dnl statically allocated cells (1) to eventually be remapped read-only +dnl by the loader, and (2) to be identified as pointerless by the +dnl garbage collector. +AC_DEFUN([GUILE_GNU_LD_RELRO], [ + AC_MSG_CHECKING([whether the linker understands `-z relro']) + + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,-z -Wl,relro" + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + LDFLAGS="$save_LDFLAGS"]) +]) diff --git a/configure.in b/configure.in index 3c54bbdcd..c278361b6 100644 --- a/configure.in +++ b/configure.in @@ -4,7 +4,7 @@ dnl define(GUILE_CONFIGURE_COPYRIGHT,[[ -Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GUILE @@ -1448,6 +1448,10 @@ esac AC_SUBST(GCC_CFLAGS) +# Check for GNU ld's "-z relro". +GUILE_GNU_LD_RELRO + + ## If we're creating a shared library (using libtool!), then we'll ## need to generate a list of .lo files corresponding to the .o files ## given in LIBOBJS. We'll call it LIBLOBJS. |