perf annotate browser: Handle retq instructions
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 20 Apr 2012 18:57:15 +0000 (15:57 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 20 Apr 2012 18:57:15 +0000 (15:57 -0300)
By just returning to the previous function being annotated or to the top
main screen when popping out the base of the annotation stack.

Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-x1dlc4d5aukj72g45o15s75k@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/ui/browsers/annotate.c

index d0c606ecda05af49d290dd2a81429ef4a86297b5..38f4c6f821c28a175ef211fcb2fedd0cf627bc63 100644 (file)
@@ -599,10 +599,15 @@ show_help:
                                ui_helpline__puts("Huh? No selection. Report to linux-kernel@vger.kernel.org");
                        else if (self->selection->offset == -1)
                                ui_helpline__puts("Actions are only available for assembly lines.");
-                       else if (!self->selection->ins ||
-                                !(annotate_browser__jump(self) ||
-                                  annotate_browser__callq(self, evidx, timer, arg, delay_secs)))
-                               ui_helpline__puts("Actions are only available for the 'callq' and jump instructions.");
+                       else if (!self->selection->ins) {
+                               if (strcmp(self->selection->name, "retq"))
+                                       goto show_sup_ins;
+                               goto out;
+                       } else if (!(annotate_browser__jump(self) ||
+                                    annotate_browser__callq(self, evidx, timer, arg, delay_secs))) {
+show_sup_ins:
+                               ui_helpline__puts("Actions are only available for 'callq', 'retq' & jump instructions.");
+                       }
                        continue;
                case K_LEFT:
                case K_ESC: