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
openSUSE Build Service is sponsored by