9c77a54
9c77a54
Link executables using -pie, link test executables using -no-install.
9c77a54
2e3dd3d
diff -uap subversion-1.10.0/build.conf.pie subversion-1.10.0/build.conf
2e3dd3d
--- subversion-1.10.0/build.conf.pie
2e3dd3d
+++ subversion-1.10.0/build.conf
2e3dd3d
@@ -783,6 +783,7 @@
9c77a54
 libs = libsvn_repos libsvn_fs libsvn_delta libsvn_subr aprutil apriconv apr
9c77a54
 msvc-static = yes
9c77a54
 undefined-lib-symbols = yes
9c77a54
+link-cmd = $(LINK_TEST_LIB)
9c77a54
 
9c77a54
 # ----------------------------------------------------------------------------
9c77a54
 # Tests for libsvn_fs_base
2e3dd3d
diff -uap subversion-1.10.0/build/generator/gen_base.py.pie subversion-1.10.0/build/generator/gen_base.py
2e3dd3d
--- subversion-1.10.0/build/generator/gen_base.py.pie
2e3dd3d
+++ subversion-1.10.0/build/generator/gen_base.py
2e3dd3d
@@ -599,7 +599,7 @@
9c77a54
     self.install = options.get('install')
9c77a54
     self.compile_cmd = options.get('compile-cmd')
9c77a54
     self.sources = options.get('sources', '*.c *.cpp')
9c77a54
-    self.link_cmd = options.get('link-cmd', '$(LINK)')
9c77a54
+    self.link_cmd = options.get('link-cmd', '$(LINK_LIB)')
9c77a54
 
9c77a54
     self.external_lib = options.get('external-lib')
9c77a54
     self.external_project = options.get('external-project')
2e3dd3d
@@ -659,6 +659,17 @@
9c77a54
 
9c77a54
     self.msvc_force_static = options.get('msvc-force-static') == 'yes'
9c77a54
 
9c77a54
+    if self.install in ['test', 'bdb-test', 'sub-test', ]:
9c77a54
+      self.link_cmd = '$(LINK_TEST)'
2e3dd3d
+    elif self.install in ['cxxhl-tests', ]:
2e3dd3d
+      self.link_cmd = '$(LINK_TEST_CXX)'
9c77a54
+    elif self.link_cmd == '$(LINK_LIB)':
9c77a54
+      # Over-ride the default for TargetLinked.
9c77a54
+      self.link_cmd = '$(LINK_EXE)'
2e3dd3d
+    else:
2e3dd3d
+      raise GenError('ERROR: Unknown executable link type for ' + self.name + \
2e3dd3d
+                     ': ' + self.link_cmd + ' (' + self.install + ')')
9c77a54
+    
9c77a54
   def add_dependencies(self):
9c77a54
     TargetLinked.add_dependencies(self)
9c77a54
 
2e3dd3d
diff -uap subversion-1.10.0/Makefile.in.pie subversion-1.10.0/Makefile.in
2e3dd3d
--- subversion-1.10.0/Makefile.in.pie
2e3dd3d
+++ subversion-1.10.0/Makefile.in
2e3dd3d
@@ -268,6 +268,11 @@
9c77a54
 LINK_LIB = $(LINK) $(LT_SO_VERSION) -rpath $(libdir)
9c77a54
 LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS)
9c77a54
 LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION) -rpath $(libdir)
9c77a54
+LINK_TEST = $(LINK) -no-install
9c77a54
+LINK_TEST_LIB = $(LINK) -avoid-version
9c77a54
+LINK_TEST_CXX_LIB = $(LINK_CXX) -avoid-version
9c77a54
+LINK_EXE = $(LINK) -pie
9c77a54
+LINK_CXX_EXE = $(LINK) -pie
9c77a54
 
9c77a54
 # special link rule for mod_dav_svn
2e3dd3d
 LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR) -avoid-version -module $(APACHE_LDFLAGS) -shared
2e3dd3d
@@ -780,10 +785,10 @@
9c77a54
 	$(PYTHON) $(top_srcdir)/build/transform_sql.py $< $(top_srcdir)/$@
9c77a54
 
9c77a54
 .c.o:
9c77a54
-	$(COMPILE) -o $@ -c $<
9c77a54
+	$(COMPILE) -fPIE -o $@ -c $<
9c77a54
 
9c77a54
 .cpp.o:
9c77a54
-	$(COMPILE_CXX) -o $@ -c $<
9c77a54
+	$(COMPILE_CXX) -fPIE -o $@ -c $<
9c77a54
 
9c77a54
 .c.lo:
9c77a54
 	$(LT_COMPILE) -o $@ -c $<