PR libgcj/20160

* ltmain.sh: Avoid creating archives with components that have
duplicate basenames.
This commit is contained in:
Alexandre Oliva 2005-03-01 22:33:54 +00:00
parent b9b8c930c3
commit 4aa1f3158f
2 changed files with 64 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2005-03-01 Alexandre Oliva <aoliva@redhat.com>
PR libgcj/20160
* ltmain.sh: Avoid creating archives with components that have
duplicate basenames.
2005-02-28 Andrew Pinski <pinskia@physics.uc.edu>
PR bootstrap/20250

View File

@ -4234,6 +4234,63 @@ fi\
# fi
# done
# POSIX demands no paths to be encoded in archives. We have
# to avoid creating archives with duplicate basenames if we
# might have to extract them afterwards, e.g., when creating a
# static archive out of a convenience library, or when linking
# the entirety of a libtool archive into another (currently
# not supported by libtool).
if (for obj in $oldobjs
do
$echo "X$obj" | $Xsed -e 's%^.*/%%'
done | sort | sort -uc >/dev/null 2>&1); then
:
else
$echo "copying selected object files to avoid basename conflicts..."
if test -z "$gentop"; then
gentop="$output_objdir/${outputname}x"
$show "${rm}r $gentop"
$run ${rm}r "$gentop"
$show "$mkdir $gentop"
$run $mkdir "$gentop"
status=$?
if test $status -ne 0 && test ! -d "$gentop"; then
exit $status
fi
generated="$generated $gentop"
fi
save_oldobjs=$oldobjs
oldobjs=
counter=1
for obj in $save_oldobjs
do
objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
case " $oldobjs " in
" ") oldobjs=$obj ;;
*[\ /]"$objbase "*)
while :; do
# Make sure we don't pick an alternate name that also
# overlaps.
newobj=lt$counter-$objbase
counter=`expr $counter + 1`
case " $oldobjs " in
*[\ /]"$newobj "*) ;;
*) if test ! -f "$gentop/$newobj"; then break; fi ;;
esac
done
$show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
$run ln "$obj" "$gentop/$newobj" ||
$run cp "$obj" "$gentop/$newobj"
oldobjs="$oldobjs $gentop/$newobj"
;;
*) oldobjs="$oldobjs $obj" ;;
esac
done
fi
eval cmds=\"$old_archive_cmds\"
if len=`expr "X$cmds" : ".*"` &&
@ -4247,6 +4304,7 @@ fi\
objlist=
concat_cmds=
save_oldobjs=$oldobjs
for obj in $save_oldobjs
do
oldobjs="$objlist $obj"