I bite my teeth on this ...
I need to do profiling on the ARM board and you need to view call schedules. I tried using OProfile, Kernel perf and Google productivity tools. All work fine, but do not display any call schedule information.
This led me to conclude that I was not compiling my code correctly.
When compiling C ++ code, I use the following flags:
Specifically for Arch:
-march=armv7-a -mtune=cortex-a8 -mfloat-abi=hard -mfpu=vfpv3
General:
-fexceptions -fno-strict-aliasing -D_REENTRANT -Wall -Wextra
Debugging (with optimization):
-O2 -g -fno-omit-frame-pointer
I searched a lot on Google and found some related topics:
- libunwind?
- dwarf
- (asynchronous-) entertainment tables
-mapcs-frame
However, I do not quite understand how all this is connected. Any tips on how to make call schedules work?
Note (due to Rian's answer): I am interested to know if and why some methods take longer (in relation to others) on ARM than x86-64. This will not help to do it on another platform (although my code is compiled for both, and for graphs on x86-64).
source share