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