diff options
author | Sverker Eriksson <sverker@erlang.org> | 2019-08-21 19:12:19 +0200 |
---|---|---|
committer | Sverker Eriksson <sverker@erlang.org> | 2020-02-18 19:11:30 +0100 |
commit | ad73bc04ae5384d06c0b0843281732cae5dc634e (patch) | |
tree | fa808c6a18af51fea15997d9f5ca42a2774d73b1 | |
parent | b613c4e0c6f065b253c2c31d7837c06d5594b623 (diff) | |
download | erlang-ad73bc04ae5384d06c0b0843281732cae5dc634e.tar.gz |
Add configure options --enable-pie and --disable-pie
-rw-r--r-- | HOWTO/INSTALL.md | 1 | ||||
-rw-r--r-- | configure.src | 16 | ||||
-rw-r--r-- | erts/aclocal.m4 | 2 | ||||
-rw-r--r-- | lib/erl_interface/configure.in | 4 | ||||
-rw-r--r-- | make/configure.in | 4 |
5 files changed, 24 insertions, 3 deletions
diff --git a/HOWTO/INSTALL.md b/HOWTO/INSTALL.md index 674454bc8e..0c7de9d4e6 100644 --- a/HOWTO/INSTALL.md +++ b/HOWTO/INSTALL.md @@ -353,6 +353,7 @@ Some of the available `configure` options are: `(g)cc` * `--enable-m32-build` - Build 32-bit binaries using the `-m32` flag to `(g)cc` +* `--{enable,disable}-pie` - Build position independent executable binaries. * `--with-assumed-cache-line-size=SIZE` - Set assumed cache-line size in bytes. Default is 64. Valid values are powers of two between and including 16 and 8192. The runtime system use this value in order to diff --git a/configure.src b/configure.src index 4b748f2545..ff39a58aa9 100644 --- a/configure.src +++ b/configure.src @@ -37,6 +37,8 @@ unset CDPATH default_cflags="-g -O2" +pie_cflags= +pie_ldflags= mXY_build= static_cache= @@ -125,6 +127,14 @@ while test $# != 0; do if test "$mXY_build" = "-m32"; then mXY_build= fi;; + --enable-pie) + pie_cflags="-fPIE" + pie_ldflags="-pie" + ;; + --disable-pie) + pie_cflags="-fno-PIE" + pie_ldflags="-no-pie" + ;; CFLAGS=* | LDFLAGS=*) flgs_var=`expr "$1" : '\([^=]*\)=.*'` flgs_val=`expr "$1" : '[^=]*=\(.*\)'` @@ -263,7 +273,7 @@ case "$help" in exit 0;; esac -if test "$mXY_build" = ""; then +if test "$mXY_build" = "" && test "$pie_cflags" = ""; then if test "$CFLAGS" != ""; then config_arguments="$config_arguments CFLAGS='$CFLAGS'" unset CFLAGS @@ -277,9 +287,9 @@ else if test "$CFLAGS" = ""; then CFLAGS=$default_cflags fi - config_arguments="$config_arguments CFLAGS='$mXY_build $CFLAGS'" + config_arguments="$config_arguments CFLAGS='$mXY_build $pie_cflags $CFLAGS'" unset CFLAGS - config_arguments="$config_arguments LDFLAGS='$mXY_build $LDFLAGS'" + config_arguments="$config_arguments LDFLAGS='$mXY_build $pie_ldflags $LDFLAGS'" unset LDFLAGS case $mXY_build in -m32) diff --git a/erts/aclocal.m4 b/erts/aclocal.m4 index e2b7e1eada..3a9872f891 100644 --- a/erts/aclocal.m4 +++ b/erts/aclocal.m4 @@ -2938,6 +2938,8 @@ DED_CFLAGS="$CFLAGS $CPPFLAGS $DED_CFLAGS" if test "x$GCC" = xyes; then DED_STATIC_CFLAGS="$DED_CFLAGS" DED_CFLAGS="$DED_CFLAGS -fPIC" + # Remove -fPIE and -fno-PIE + DED_CFLAGS=`echo $DED_CFLAGS | sed 's/-f\(no-\)\?PIE//g'` fi DED_EXT=so diff --git a/lib/erl_interface/configure.in b/lib/erl_interface/configure.in index f0e9b2eb3f..540a9eaa73 100644 --- a/lib/erl_interface/configure.in +++ b/lib/erl_interface/configure.in @@ -330,6 +330,10 @@ if test "X$host" = "Xwin32"; then LIB_CFLAGS="$CFLAGS" else if test "x$GCC" = xyes; then + # Remove all PIE stuff + CFLAGS=`echo $CFLAGS | sed 's/-f\(no-\)\?PIE//g'` + LDFLAGS=`echo $LDFLAGS | sed 's/-\(no-\)\?pie//g'` + LIB_CFLAGS="$CFLAGS -fPIC" else LIB_CFLAGS="$CFLAGS" diff --git a/make/configure.in b/make/configure.in index c4b89c4f45..64680d55ca 100644 --- a/make/configure.in +++ b/make/configure.in @@ -339,6 +339,10 @@ AS_HELP_STRING([--enable-m32-build], esac ],enable_m32_build=no) +AC_ARG_ENABLE(pie, +AS_HELP_STRING([--enable-pie], [build position independent executables]) +AS_HELP_STRING([--disable-pie], [do no build position independent executables])) + AC_ARG_WITH(libatomic_ops, AS_HELP_STRING([--with-libatomic_ops=PATH], [specify and prefer usage of libatomic_ops in the ethread library])) |