On Fri, Sep 06, 2013 at 11:31:17AM +0200, Jean Pihet wrote:
Hi Jiri,
On 5 September 2013 18:30, Jiri Olsa jolsa@redhat.com wrote:
On Wed, Sep 04, 2013 at 08:04:14PM +0200, Jean Pihet wrote:
On ARM the debug info is not present in the .eh_frame sections but instead in .debug_frame. Use libunwind to load and parse the debug info.
hum, cannot make final link:
$ make LIBUNWIND_DIR=/opt/libunwind/ CHK -fstack-protector-all CHK -Wstack-protector CHK -Wvolatile-register-var CHK -D_FORTIFY_SOURCE=2 CHK bionic CHK libelf CHK libdw CHK -DLIBELF_MMAP CHK -DLIBELF_MMAP CHK libunwind CHK libaudit
...
make[1]: `liblk.a' is up to date. SUBDIR /home/jolsa/linux-perf/tools/lib/traceevent/ LINK perf libperf.a(unwind.o): In function `find_proc_info': /home/jolsa/linux-perf/tools/perf/util/unwind.c:339: undefined reference to `_Ux86_64_dwarf_find_debug_frame' collect2: ld returned 1 exit status make: *** [perf] Error 1
I'm using the latest code from git://git.sv.gnu.org/libunwind.git
Looks like dwarf_find_debug_frame is not exported, although it looks like it is based on what I see in libunwind sources ;-)
What did I miss?
libunwind needs to be configured with --enable-debug-frame for the debug_frame code to be included in the lib. On ARM the flag is always set while it isn't on x86. Here is the culprit below (lines from libunwind configure).
yay, thats it!
Should that be changed in configure along with the changes in tools/perf?
I guess it's ok
Other than that tabs misformating the 'perf tool' change looks ok.
I tested the '.eh_frame' code and it's still working. Once I figure out how to create a x86 binary with .debug_frame data I'll test the code itself ;-)
If you could think of any automated testcase for this that could be added under 'tests' that'd be nice (not necessarily)
thanks, jirka