From 02bff180801515dfb155759bcd38179dec8914bf Mon Sep 17 00:00:00 2001
From: ljrittle <ljrittle@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 6 May 2002 21:26:49 +0000
Subject: [PATCH] 	* ltmain.sh: Detect and handle object name conflicts 
 while piecewise linking a static library.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53237 138bc75d-0d04-0410-961f-82ee72b054a4
---
 ChangeLog |  5 +++++
 ltmain.sh | 14 ++++++++++++++
 2 files changed, 19 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 8c1f30bb65ff..0b7656b6850f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-05-06  Loren J. Rittle <ljrittle@acm.org>
+
+	* ltmain.sh: Detect and handle object name conflicts
+	while piecewise linking a static library.
+
 2002-05-05  Alexandre Oliva  <aoliva@redhat.com>
 
 	* configure.in (noconfigdirs): Don't disable libgcj on
diff --git a/ltmain.sh b/ltmain.sh
index c3547e5a5616..92526b60b795 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -4247,6 +4247,20 @@ fi\
           objlist=
           concat_cmds=
           save_oldobjs=$oldobjs
+	  # GNU ar 2.10+ was changed to match POSIX; thus no paths are
+	  # encoded into archives.  This makes 'ar r' malfunction in
+	  # this piecewise linking case whenever conflicting object
+	  # names appear in distinct ar calls; check, warn and compensate.
+          if (for obj in $save_oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	    :
+	  else
+	    $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
+	    $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
+	    AR_FLAGS=cq
+	  fi
           for obj in $save_oldobjs
           do
             oldobjs="$objlist $obj"
-- 
GitLab