lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 22 Jul 2010 11:33:45 -0300
From:	Arnaldo Carvalho de Melo <acme@...radead.org>
To:	Gleb Natapov <gleb@...hat.com>
Cc:	linux-kernel@...r.kernel.org, mingo@...e.hu, peterz@...radead.org,
	paulus@...ba.org
Subject: [PATCH] Re: perf annotate segfaults when source code has goto label
 that looks like hex number

Em Thu, Jul 22, 2010 at 10:20:44AM +0300, Gleb Natapov escreveu:
> strtoull() returns valid number when it gets line with label and following
> test passes too. I can't think of a way to unambiguously distinguish between
> label and valid rip. May be running objdump with --prefix-addresses will
> help, but it may make other thing unambiguous.

[root@...lia ~]# objdump --start-address=0x0000000000400474 --stop-address=0x0000000000400496 -dS ./a.out | grep -P ':\t'
  400474:	55                   	push   %rbp
  400475:	48 89 e5             	mov    %rsp,%rbp
  400478:	89 7d ec             	mov    %edi,-0x14(%rbp)
  40047b:	48 89 75 e0          	mov    %rsi,-0x20(%rbp)
  40047f:	eb 01                	jmp    400482 <main+0xe>
  400481:	90                   	nop
  400482:	83 45 fc 01          	addl   $0x1,-0x4(%rbp)
  400486:	81 7d fc 80 96 98 00 	cmpl   $0x989680,-0x4(%rbp)
  40048d:	75 f2                	jne    400481 <main+0xd>
  40048f:	90                   	nop
  400490:	b8 00 00 00 00       	mov    $0x0,%eax
  400495:	c9                   	leaveq 
[root@...lia ~]# objdump --start-address=0x0000000000400474
--stop-address=0x0000000000400496 -dS ./a.out | grep ':$'
Disassembly of section .text:
0000000000400474 <main>:
add:
[root@...lia ~]#

Can you try the attached patch?

With it we get:


[root@...lia ~]# perf annotate

------------------------------------------------
 Percent |	Source code & Disassembly of a.out
------------------------------------------------
         :
         :
         :
         :	Disassembly of section .text:
         :
         :	0000000000400474 <main>:
         :	int main(int argc, char **argv)
         :	{
    0.00 :	  400474:       55                      push   %rbp
    0.00 :	  400475:       48 89 e5                mov    %rsp,%rbp
    0.00 :	  400478:       89 7d ec                mov    %edi,-0x14(%rbp)
    0.00 :	  40047b:       48 89 75 e0             mov    %rsi,-0x20(%rbp)
    0.00 :	  40047f:       eb 01                   jmp    400482 <main+0xe>
         :
         :	      while(1) {
         :	              i++;
         :	              if (i == 10000000)
         :	                      goto add;
         :	      }
   21.05 :	  400481:       90                      nop
         :	int main(int argc, char **argv)
         :	{
         :	      int i;
         :
         :	      while(1) {
         :	              i++;
    0.00 :	  400482:       83 45 fc 01             addl   $0x1,-0x4(%rbp)
         :	              if (i == 10000000)
   15.79 :	  400486:       81 7d fc 80 96 98 00    cmpl   $0x989680,-0x4(%rbp)
   63.16 :	  40048d:       75 f2                   jne    400481 <main+0xd>
         :	                      goto add;
    0.00 :	  40048f:       90                      nop
         :	      }
         :	add:
         :	      return 0;
    0.00 :	  400490:       b8 00 00 00 00          mov    $0x0,%eax
         :	}
    0.00 :	  400495:       c9                      leaveq 

View attachment "annotate_fix.patch" of type "text/plain" (453 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ