Paul Nasrat bb1df7
--- rpm-4.4.2/tools/debugedit.c.dbgopt	2006-10-31 09:29:53.000000000 +0000
Paul Nasrat bb1df7
+++ rpm-4.4.2/tools/debugedit.c	2006-10-31 09:29:59.000000000 +0000
Paul Nasrat bb1df7
@@ -724,37 +724,57 @@
Paul Nasrat bb1df7
 		}
Paul Nasrat bb1df7
 	    }
Paul Nasrat bb1df7
 
Paul Nasrat bb1df7
-	    if (t->attr[i].attr == DW_AT_comp_dir) {
Paul Nasrat bb1df7
-		if (form == DW_FORM_strp &&
Paul Nasrat bb1df7
-	      debug_sections[DEBUG_STR].data)
Paul Nasrat bb1df7
-	    {
Paul Nasrat bb1df7
-	      char *dir;
Paul Nasrat bb1df7
-	      
Paul Nasrat bb1df7
-	      dir = debug_sections[DEBUG_STR].data
Paul Nasrat bb1df7
-		    + do_read_32_relocated (ptr);
Paul Nasrat bb1df7
-	      free (comp_dir);
Paul Nasrat bb1df7
-	      comp_dir = strdup (dir);
Paul Nasrat bb1df7
+	  if (t->attr[i].attr == DW_AT_comp_dir)
Paul Nasrat bb1df7
+	  {
Paul Nasrat bb1df7
+	      if ( form == DW_FORM_string )
Paul Nasrat bb1df7
+	      {
Paul Nasrat bb1df7
+		  free (comp_dir);
Paul Nasrat bb1df7
+		  comp_dir = strdup (ptr);
Paul Nasrat bb1df7
+		  
Paul Nasrat bb1df7
+		  if (phase == 1 && dest_dir && has_prefix (ptr, base_dir))
Paul Nasrat bb1df7
+		  {
Paul Nasrat bb1df7
+		      base_len = strlen (base_dir);
Paul Nasrat bb1df7
+		      dest_len = strlen (dest_dir);
Paul Nasrat bb1df7
+		      
Paul Nasrat bb1df7
+		      memcpy (ptr, dest_dir, dest_len);
Paul Nasrat bb1df7
+		      if (dest_len < base_len)
Paul Nasrat bb1df7
+		      {
Paul Nasrat bb1df7
+			  memset(ptr + dest_len, '/',
Paul Nasrat bb1df7
+				 base_len - dest_len);
Paul Nasrat bb1df7
+			  
Paul Nasrat bb1df7
+		      }
Paul Nasrat bb1df7
+		      elf_flagdata (debug_sections[DEBUG_INFO].elf_data,
Paul Nasrat bb1df7
+				    ELF_C_SET, ELF_F_DIRTY);
Paul Nasrat bb1df7
+		  }
Paul Nasrat bb1df7
+	      }
Paul Nasrat bb1df7
+	  
Paul Nasrat bb1df7
+	      else if (form == DW_FORM_strp &&
Paul Nasrat bb1df7
+		       debug_sections[DEBUG_STR].data)
Paul Nasrat bb1df7
+	      {
Paul Nasrat bb1df7
+		  char *dir;
Paul Nasrat bb1df7
 
Paul Nasrat bb1df7
-	      if (phase == 1 && dest_dir && has_prefix (dir, base_dir))
Paul Nasrat bb1df7
-		{
Paul Nasrat bb1df7
-		  base_len = strlen (base_dir);
Paul Nasrat bb1df7
-		  dest_len = strlen (dest_dir);
Paul Nasrat bb1df7
+		  dir = debug_sections[DEBUG_STR].data
Paul Nasrat bb1df7
+		      + do_read_32_relocated (ptr);
Paul Nasrat bb1df7
+
Paul Nasrat bb1df7
+		  free (comp_dir);
Paul Nasrat bb1df7
+		  comp_dir = strdup (dir);
Paul Nasrat bb1df7
+
Paul Nasrat bb1df7
+		  if (phase == 1 && dest_dir && has_prefix (dir, base_dir))
Paul Nasrat bb1df7
+		  {
Paul Nasrat bb1df7
+		      base_len = strlen (base_dir);
Paul Nasrat bb1df7
+		      dest_len = strlen (dest_dir);
Paul Nasrat bb1df7
 		  
Paul Nasrat bb1df7
-		  memcpy (dir, dest_dir, dest_len);
Paul Nasrat bb1df7
-		  if (dest_len < base_len)
Paul Nasrat bb1df7
-		    {
Paul Nasrat bb1df7
-		      memmove (dir + dest_len, dir + base_len,
Paul Nasrat bb1df7
-			       strlen (dir + base_len) + 1);
Paul Nasrat bb1df7
-		    }
Paul Nasrat bb1df7
-		  elf_flagdata (debug_sections[DEBUG_STR].elf_data,
Paul Nasrat bb1df7
-				ELF_C_SET, ELF_F_DIRTY);
Paul Nasrat bb1df7
-		}
Paul Nasrat bb1df7
-	    }
Paul Nasrat bb1df7
-		else if (form == DW_FORM_string) {
Paul Nasrat bb1df7
-			free(comp_dir);
Paul Nasrat bb1df7
-			comp_dir = strdup (ptr);			
Paul Nasrat bb1df7
-		}
Paul Nasrat bb1df7
-	    }
Paul Nasrat bb1df7
+		      memcpy (dir, dest_dir, dest_len);
Paul Nasrat bb1df7
+		      if (dest_len < base_len)
Paul Nasrat bb1df7
+		      {
Paul Nasrat bb1df7
+			  memmove (dir + dest_len, dir + base_len,
Paul Nasrat bb1df7
+				   strlen (dir + base_len) + 1);
Paul Nasrat bb1df7
+		      }
Paul Nasrat bb1df7
+		      elf_flagdata (debug_sections[DEBUG_STR].elf_data,
Paul Nasrat bb1df7
+				    ELF_C_SET, ELF_F_DIRTY);
Paul Nasrat bb1df7
+		  }
Paul Nasrat bb1df7
+	      }
Paul Nasrat bb1df7
+	  }
Paul Nasrat bb1df7
 	  else if ((t->tag == DW_TAG_compile_unit
Paul Nasrat bb1df7
 		    || t->tag == DW_TAG_partial_unit)
Paul Nasrat bb1df7
 		   && t->attr[i].attr == DW_AT_name