Re: X86 GIT GCC 5 compilation warning

From: Enrico Mioso
Date: Tue Jun 16 2015 - 10:09:29 EST


Hi Boris.
thank you for the tested tag.

I can confirm you that your patch fixed the warning.
>From my kernel compilation output:
...
UPD kernel/config_data.h
CC [M] kernel/configs.o
LD arch/x86/kernel/cpu/built-in.o
AS arch/x86/kernel/head_32.o
LD arch/x86/kernel/built-in.o
LD arch/x86/built-in.o
CC [M] sound/hda/hdac_device.o

I didn't boot-test it yet. On this system it will take a while to compile even due to high load conditions. When compilation it's over I'll kexec to this new kernel and let you know if there are any problems.
Thank you again,
Enrico Mioso

On Tue, 16 Jun 2015, Borislav Petkov wrote:

==Date: Tue, 16 Jun 2015 15:58:01
==From: Borislav Petkov <bp@xxxxxxxxx>
==To: Enrico Mioso <mrkiko.rs@xxxxxxxxx>
==Cc: Michael Matz <matz@xxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
== x86-ml <x86@xxxxxxxxxx>
==Subject: Re: X86 GIT GCC 5 compilation warning
==
==On Tue, Jun 16, 2015 at 02:47:02PM +0200, Michael Matz wrote:
==> Yeah, building like so on i686 will produce an assembler that warns on
==> "1<<32".
==
==Enrico, try this.
==
==---
==From: Borislav Petkov <bp@xxxxxxx>
==Date: Tue, 16 Jun 2015 15:43:27 +0200
==Subject: [PATCH] x86/head_32: Fix overflow warning with 32-bit binutils
==
==When building the kernel with 32-bit binutils built with support only
==for the i386 target, we get the following warning:
==
== arch/x86/kernel/head_32.S:66: Warning: shift count out of range (32 is not between 0 and 31)
==
==The problem is that in that case, binutils' internal type representation
==is 32-bit wide and the shift range overflows.
==
==In order to fix this, manipulate the shift expression which creates the
==4GiB constant to not overflow the shift count.
==
==Reported-by: Enrico Mioso <mrkiko.rs@xxxxxxxxx>
==Suggested-by: Michael Matz <matz@xxxxxxx>
==Signed-off-by: Borislav Petkov <bp@xxxxxxx>
==---
== arch/x86/kernel/head_32.S | 4 ++--
== 1 file changed, 2 insertions(+), 2 deletions(-)
==
==diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
==index 53eeb226657c..c601d1de5ae5 100644
==--- a/arch/x86/kernel/head_32.S
==+++ b/arch/x86/kernel/head_32.S
==@@ -63,8 +63,8 @@
== #endif
==
== /* Number of possible pages in the lowmem region */
==-LOWMEM_PAGES = (((1<<32) - __PAGE_OFFSET) >> PAGE_SHIFT)
==-
==+LOWMEM_PAGES = (((2<<31) - __PAGE_OFFSET) >> PAGE_SHIFT)
==+
== /* Enough space to fit pagetables for the low memory linear map */
== MAPPING_BEYOND_END = PAGE_TABLE_SIZE(LOWMEM_PAGES) << PAGE_SHIFT
==
==--
==2.3.5
==
==--
==Regards/Gruss,
== Boris.
==
==ECO tip #101: Trim your mails when you reply.
==--
==
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/