Fix strip -f infinite loop when coping with some extra kooky object sections.
diff --git a/src/ChangeLog b/src/ChangeLog
index 88dd78a..87c7d7d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2009-04-14  Roland McGrath  <roland@redhat.com>
+
+	* strip.c (handle_elf: check_preserved): Don't note any change when
+	.debug_data is already filled from a previous pass.
+
 2009-02-05  Ulrich Drepper  <drepper@redhat.com>
 
 	* objdump.c (show_relocs_x): Minor cleanups.
diff --git a/src/strip.c b/src/strip.c
index 27eb210..d788ebf 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -835,7 +835,8 @@
 
 	      inline void check_preserved (size_t i)
 	      {
-		if (i != 0 && shdr_info[i].idx != 0)
+		if (i != 0 && shdr_info[i].idx != 0
+		    && shdr_info[i].debug_data == NULL)
 		  {
 		    if (shdr_info[i].data == NULL)
 		      shdr_info[i].data = elf_getdata (shdr_info[i].scn, NULL);