lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 16 May 2016 09:58:10 -0700
From:	Kamal Mostafa <kamal@...onical.com>
To:	Philip Müller <philm@...jaro.org>
Cc:	kernel-team@...ts.ubuntu.com,
	"Linux-Kernel@...r. Kernel. Org" <linux-kernel@...r.kernel.org>
Subject: Re: [3.19.y-ckt stable] Linux 3.19.8-ckt21

On Thu, May 12, 2016 at 09:07:52PM +0200, Philip Müller wrote:
> Hi Kamal,
> 
> seems using a toolchain with gcc 6.1 creates funny new issues like this:
> 
> In file included from include/linux/compiler.h:54:0,
>                  from include/uapi/linux/stddef.h:1,
>                  from include/linux/stddef.h:4,
>                  from ./include/uapi/linux/posix_types.h:4,
>                  from include/uapi/linux/types.h:13,
>                  from include/linux/types.h:5,
>                  from include/linux/page-flags.h:8,
>                  from kernel/bounds.c:9:
> include/linux/compiler-gcc.h:106:30: fatal error: linux/compiler-gcc6.h:
> No such file or directory
>  #include gcc_header(__GNUC__)
>                               ^
> compilation terminated.
> 
> Are you thinking about supporting gcc 6.x series in future
> point-releases of yours?
> 
> kind regard
> Philip Müller
> -------------------------
> Manjaro Project Lead
> 
> -- 
> kernel-team mailing list
> kernel-team@...ts.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

On Thu, May 12, 2016 at 09:56:09PM +0200, Philip Müller wrote:
> Hi Kamal,
> 
> I found it and backported the upstream commit
> cb984d101b30eb7478d32df56a0023e4603cba7f to 3.19 series.
> 
> kind regards
> Philip Müller
> ---------------------
> Manjaro Project Lead
> 

Queued up for 3.19-stable.  Thanks very much for the backport, Philip.

 -Kamal


> diff -Npur linux-3.19.orig/include/linux/compiler-gcc3.h linux-3.19/include/linux/compiler-gcc3.h
> --- linux-3.19.orig/include/linux/compiler-gcc3.h	2015-02-09 03:54:22.000000000 +0100
> +++ linux-3.19/include/linux/compiler-gcc3.h	1970-01-01 01:00:00.000000000 +0100
> @@ -1,23 +0,0 @@
> -#ifndef __LINUX_COMPILER_H
> -#error "Please don't include <linux/compiler-gcc3.h> directly, include <linux/compiler.h> instead."
> -#endif
> -
> -#if GCC_VERSION < 30200
> -# error Sorry, your compiler is too old - please upgrade it.
> -#endif
> -
> -#if GCC_VERSION >= 30300
> -# define __used			__attribute__((__used__))
> -#else
> -# define __used			__attribute__((__unused__))
> -#endif
> -
> -#if GCC_VERSION >= 30400
> -#define __must_check		__attribute__((warn_unused_result))
> -#endif
> -
> -#ifdef CONFIG_GCOV_KERNEL
> -# if GCC_VERSION < 30400
> -#   error "GCOV profiling support for gcc versions below 3.4 not included"
> -# endif /* __GNUC_MINOR__ */
> -#endif /* CONFIG_GCOV_KERNEL */
> diff -Npur linux-3.19.orig/include/linux/compiler-gcc4.h linux-3.19/include/linux/compiler-gcc4.h
> --- linux-3.19.orig/include/linux/compiler-gcc4.h	2015-02-09 03:54:22.000000000 +0100
> +++ linux-3.19/include/linux/compiler-gcc4.h	1970-01-01 01:00:00.000000000 +0100
> @@ -1,87 +0,0 @@
> -#ifndef __LINUX_COMPILER_H
> -#error "Please don't include <linux/compiler-gcc4.h> directly, include <linux/compiler.h> instead."
> -#endif
> -
> -/* GCC 4.1.[01] miscompiles __weak */
> -#ifdef __KERNEL__
> -# if GCC_VERSION >= 40100 &&  GCC_VERSION <= 40101
> -#  error Your version of gcc miscompiles the __weak directive
> -# endif
> -#endif
> -
> -#define __used			__attribute__((__used__))
> -#define __must_check 		__attribute__((warn_unused_result))
> -#define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
> -
> -#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
> -# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
> -#endif
> -
> -#if GCC_VERSION >= 40300
> -/* 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__ */
> -#endif /* GCC_VERSION >= 40300 */
> -
> -#if GCC_VERSION >= 40500
> -/*
> - * 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__))
> -
> -#endif /* GCC_VERSION >= 40500 */
> -
> -#if GCC_VERSION >= 40600
> -/*
> - * Tell the optimizer that something else uses this function or variable.
> - */
> -#define __visible __attribute__((externally_visible))
> -#endif
> -
> -/*
> - * 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.
> - *
> - * (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
> -#if GCC_VERSION >= 40400
> -#define __HAVE_BUILTIN_BSWAP32__
> -#define __HAVE_BUILTIN_BSWAP64__
> -#endif
> -#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600)
> -#define __HAVE_BUILTIN_BSWAP16__
> -#endif
> -#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
> diff -Npur linux-3.19.orig/include/linux/compiler-gcc5.h linux-3.19/include/linux/compiler-gcc5.h
> --- linux-3.19.orig/include/linux/compiler-gcc5.h	2015-02-09 03:54:22.000000000 +0100
> +++ linux-3.19/include/linux/compiler-gcc5.h	1970-01-01 01:00:00.000000000 +0100
> @@ -1,65 +0,0 @@
> -#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.
> - *
> - * (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 */
> diff -Npur linux-3.19.orig/include/linux/compiler-gcc.h linux-3.19/include/linux/compiler-gcc.h
> --- linux-3.19.orig/include/linux/compiler-gcc.h	2015-02-09 03:54:22.000000000 +0100
> +++ linux-3.19/include/linux/compiler-gcc.h	2016-05-12 21:45:08.660745926 +0200
> @@ -100,10 +100,122 @@
>  #define __maybe_unused			__attribute__((unused))
>  #define __always_unused			__attribute__((unused))
>  
> -#define __gcc_header(x) #x
> -#define _gcc_header(x) __gcc_header(linux/compiler-gcc##x.h)
> -#define gcc_header(x) _gcc_header(x)
> -#include gcc_header(__GNUC__)
> +/* gcc version specific checks */
> +
> +#if GCC_VERSION < 30200
> +# error Sorry, your compiler is too old - please upgrade it.
> +#endif
> +
> +#if GCC_VERSION < 30300
> +# define __used			__attribute__((__unused__))
> +#else
> +# define __used			__attribute__((__used__))
> +#endif
> +
> +#ifdef CONFIG_GCOV_KERNEL
> +# if GCC_VERSION < 30400
> +#   error "GCOV profiling support for gcc versions below 3.4 not included"
> +# endif /* __GNUC_MINOR__ */
> +#endif /* CONFIG_GCOV_KERNEL */
> +
> +#if GCC_VERSION >= 30400
> +#define __must_check		__attribute__((warn_unused_result))
> +#endif
> +
> +#if GCC_VERSION >= 40000
> +
> +/* GCC 4.1.[01] miscompiles __weak */
> +#ifdef __KERNEL__
> +# if GCC_VERSION >= 40100 &&  GCC_VERSION <= 40101
> +#  error Your version of gcc miscompiles the __weak directive
> +# endif
> +#endif
> +
> +#define __used			__attribute__((__used__))
> +#define __compiler_offsetof(a, b)					\
> +	__builtin_offsetof(a, b)
> +
> +#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
> +# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
> +#endif
> +
> +#if GCC_VERSION >= 40300
> +/* 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__ */
> +#endif /* GCC_VERSION >= 40300 */
> +
> +#if GCC_VERSION >= 40500
> +/*
> + * 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__))
> +
> +#endif /* GCC_VERSION >= 40500 */
> +
> +#if GCC_VERSION >= 40600
> +/*
> + * Tell the optimizer that something else uses this function or variable.
> + */
> +#define __visible	__attribute__((externally_visible))
> +#endif
> +
> +/*
> + * 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.
> + *
> + * (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
> +#if GCC_VERSION >= 40400
> +#define __HAVE_BUILTIN_BSWAP32__
> +#define __HAVE_BUILTIN_BSWAP64__
> +#endif
> +#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600)
> +#define __HAVE_BUILTIN_BSWAP16__
> +#endif
> +#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
> +
> +#if GCC_VERSION >= 50000
> +#define KASAN_ABI_VERSION 4
> +#elif GCC_VERSION >= 40902
> +#define KASAN_ABI_VERSION 3
> +#endif
> +
> +#endif	/* gcc version >= 40000 specific checks */
>  
>  #if !defined(__noclone)
>  #define __noclone	/* not needed */

> -- 
> kernel-team mailing list
> kernel-team@...ts.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team


Powered by blists - more mailing lists