Andy,
Your commit 258801563b ("x86/vdso: Change the PER_CPU segment to use
struct desc_struct") in -tip breaks old compilers that don't support
initialization of anonymous structures (I think pre-4.6):
FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> cat anon.c
struct bar {
struct {
int i;
};
};
main()
{
struct bar a = {.i = 0};
}
FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> gcc --version|head -1
gcc (GCC) 4.4.4 20100503 (Red Hat 4.4.4-2)
FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> gcc anon.c
anon.c: In function ?main?:
anon.c:9: error: unknown field ?i? specified in initializer
FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap>
but
build@build-mk2 bootstrap]$ gcc --version|head -1
gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2)
[build@build-mk2 bootstrap]$ gcc anon.c
[build@build-mk2 bootstrap]$
-boris
On Oct 31, 2014 10:58 AM, "Boris Ostrovsky" <[email protected]> wrote:
>
> Andy,
>
>
> Your commit 258801563b ("x86/vdso: Change the PER_CPU segment to use struct desc_struct") in -tip breaks old compilers that don't support initialization of anonymous structures (I think pre-4.6):
I bet it breaks clang, too. Tip people, can you add:
http://ozlabs.org/~akpm/mmots/broken-out/arch-x86-vdso-vmac-fix-build-with-older-gcc.patch
Thanks!
>
> FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> cat anon.c
> struct bar {
> struct {
> int i;
> };
> };
>
> main()
> {
> struct bar a = {.i = 0};
> }
>
> FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> gcc --version|head -1
> gcc (GCC) 4.4.4 20100503 (Red Hat 4.4.4-2)
> FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap> gcc anon.c
> anon.c: In function ‘main’:
> anon.c:9: error: unknown field ‘i’ specified in initializer
> FC-64 <build@build-mk2:~/xtt-x86_64/bootstrap>
>
>
> but
>
> build@build-mk2 bootstrap]$ gcc --version|head -1
> gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2)
> [build@build-mk2 bootstrap]$ gcc anon.c
> [build@build-mk2 bootstrap]$
>
>
> -boris