[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gprof/21189] gprof doesn't work with code built with PIE
From: |
nickc at redhat dot com |
Subject: |
[Bug gprof/21189] gprof doesn't work with code built with PIE |
Date: |
Wed, 22 Feb 2017 11:29:03 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=21189
Nick Clifton <nickc at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |nickc at redhat dot com
--- Comment #1 from Nick Clifton <nickc at redhat dot com> ---
Hi Matthias,
> Since --enabled-default-pie was enabled in Debian for GCC 6, gprof no longer
> works.
I think that this might be a glibc bug. Specifically in their implementation
of mcount() for PIE environments.
Running "gprof -d infloop | grep main" shows that main starts at address 0x860:
[get_src_info] 0x860 -> infloop.c:1 (main)
[core_create_function_syms] 15 main 0x860
And that it covers 0x2f bytes:
[symtab_finalize] 0x860-0x88f main
But, the data in the gmon.out file us using much higher addresses:
[hist_read_rec] n_lowpc 0x4004e0 n_highpc 0x400718 ncnt 144
[assign_samples] bin_low_pc=0x40063a, bin_high_pc=0x40063e, bin_count=18
[assign_samples] bin_low_pc=0x40063e, bin_high_pc=0x400642, bin_count=38
[assign_samples] bin_low_pc=0x400646, bin_high_pc=0x40064a, bin_count=82
[assign_samples] total_time 138.000000
Of course I may be wrong - I am not an expert on gprof - but it does look to me
like the contents of the gmon.out file are wrong.
Alternatively maybe gprof needs a way compute a starting address bias for PIE
executables.
Cheers
Nick
--
You are receiving this mail because:
You are on the CC list for the bug.