Wietse Venema:
> Indeed. PIE support is a new feature. New features are not added
> during the code freeze. You're welcome to back-port this new feature
> once we have tested it in Postfix 3.1 with multiple build options
> (shared/nonshared) and with multiple OS distributions. This does
> not appear to require tests on multiple hardware architectures.

Very lighty-tested patch follows. No INSTALL documentation until
this has been tested.

Usage: $ make makefiles pie=yes ...

        Wietse

diff -ur /var/tmp/postfix-3.1-20150201/makedefs ./makedefs
--- /var/tmp/postfix-3.1-20150201/makedefs      2015-01-31 19:06:20.000000000 
-0500
+++ ./makedefs  2015-02-04 12:50:05.000000000 -0500
@@ -105,6 +105,13 @@
 #      "dynamicmaps=yes" implicitly enables Postfix shared libraries.
 #
 #      This feature was introduced with Postfix 3.0.
+# .IP \fBpie=yes\fR
+# .IP \fBpie=no\fR
+#
+#      Enable (disable) Postfix builds with position-independent
+#      executables, on platforms where this is supported.
+#
+#      This feature was introduced with Postfix 3.1.
 # .IP \fIinstallation_parameter\fB=\fIvalue\fR...
 #      Override the compiled-in default value of the specified
 #      installation parameter(s). The following parameters are
@@ -142,6 +149,7 @@
 echo "# AUXLIBS=$AUXLIBS"
 env | grep '^AUXLIBS_' | sed 's/^/# /'
 echo "# dynamicmaps=$dynamicmaps"
+echo "# pie=$pie"
 
 # Defaults for most sane systems
 
@@ -1082,6 +1090,19 @@
      '`
 esac
 
+# Choose between PIE and non-PIE builds.
+
+case "$pie" in
+  yes) case "$CCARGS" in
+    *" -fPIC "*) ;;
+              *) CCARGS_PIE="-fPIC";;
+       esac
+       SYSLIBS_PIE="-pie";;
+""|no) ;;
+    *) error "Specify \"pie=yes\" or \"pie=no\"";;
+esac
+
+
 # Finally...
 
 sed 's/   */ /g' <<EOF
@@ -1090,8 +1111,8 @@
 _AR    = $_AR
 ARFL   = $ARFL
 _RANLIB        = $_RANLIB
-SYSLIBS        = $AUXLIBS $SYSLIBS $PLUGIN_AUXLIBS
-CC     = $CC $CCARGS \$(WARN)
+SYSLIBS        = $SYSLIBS_PIE $AUXLIBS $SYSLIBS $PLUGIN_AUXLIBS
+CC     = $CC $CCARGS_PIE $CCARGS \$(WARN)
 OPT    = $OPT
 DEBUG  = $DEBUG
 AWK    = $AWK

Reply via email to