perf symbols: Synthesize anonymous mmap events
PATCH 1/1 perf symbols: Synthesize anonymous mmap events
perf_event__synthesize_mmap_events does not create anonymous mmap events even though the kernel does. As a result an already running application with dynamically created code will not get profiled - all samples end up in the unknown bucket.
This patch skips any entries with '[' in the name to avoid adding events for special regions (eg the vsyscall page). All other executable mmaps are assumed to be anonymous and an event is synthesized.
---
tools/perf/util/event.c +5 -0
@@ -169,12 +169,17 @@ static int perf_event__synthesize_mmap_events(union perf_event *event,continue ; pbf += n +3 ;if (*pbf =='x' ) {/* vm_exec */ +char anonstr[] ="//anon\n" ;char *execname =strchr (bf,'/' );/* Catch VDSO */ if (execname ==NULL ) execname =strstr (bf,"[vdso]" ); +/* Catch anonymous mmaps */ +if ((execname ==NULL ) && !strstr (bf,"[" )) + execname = anonstr; +if (execname ==NULL )continue ;
Quoted 11 lines · Anton Blanchard
perf_event__synthesize_mmap_eventsdoes not create anonymous mmap events even though the kernel does. As a result an already running application with dynamically created code will not get profiled - all samples end up in the unknown bucket.This patch skips any entries with '[' in the name to avoid adding events for special regions (eg the vsyscall page). All other executable mmaps are assumed to be anonymous and an event is synthesized.
Signed-off-by Anton Blanchard <[email protected]>