[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]