diff --git a/libada/ChangeLog b/libada/ChangeLog
index ba2441c83fd5eafd78585cf7c4da671c7fecfa24..11a755047c94c4e7fffb59dfd8e66146040224db 100644
--- a/libada/ChangeLog
+++ b/libada/ChangeLog
@@ -1,3 +1,9 @@
+2013-02-12  Kai Tietz  <ktietz@redhat.com>
+
+	PR target/52122
+	* Makefile.in (LN_S_RECUSIVE): New.
+	(adainclude, adalib): Use LN_S_RECURSIVE for copy.
+
 2013-01-14  Richard Sandiford  <rdsandiford@googlemail.com>
 
 	Update copyright years.
diff --git a/libada/Makefile.in b/libada/Makefile.in
index 3bac8278cb20f3d9664fffc14e2f60529cb7a362..119ab3fe1b884081e2675e635d94922cf8eca441 100644
--- a/libada/Makefile.in
+++ b/libada/Makefile.in
@@ -43,6 +43,12 @@ enable_shared = @enable_shared@
 LN_S=@LN_S@
 AWK=@AWK@
 
+ifeq (cp -p,$(LN_S))
+LN_S_RECURSIVE = cp -pR
+else
+LN_S_RECURSIVE = $(LN_S)
+endif
+
 # Variables for the user (or the top level) to override.
 objext=.o
 THREAD_KIND=native
@@ -100,8 +106,8 @@ gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile
 	&& touch stamp-libada
 	-rm -rf adainclude
 	-rm -rf adalib
-	$(LN_S) $(ADA_RTS_DIR) adainclude
-	$(LN_S) $(ADA_RTS_DIR) adalib
+	$(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude
+	$(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib
 
 gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile
 	test -f stamp-libada || \
@@ -109,8 +115,8 @@ gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile
 	&& touch stamp-libada
 	-rm -rf adainclude
 	-rm -rf adalib
-	$(LN_S) $(ADA_RTS_DIR) adainclude
-	$(LN_S) $(ADA_RTS_DIR) adalib
+	$(LN_S_RECUSIVE) $(ADA_RTS_DIR) adainclude
+	$(LN_S_RECUSIVE) $(ADA_RTS_DIR) adalib
 
 osconstool:
 	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons