ruby-changes:33267
From: naruse <ko1@a...>
Date: Sun, 16 Mar 2014 07:15:36 +0900 (JST)
Subject: [ruby-changes:33267] naruse:r45346 (trunk): * addr2line.c (fill_lines): return address is just after calling
naruse 2014-03-16 07:15:30 +0900 (Sun, 16 Mar 2014) New Revision: 45346 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=45346 Log: * addr2line.c (fill_lines): return address is just after calling address. Therefore noreturn function with tail call's return address may be in another function. Modified files: trunk/ChangeLog trunk/addr2line.c Index: ChangeLog =================================================================== --- ChangeLog (revision 45345) +++ ChangeLog (revision 45346) @@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Sun Mar 16 06:33:35 2014 NARUSE, Yui <naruse@r...> + + * addr2line.c (fill_lines): return address is just after calling + address. Therefore noreturn function with tail call's return + address may be in another function. + Sun Mar 16 05:51:55 2014 Zachary Scott <e@z...> * lib/gserver.rb: [DOC] Fixed typo in example by @stomar [Bug #9543] Index: addr2line.c =================================================================== --- addr2line.c (revision 45345) +++ addr2line.c (revision 45346) @@ -580,7 +580,7 @@ fill_lines(int num_traces, void **traces https://github.com/ruby/ruby/blob/trunk/addr2line.c#L580 ElfW(Sym) *sym = &symtab[j]; intptr_t saddr = (intptr_t)sym->st_value + lines[i].base_addr; ptrdiff_t d = (intptr_t)traces[i] - saddr; - if (d < 0 || d > (ptrdiff_t)sym->st_size) continue; + if (d <= 0 || d > (ptrdiff_t)sym->st_size) continue; lines[i].sname = strtab + sym->st_name; lines[i].saddr = saddr; } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/