Re: Patch "kernel: add support for gcc 5" has been added to the 3.17-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 23, 2014 at 10:13 PM,  <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> This is a note to let you know that I've just added the patch titled
>
>     kernel: add support for gcc 5
>
> to the 3.17-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>
> The filename of the patch is:
>      kernel-add-support-for-gcc-5.patch
> and it can be found in the queue-3.17 subdirectory.
>
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@xxxxxxxxxxxxxxx> know about it.
>
>
> From 71458cfc782eafe4b27656e078d379a34e472adf Mon Sep 17 00:00:00 2001
> From: Sasha Levin <sasha.levin@xxxxxxxxxx>
> Date: Mon, 13 Oct 2014 15:51:05 -0700
> Subject: kernel: add support for gcc 5
>
> From: Sasha Levin <sasha.levin@xxxxxxxxxx>
>
> commit 71458cfc782eafe4b27656e078d379a34e472adf upstream.
>
> We're missing include/linux/compiler-gcc5.h which is required now
> because gcc branched off to v5 in trunk.
>
> Just copy the relevant bits out of include/linux/compiler-gcc4.h,
> no new code is added as of now.
>
> This fixes a build error when using gcc 5.
>
> Signed-off-by: Sasha Levin <sasha.levin@xxxxxxxxxx>
> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>
> ---
>  include/linux/compiler-gcc5.h |   66 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 66 insertions(+)
>
> --- /dev/null
> +++ b/include/linux/compiler-gcc5.h
> @@ -0,0 +1,66 @@
> +#ifndef __LINUX_COMPILER_H
> +#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
> +#endif
> +
> +#define __used                         __attribute__((__used__))
> +#define __must_check                   __attribute__((warn_unused_result))
> +#define __compiler_offsetof(a, b)      __builtin_offsetof(a, b)
> +
> +/* Mark functions as cold. gcc will assume any path leading to a call
> +   to them will be unlikely.  This means a lot of manual unlikely()s
> +   are unnecessary now for any paths leading to the usual suspects
> +   like BUG(), printk(), panic() etc. [but let's keep them for now for
> +   older compilers]
> +
> +   Early snapshots of gcc 4.3 don't support this and we can't detect this
> +   in the preprocessor, but we can live with this because they're unreleased.
> +   Maketime probing would be overkill here.
> +
> +   gcc also has a __attribute__((__hot__)) to move hot functions into
> +   a special section, but I don't see any sense in this right now in
> +   the kernel context */
> +#define __cold                 __attribute__((__cold__))
> +
> +#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
> +
> +#ifndef __CHECKER__
> +# define __compiletime_warning(message) __attribute__((warning(message)))
> +# define __compiletime_error(message) __attribute__((error(message)))
> +#endif /* __CHECKER__ */
> +
> +/*
> + * Mark a position in code as unreachable.  This can be used to
> + * suppress control flow warnings after asm blocks that transfer
> + * control elsewhere.
> + *
> + * Early snapshots of gcc 4.5 don't support this and we can't detect
> + * this in the preprocessor, but we can live with this because they're
> + * unreleased.  Really, we need to have autoconf for the kernel.
> + */
> +#define unreachable() __builtin_unreachable()
> +
> +/* Mark a function definition as prohibited from being cloned. */
> +#define __noclone      __attribute__((__noclone__))
> +
> +/*
> + * Tell the optimizer that something else uses this function or variable.
> + */
> +#define __visible __attribute__((externally_visible))
> +
> +/*
> + * GCC 'asm goto' miscompiles certain code sequences:
> + *
> + *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
> + *
> + * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
> + * Fixed in GCC 4.8.2 and later versions.

It occurs to me that when I made this unconditionally use the asm("")
compiler barrier (commit a9f180345) that I failed to update the above
comment to reflect that the bug is still present even in 4.8.2+. The
#define below it is correct (still has the compiler barrier), but the
comment is misleading. I'll write up a patch.

> + *
> + * (asm goto is automatically volatile - the naming reflects this.)
> + */
> +#define asm_volatile_goto(x...)        do { asm goto(x); asm (""); } while (0)
> +
> +#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
> +#define __HAVE_BUILTIN_BSWAP32__
> +#define __HAVE_BUILTIN_BSWAP64__
> +#define __HAVE_BUILTIN_BSWAP16__
> +#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
>
>
> Patches currently in stable-queue which might be from sasha.levin@xxxxxxxxxx are
>
> queue-3.17/mm-balloon_compaction-redesign-ballooned-pages-management.patch
> queue-3.17/firmware_class-make-sure-fw-requests-contain-a-name.patch
> queue-3.17/kernel-add-support-for-gcc-5.patch
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]