A new user interface for you! Read more...

File debugedit-comp-dir.diff of Package rpm

Include compilation directory in source file list if used.

--- ./tools/debugedit.c.orig	2011-05-11 14:27:32.000000000 +0000
+++ ./tools/debugedit.c	2011-05-11 15:31:31.000000000 +0000
@@ -503,6 +503,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
   uint32_t value, dirt_cnt;
   size_t comp_dir_len = strlen (comp_dir);
   size_t abs_file_cnt = 0, abs_dir_cnt = 0;
+  int comp_dir_used = 0;
 
   if (phase != 0)
     return 0;
@@ -611,6 +612,7 @@ edit_dwarf2_line (DSO *dso, uint32_t off
 	  memcpy (p, dirt[value], dir_len);
 	  p[dir_len] = '/';
 	  memcpy (p + dir_len + 1, file, file_len + 1);
+	  comp_dir_used = 1;
 	}
       canonicalize_path (s, s);
       if (list_file_fd != -1)
@@ -644,6 +646,30 @@ edit_dwarf2_line (DSO *dso, uint32_t off
     }
   ++ptr;
 
+  if (comp_dir_used && list_file_fd != -1
+      && (base_dir == NULL || has_prefix (comp_dir, base_dir)))
+    {
+      char *p;
+      size_t size;
+      ssize_t ret;
+
+      size = comp_dir_len + 1;
+      p = comp_dir;
+      if (base_dir)
+	{
+	  p += strlen (base_dir);
+	  size -= strlen (base_dir);
+	}
+      while (size > 0)
+	{
+	  ret = write (list_file_fd, p, size);
+	  if (ret == -1)
+	    break;
+	  size -= ret;
+	  p += ret;
+	}
+    }
+
   if (dest_dir)
     {
       unsigned char *srcptr, *buf = NULL;