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;