diff options
| author | Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> | 2018-09-18 12:55:41 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-09-20 09:23:58 -0400 |
| commit | d124b44f09cab67fc6da4a4513417e3e54b01efc (patch) | |
| tree | da307dc4958e15a464a5134a5e99b1e9660c7ed1 /include/linux | |
| parent | 4b92e7fd76e94624e3d5ff56b3d6a5788c4a7ac8 (diff) | |
Compiler Attributes: naked was fixed in gcc 4.6
Commit 9c695203a7dd ("compiler-gcc.h: gcc-4.5 needs noclone
and noinline on __naked functions") added noinline and noclone
as a workaround for a gcc 4.5 bug, which was resolved in 4.6.0.
Since now the minimum gcc supported version is 4.6,
we can clean it up.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44290
and https://godbolt.org/z/h6NMIL
Fixes: 815f0ddb346c ("include/linux/compiler*.h: make compiler-*.h mutually exclusive")
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Eli Friedman <efriedma@codeaurora.org>
Cc: Christopher Li <sparse@chrisli.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Joe Perches <joe@perches.com>
Cc: Dominique Martinet <asmadeus@codewreck.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-sparse@vger.kernel.org
Tested-by: Stefan Agner <stefan@agner.ch>
Reviewed-by: Stefan Agner <stefan@agner.ch>
Reviewed-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/compiler-gcc.h | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index 763bbad1e258..25d3dd6b2702 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h | |||
| @@ -84,14 +84,8 @@ | |||
| 84 | * to trace naked functions because then mcount is called without | 84 | * to trace naked functions because then mcount is called without |
| 85 | * stack and frame pointer being set up and there is no chance to | 85 | * stack and frame pointer being set up and there is no chance to |
| 86 | * restore the lr register to the value before mcount was called. | 86 | * restore the lr register to the value before mcount was called. |
| 87 | * | ||
| 88 | * The asm() bodies of naked functions often depend on standard calling | ||
| 89 | * conventions, therefore they must be noinline and noclone. | ||
| 90 | * | ||
| 91 | * GCC 4.[56] currently fail to enforce this, so we must do so ourselves. | ||
| 92 | * See GCC PR44290. | ||
| 93 | */ | 87 | */ |
| 94 | #define __naked __attribute__((naked)) noinline __noclone notrace | 88 | #define __naked __attribute__((naked)) notrace |
| 95 | 89 | ||
| 96 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) | 90 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) |
| 97 | 91 | ||
