Bug #17810 » ruby-addr2line-do-not-overwrite-sname-with-null.patch
| addr2line.c | ||
|---|---|---|
|
/* if the binary is strip-ed, this may effect */
|
||
|
for (p=dladdr_fbases; *p; p++) {
|
||
|
if (*p == info.dli_fbase) {
|
||
|
lines[i].path = info.dli_fname;
|
||
|
lines[i].sname = info.dli_sname;
|
||
|
if (info.dli_fname) lines[i].path = info.dli_fname;
|
||
|
if (info.dli_sname) lines[i].sname = info.dli_sname;
|
||
|
goto next_line;
|
||
|
}
|
||
|
}
|
||
| ... | ... | |
|
obj->base_addr = (uintptr_t)info.dli_fbase;
|
||
|
path = info.dli_fname;
|
||
|
obj->path = path;
|
||
|
lines[i].path = path;
|
||
|
lines[i].sname = info.dli_sname;
|
||
|
lines[i].saddr = (uintptr_t)info.dli_saddr;
|
||
|
if (path) lines[i].path = path;
|
||
|
if (info.dli_sname) {
|
||
|
lines[i].sname = info.dli_sname;
|
||
|
lines[i].saddr = (uintptr_t)info.dli_saddr;
|
||
|
}
|
||
|
strlcpy(binary_filename, path, PATH_MAX);
|
||
|
if (fill_lines(num_traces, traces, 1, &obj, lines, i) == (uintptr_t)-1)
|
||
|
break;
|
||