PR libgcj/20160
* ltmain.sh: Avoid creating archives with components that have duplicate basenames.
This commit is contained in:
		| @@ -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> | 2005-02-28  Andrew Pinski  <pinskia@physics.uc.edu> | ||||||
|  |  | ||||||
|         PR bootstrap/20250 |         PR bootstrap/20250 | ||||||
|   | |||||||
							
								
								
									
										58
									
								
								ltmain.sh
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								ltmain.sh
									
									
									
									
									
								
							| @@ -4234,6 +4234,63 @@ fi\ | |||||||
| #	  fi | #	  fi | ||||||
| #	done | #	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\" |         eval cmds=\"$old_archive_cmds\" | ||||||
|  |  | ||||||
|         if len=`expr "X$cmds" : ".*"` && |         if len=`expr "X$cmds" : ".*"` && | ||||||
| @@ -4247,6 +4304,7 @@ fi\ | |||||||
|           objlist= |           objlist= | ||||||
|           concat_cmds= |           concat_cmds= | ||||||
|           save_oldobjs=$oldobjs |           save_oldobjs=$oldobjs | ||||||
|  |  | ||||||
|           for obj in $save_oldobjs |           for obj in $save_oldobjs | ||||||
|           do |           do | ||||||
|             oldobjs="$objlist $obj" |             oldobjs="$objlist $obj" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user