sample__fprintf_sym(sample, al, 0,
                            EVSEL__PRINT_SYM | EVSEL__PRINT_ONELINE |
-                           EVSEL__PRINT_CALLCHAIN_ARROW,
+                           EVSEL__PRINT_CALLCHAIN_ARROW |
+                           EVSEL__PRINT_SKIP_IGNORED,
                            &callchain_cursor, stdout);
 
 out:
 
 #define EVSEL__PRINT_SRCLINE           (1<<5)
 #define EVSEL__PRINT_UNKNOWN_AS_ADDR   (1<<6)
 #define EVSEL__PRINT_CALLCHAIN_ARROW   (1<<7)
+#define EVSEL__PRINT_SKIP_IGNORED      (1<<8)
 
 struct callchain_cursor;
 
 
        int print_srcline = print_opts & EVSEL__PRINT_SRCLINE;
        int print_unknown_as_addr = print_opts & EVSEL__PRINT_UNKNOWN_AS_ADDR;
        int print_arrow = print_opts & EVSEL__PRINT_CALLCHAIN_ARROW;
+       int print_skip_ignored = print_opts & EVSEL__PRINT_SKIP_IGNORED;
        char s = print_oneline ? ' ' : '\t';
        bool first = true;
 
                        if (!node)
                                break;
 
+                       if (node->sym && node->sym->ignore && print_skip_ignored)
+                               goto next;
+
                        printed += fprintf(fp, "%-*.*s", left_alignment, left_alignment, " ");
 
                        if (print_arrow && !first)
                        if (!print_oneline)
                                printed += fprintf(fp, "\n");
 
-                       callchain_cursor_advance(cursor);
                        first = false;
+next:
+                       callchain_cursor_advance(cursor);
                }
        }