42 lines
1.2 KiB
Diff
42 lines
1.2 KiB
Diff
|
diff -r f531397e7635 -r 751cf2c7614e tools/debugedit.c
|
||
|
--- a/tools/debugedit.c Sun Oct 14 12:49:18 2007 +0300
|
||
|
+++ b/tools/debugedit.c Thu Oct 18 09:34:54 2007 +0300
|
||
|
@@ -560,11 +560,16 @@ edit_dwarf2_line (DSO *dso, uint_32 off,
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
- memcpy (s, comp_dir, comp_dir_len);
|
||
|
- s[comp_dir_len] = '/';
|
||
|
- memcpy (s + comp_dir_len + 1, dirt[value], dir_len);
|
||
|
- s[comp_dir_len + 1 + dir_len] = '/';
|
||
|
- memcpy (s + comp_dir_len + 1 + dir_len + 1, file, file_len + 1);
|
||
|
+ char *p = s;
|
||
|
+ if (comp_dir_len != 0)
|
||
|
+ {
|
||
|
+ memcpy (s, comp_dir, comp_dir_len);
|
||
|
+ s[comp_dir_len] = '/';
|
||
|
+ p += comp_dir_len + 1;
|
||
|
+ }
|
||
|
+ memcpy (p, dirt[value], dir_len);
|
||
|
+ p[dir_len] = '/';
|
||
|
+ memcpy (p + dir_len + 1, file, file_len + 1);
|
||
|
}
|
||
|
canonicalize_path (s, s);
|
||
|
if (list_file_fd != -1)
|
||
|
@@ -822,6 +827,7 @@ edit_attributes (DSO *dso, unsigned char
|
||
|
|
||
|
switch (form)
|
||
|
{
|
||
|
+ case DW_FORM_ref_addr: /* ptr_size in DWARF 2, offset in DWARF 3 */
|
||
|
case DW_FORM_addr:
|
||
|
ptr += ptr_size;
|
||
|
break;
|
||
|
@@ -847,7 +853,6 @@ edit_attributes (DSO *dso, unsigned char
|
||
|
case DW_FORM_udata:
|
||
|
read_uleb128 (ptr);
|
||
|
break;
|
||
|
- case DW_FORM_ref_addr:
|
||
|
case DW_FORM_strp:
|
||
|
ptr += 4;
|
||
|
break;
|