Re: Fix AArch64 "$x" symbols

William Cohen <[email protected]>
Newsgroups gmane.linux.oprofile
Message-ID <[email protected]>
On 07/31/2014 10:13 AM, Andrew Haley wrote:
> On 07/31/2014 03:03 PM, William Cohen wrote:
> 
>> Have you tried running the same experiment on x86-64 and compared
>> the resulting output?  I suspect that the "$x" map to some methods
>> but for some reason oprofile is not getting the right location/name
>> and ends up with "$x".  It would be good to compare the output to
>> get some clue what "$x" might be.  You might also use "opreport
>> --detail --symbols" to see where the samples are actually recorded
>> and see where those $x functions are being located.  The "--detail"
>> will provide a huge amount of output.
> 
> Sure, x86-64 is fine: it doesn't have mapping symbols.  I can see all
> the "$x" symbols in the symtab on AArch64.
> 
> Andrew.
> 

Hi Andrew,

The "--details" output was to see if there was a pattern to attribution to "$x".

Using the "Detailed examination of Java task processor usage" from https://access.redhat.com/articles/911073 I am able to reproduce the issue:

$ operf  java -agentlib:jvmti_oprofile -jar dacapo-9.12-bach.jar sunflow
$ opreport --symbols  |grep "\$x"
Using /discer.farm/home/wcohen/dacampo/oprofile_data/samples/ for samples directory.

WARNING: Lost samples detected! See /discer.farm/home/wcohen/dacampo/oprofile_data/samples/operf.log for details.
warning: /no-vmlinux could not be found.
warning: [vdso] (tgid:6974 range:0x3ff96b10000-0x3ff96b2ffff) could not be found.
469       0.0591  libc-2.17.so             $x
331       0.0417  libz.so.1.2.7            $x
88        0.0111  libc-2.17.so             $x
56        0.0071  libz.so.1.2.7            $x
27        0.0034  ld-2.17.so               $x
21        0.0026  libc-2.17.so             $x
14        0.0018  libpthread-2.17.so       $x
13        0.0016  libpthread-2.17.so       $x
10        0.0013  libc-2.17.so             $x
10        0.0013  libpthread-2.17.so       $x
9         0.0011  libc-2.17.so             $x
9         0.0011  libopagent.so.1.0.1      $x
5        6.3e-04  ld-2.17.so               $x
4        5.0e-04  ld-2.17.so               $x
4        5.0e-04  ld-2.17.so               $x
4        5.0e-04  libc-2.17.so             $x
4        5.0e-04  libjvmti_oprofile.so.0.0.0 $x
3        3.8e-04  ld-2.17.so               $x
3        3.8e-04  libz.so.1.2.7            $x
2        2.5e-04  ld-2.17.so               $x
2        2.5e-04  ld-2.17.so               $x
2        2.5e-04  libc-2.17.so             $x
1        1.3e-04  ld-2.17.so               $x
1        1.3e-04  ld-2.17.so               $x
1        1.3e-04  ld-2.17.so               $x
1        1.3e-04  ld-2.17.so               $x
1        1.3e-04  ld-2.17.so               $x
1        1.3e-04  ld-2.17.so               $x
1        1.3e-04  libc-2.17.so             $x
1        1.3e-04  libc-2.17.so             $x
1        1.3e-04  libc-2.17.so             $x
1        1.3e-04  libc-2.17.so             $x
1        1.3e-04  libc-2.17.so             $x
1        1.3e-04  libc-2.17.so             $x
1        1.3e-04  libdl-2.17.so            $x
1        1.3e-04  libdl-2.17.so            $x
1        1.3e-04  libjvmti_oprofile.so.0.0.0 $x

$ opreport --symbols  --details|more
/$x
...skipping
00000000000851e8 469       0.0591  libc-2.17.so             $x
  00000000000851e8 14        2.9851
  00000000000851f8 14        2.9851
  0000000000085200 13        2.7719
  0000000000085214 8         1.7058
  0000000000085218 1         0.2132
  0000000000085220 3         0.6397
  0000000000085224 38        8.1023
  0000000000085228 5         1.0661
  000000000008522c 2         0.4264
  0000000000085230 1         0.2132
  0000000000085234 50       10.6610
  0000000000085238 5         1.0661
  0000000000085240 9         1.9190
  0000000000085244 41        8.7420
  0000000000085250 60       12.7932
  0000000000085254 1         0.2132
  0000000000085258 1         0.2132
  0000000000085260 40        8.5288
  0000000000085268 21        4.4776
  0000000000085274 4         0.8529
  0000000000085278 2         0.4264
  0000000000085280 7         1.4925
  0000000000085290 24        5.1173
  000000000008529c 2         0.4264
  00000000000852a0 7         1.4925
  00000000000852b0 13        2.7719
  00000000000852bc 1         0.2132
  00000000000852c0 1         0.2132
  00000000000852d0 71       15.1386
  00000000000852d8 3         0.6397
  00000000000852ec 6         1.2793
  00000000000852fc 1         0.2132

looking through the "objdump -d /usr/lib64/libc-2.17.so" looks like it matches up with _wordcopy_fwd_aligned:

00000000000851e8 <_wordcopy_fwd_aligned>:
   851e8:	92400843 	and	x3, x2, #0x7
   851ec:	d1000463 	sub	x3, x3, #0x1
   851f0:	f100187f 	cmp	x3, #0x6
...

Took a look at some other $x examples:

0000000000006b18 331       0.0417  libz.so.1.2.7            $x interior of some function

0000000000036a64 88        0.0111  libc-2.17.so             $x maps to 0000000000036a64 <msort_with_tmp.part.0>:


00000000000095a4 56        0.0071  libz.so.1.2.7            $x interior of some function

0000000000016150 27        0.0034  ld-2.17.so               $x maps to strcmp

So it looks like the samples are being mapped to some functions, but the function names are not being recorded correctly in some cases.
 
 
-Will

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.