tools: Rename __fallthrough to fallthrough
authorLiam Howlett <liam.howlett@oracle.com>
Fri, 25 Nov 2022 15:50:16 +0000 (15:50 +0000)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 7 Apr 2023 00:41:00 +0000 (21:41 -0300)
Rename the fallthrough attribute to better align with the kernel
version.  Copy the definition from include/linux/compiler_attributes.h
including the #else clause.  Adding the #else clause allows the tools
compiler.h header to drop the check for a definition entirely and keeps
both definitions together.

Change any __fallthrough statements to fallthrough anywhere it was used
within perf.

This allows other tools to use the same key word as the kernel.

Committer notes:

Did some missing conversions to:

  builtin-list.c

Also included gtk.h before the 'fallthrough' definition in:

  tools/perf/ui/gtk/hists.c
  tools/perf/ui/gtk/helpline.c
  tools/perf/ui/gtk/browser.c

As it is the arg name for a macro in glib.h:

  /var/home/acme/git/perf-tools-next/tools/include/linux/compiler-gcc.h:16:55: error: missing binary operator before token "("
     16 | # define fallthrough                    __attribute__((__fallthrough__))
        |                                                       ^
  /usr/include/glib-2.0/glib/gmacros.h:637:28: note: in expansion of macro â€˜fallthrough’
    637 | #if g_macro__has_attribute(fallthrough)

Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Liam Howlett <Liam.Howlett@oracle.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Miguel Ojeda <ojeda@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Tom Rix <trix@redhat.com>
Cc: linux-sparse@vger.kernel.org <linux-sparse@vger.kernel.org>
Cc: llvm@lists.linux.dev <llvm@lists.linux.dev>
Link: https://lore.kernel.org/r/20221125154947.2163498-1-Liam.Howlett@oracle.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
15 files changed:
tools/include/linux/compiler-gcc.h
tools/include/linux/compiler.h
tools/perf/builtin-list.c
tools/perf/builtin-probe.c
tools/perf/builtin-stat.c
tools/perf/builtin-top.c
tools/perf/ui/gtk/browser.c
tools/perf/ui/gtk/helpline.c
tools/perf/ui/gtk/hists.c
tools/perf/util/callchain.c
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c
tools/perf/util/intel-pt-decoder/intel-pt-pkt-decoder.c
tools/perf/util/ordered-events.c
tools/perf/util/strfilter.c
tools/perf/util/string.c

index 8816f06..62e7c90 100644 (file)
                     + __GNUC_PATCHLEVEL__)
 #endif
 
-#if GCC_VERSION >= 70000 && !defined(__CHECKER__)
-# define __fallthrough __attribute__ ((fallthrough))
+#if __has_attribute(__fallthrough__)
+# define fallthrough                    __attribute__((__fallthrough__))
+#else
+# define fallthrough                    do {} while (0)  /* fallthrough */
 #endif
 
 #if __has_attribute(__error__)
index 90ba44a..9d36c8c 100644 (file)
@@ -186,10 +186,6 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
 })
 
 
-#ifndef __fallthrough
-# define __fallthrough
-#endif
-
 /* Indirect macros required for expanded argument pasting, eg. __LINE__. */
 #define ___PASTE(a, b) a##b
 #define __PASTE(a, b) ___PASTE(a, b)
index 76e1d31..29f09ce 100644 (file)
@@ -278,10 +278,10 @@ static void fix_escape_printf(struct strbuf *buf, const char *fmt, ...)
                                                strbuf_addstr(buf, "\\n");
                                                break;
                                        case '\\':
-                                               __fallthrough;
+                                               fallthrough;
                                        case '\"':
                                                strbuf_addch(buf, '\\');
-                                               __fallthrough;
+                                               fallthrough;
                                        default:
                                                strbuf_addch(buf, s[s_pos]);
                                                break;
index e72f6ce..4df05b9 100644 (file)
@@ -715,7 +715,7 @@ __cmd_probe(int argc, const char **argv)
                        pr_err("  Error: --bootconfig doesn't support uprobes.\n");
                        return -EINVAL;
                }
-               __fallthrough;
+               fallthrough;
        case 'a':
 
                /* Ensure the last given target is used */
index 7ef565a..38133af 100644 (file)
@@ -549,7 +549,7 @@ static void process_evlist(struct evlist *evlist, unsigned int interval)
        if (evlist__ctlfd_process(evlist, &cmd) > 0) {
                switch (cmd) {
                case EVLIST_CTL_CMD_ENABLE:
-                       __fallthrough;
+                       fallthrough;
                case EVLIST_CTL_CMD_DISABLE:
                        if (interval)
                                process_interval();
index b803af4..3162bad 100644 (file)
@@ -709,7 +709,7 @@ repeat:
                case -1:
                        if (errno == EINTR)
                                continue;
-                       __fallthrough;
+                       fallthrough;
                default:
                        c = getc(stdin);
                        tcsetattr(0, TCSAFLUSH, &save);
index 8f3e43d..d2dadf3 100644 (file)
@@ -1,9 +1,9 @@
 // SPDX-License-Identifier: GPL-2.0
+#include "gtk.h"
 #include "../evsel.h"
 #include "../sort.h"
 #include "../hist.h"
 #include "../helpline.h"
-#include "gtk.h"
 
 #include <signal.h>
 
index e40a006..8ea9589 100644 (file)
@@ -1,9 +1,9 @@
 // SPDX-License-Identifier: GPL-2.0
+#include "gtk.h"
 #include <stdio.h>
 #include <string.h>
 #include <linux/kernel.h>
 
-#include "gtk.h"
 #include "../ui.h"
 #include "../helpline.h"
 
index c83be2d..bae21f3 100644 (file)
@@ -1,4 +1,5 @@
 // SPDX-License-Identifier: GPL-2.0
+#include "gtk.h"
 #include "../evlist.h"
 #include "../callchain.h"
 #include "../evsel.h"
@@ -6,7 +7,6 @@
 #include "../hist.h"
 #include "../helpline.h"
 #include "../string2.h"
-#include "gtk.h"
 #include <signal.h>
 #include <stdlib.h>
 #include <linux/string.h>
index 9e9c39d..8e7c298 100644 (file)
@@ -724,7 +724,7 @@ static enum match_result match_chain(struct callchain_cursor_node *node,
                if (match != MATCH_ERROR)
                        break;
                /* otherwise fall-back to symbol-based comparison below */
-               __fallthrough;
+               fallthrough;
        case CCKEY_FUNCTION:
                if (node->ms.sym && cnode->ms.sym) {
                        /*
@@ -745,7 +745,7 @@ static enum match_result match_chain(struct callchain_cursor_node *node,
                        }
                }
                /* otherwise fall-back to IP-based comparison below */
-               __fallthrough;
+               fallthrough;
        case CCKEY_ADDRESS:
        default:
                match = match_chain_dso_addresses(cnode->ms.map, cnode->ip, node->ms.map, node->ip);
index 7145c58..b450178 100644 (file)
@@ -3546,7 +3546,7 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
                switch (decoder->packet.type) {
                case INTEL_PT_TIP_PGD:
                        decoder->continuous_period = false;
-                       __fallthrough;
+                       fallthrough;
                case INTEL_PT_TIP_PGE:
                case INTEL_PT_TIP:
                case INTEL_PT_PTWRITE:
@@ -3616,7 +3616,7 @@ static int intel_pt_walk_psb(struct intel_pt_decoder *decoder)
                        decoder->pge = false;
                        decoder->continuous_period = false;
                        intel_pt_clear_tx_flags(decoder);
-                       __fallthrough;
+                       fallthrough;
 
                case INTEL_PT_TNT:
                        decoder->have_tma = false;
@@ -3980,7 +3980,7 @@ const struct intel_pt_state *intel_pt_decode(struct intel_pt_decoder *decoder)
                        decoder->have_last_ip = false;
                        decoder->last_ip = 0;
                        decoder->ip = 0;
-                       __fallthrough;
+                       fallthrough;
                case INTEL_PT_STATE_ERR_RESYNC:
                        err = intel_pt_sync_ip(decoder);
                        break;
index 18f97f4..af97106 100644 (file)
@@ -730,7 +730,7 @@ int intel_pt_pkt_desc(const struct intel_pt_pkt *packet, char *buf,
        case INTEL_PT_FUP:
                if (!(packet->count))
                        return snprintf(buf, buf_len, "%s no ip", name);
-               __fallthrough;
+               fallthrough;
        case INTEL_PT_CYC:
        case INTEL_PT_VMCS:
        case INTEL_PT_MTC:
index b887dfe..8c62611 100644 (file)
@@ -284,7 +284,7 @@ static int __ordered_events__flush(struct ordered_events *oe, enum oe_flush how,
        switch (how) {
        case OE_FLUSH__FINAL:
                show_progress = true;
-               __fallthrough;
+               fallthrough;
        case OE_FLUSH__TOP:
                oe->next_flush = ULLONG_MAX;
                break;
index 78aa4c3..02807b9 100644 (file)
@@ -274,7 +274,7 @@ static int strfilter_node__sprint(struct strfilter_node *node, char *buf)
                len = strfilter_node__sprint_pt(node->l, buf);
                if (len < 0)
                        return len;
-               __fallthrough;
+               fallthrough;
        case '!':
                if (buf) {
                        *(buf + len++) = *node->p;
index 4f12a96..cf05b0b 100644 (file)
@@ -35,7 +35,7 @@ s64 perf_atoll(const char *str)
                        if (*p)
                                goto out_err;
 
-                       __fallthrough;
+                       fallthrough;
                case '\0':
                        return length;
                default: