File amanda-2.5.2.1-pie.patch of Package amanda
Index: client-src/Makefile.am
===================================================================
--- client-src/Makefile.am.orig
+++ client-src/Makefile.am
@@ -12,6 +12,17 @@ LIB_EXTENSION = la
libexec_PROGRAMS = noop calcsize killpgrp rundump runtar selfcheck sendbackup sendsize versionsuffix
+calcsize_CFLAGS = -fPIE $(AM_CFLAGS)
+calcsize_LDFLAGS = -pie $(AM_LDFLAGS)
+killpgrp_CFLAGS = -fPIE $(AM_CFLAGS)
+killpgrp_LDFLAGS = -pie $(AM_LDFLAGS)
+rundump_CFLAGS = -fPIE $(AM_CFLAGS)
+rundump_LDFLAGS = -pie $(AM_LDFLAGS)
+runtar_CFLAGS = -fPIE $(AM_CFLAGS)
+runtar_LDFLAGS = -pie $(AM_LDFLAGS)
+amandad_CFLAGS = -fPIE $(AM_CFLAGS)
+amandad_LDFLAGS = -pie $(AM_LDFLAGS)
+
sbin_SCRIPTS = @CLIENT_SCRIPTS_OPT@
libexec_SCRIPTS = patch-system
@@ -28,6 +39,7 @@ libamclient_la_SOURCES= amandates.c get
unctime.c client_util.c \
clientconf.c $(samba_sources)
+libamclient_la_CFLAGS = -fPIC $(AM_CFLAGS)
libamclient_la_LDFLAGS = -release $(VERSION)
###
Index: configure.in
===================================================================
--- configure.in.orig
+++ configure.in
@@ -89,6 +89,53 @@ AC_OBJEXT
AC_EXEEXT
AC_SYS_LARGEFILE
+AC_MSG_CHECKING([for Position Independent Executable support])
+save_CFLAGS="$CFLAGS"
+save_LDFLAGS="$LDFLAGS"
+CFLAGS="$CFLAGS -fpie"
+LDFLAGS="$LDFLAGS -pie"
+AC_TRY_RUN(
+ [
+int foo () __attribute__((visibility ("hidden")));
+int foo () { return 0; }
+int main () { return foo (); }
+ ],
+ [
+ ac_cv_pie_support=yes
+ ],
+ [
+ ac_cv_pie_support=no
+ ],
+ [
+ ac_cv_pie_support=no
+ ]
+)
+CFLAGS="$save_CFLAGS"
+LDFLAGS="$save_LDFLAGS"
+AC_MSG_RESULT($ac_cv_pie_support)
+if test $ac_cv_pie_support = no; then
+ AC_DEFINE(hidden,,
+ [Define as `__attribute__((visibility ("hidden")))' if the C compiler supports it,
+ or to nothing if it is not supported.])
+ PIE_LDFLAGS=
+ PIE_SED_CMD=
+ COMPILE_PIE=
+ EXIT0_IF_NO_PIE='exit 0'
+else
+ AC_DEFINE_UNQUOTED(hidden, __attribute__((visibility ("hidden"))))
+ PIE_LDFLAGS="-pie -L.pie/ -Lopenbsd-compat/.pie/"
+changequote(<<, >>)dnl
+ PIE_SED_CMD='s_[ ]\([^ ]\)_ .pie/\1_g'
+changequote([, ])dnl
+ COMPILE_PIE=' && mkdir -p .pie && $(COMPILE) -c -fpie -o .pie/$@ \`test -f '"'"'$<'"'"' || echo '"'"'$(srcdir)/'"'"'\`$<'
+ EXIT0_IF_NO_PIE=:
+fi
+AC_SUBST(PIE_LDFLAGS)
+AC_SUBST(PIE_SED_CMD)
+AC_SUBST(COMPILE_PIE)
+AC_SUBST(EXIT0_IF_NO_PIE)
+
+
dnl
dnl Process tool locations for tools we need right away to configure.
dnl
Index: server-src/Makefile.am
===================================================================
--- server-src/Makefile.am.orig
+++ server-src/Makefile.am
@@ -12,6 +12,19 @@ LINTFLAGS=@AMLINTFLAGS@
lib_LTLIBRARIES = libamserver.la
LIB_EXTENSION = la
+amcheck_CFLAGS = -fPIE $(AM_CFLAGS)
+amcheck_LDFLAGS = -pie $(AM_LDFLAGS)
+amindexd_CFLAGS = -fPIE $(AM_CFLAGS)
+amindexd_LDFLAGS = -pie $(AM_LDFLAGS)
+dumper_CFLAGS = -fPIE $(AM_CFLAGS)
+dumper_LDFLAGS = -pie $(AM_LDFLAGS)
+planner_CFLAGS = -fPIE $(AM_CFLAGS)
+planner_LDFLAGS = -pie $(AM_LDFLAGS)
+libamserver_la_CFLAGS = -fPIC $(AM_CFLAGS)
+amdd_CFLAGS = -fPIE $(AM_CFLAGS)
+amdd_LDFLAGS = -pie $(AM_LDFLAGS)
+libamtape_la_CFLAGS = -fPIC $(AM_CFLAGS)
+
sbin_PROGRAMS = amadmin amcheck amflush \
amgetconf amlabel amtape \
amreport
Index: tape-src/Makefile.am
===================================================================
--- tape-src/Makefile.am.orig
+++ tape-src/Makefile.am
@@ -16,8 +16,15 @@ libamtape_la_SOURCES = output-file.c \
output-rait.c \
output-tape.c \
tapeio.c
-
-libamtape_la_LDFLAGS = -release $(VERSION)
+libamtape_la_CFLAGS = -fPIE $(AM_CFLAGS)
+amdd_CFLAGS = -fPIE $(AM_CFLAGS)
+ammt_CFLAGS = -fPIE $(AM_CFLAGS)
+amtapetype_CFLAGS = -fPIE $(AM_CFLAGS)
+
+libamtape_la_LDFLAGS = -pie $(AM_LDFLAGS) -release $(VERSION)
+amdd_LDFLAGS = -pie $(AM_LDFLAGS)
+ammt_LDFLAGS = -pie $(AM_LDFLAGS)
+amtapetype_LDFLAGS = -pie $(AM_LDFLAGS)
###
# Because libamanda includes routines (e.g. regex) provided by some system