[Rpm-maint] [Suse patch] debugedit: include compilation directory if used

Panu Matilainen pmatilai at redhat.com
Fri Jun 8 11:25:23 UTC 2007


Michael, any idea what the case behind this patch was? It's not that I 
object to it or anything, I just have no clue what this is supposed to be 
doing :)

 	- Panu -

---

Include compilation directory in source file list if used.

---
  tools/debugedit.c |   28 +++++++++++++++++++++++++++-
  1 file changed, 27 insertions(+), 1 deletion(-)

--- tools/debugedit.c.orig	2007-04-08 22:55:58.000000000 +0200
+++ tools/debugedit.c	2007-04-09 01:34:51.000000000 +0200
@@ -488,6 +488,7 @@ edit_dwarf2_line (DSO *dso, uint_32 off,
    uint_32 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;
@@ -586,6 +587,7 @@ edit_dwarf2_line (DSO *dso, uint_32 off,
  	}
        else
  	{
+	  comp_dir_used = 1;
  	  memcpy (s, comp_dir, comp_dir_len);
  	  s[comp_dir_len] = '/';
  	  memcpy (s + comp_dir_len + 1, dirt[value], dir_len);
@@ -624,7 +626,31 @@ edit_dwarf2_line (DSO *dso, uint_32 off,
        read_uleb128 (ptr);
      }
    ++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;



More information about the Rpm-maint mailing list