>>> On 30.04.18 at 18:23, <boris.ostrovsky@xxxxxxxxxx> wrote: > Latest binutils release (2.29.1) will no longer allow proper computation > of GDT entries on 32-bits, with warning: > > arch/x86/xen/xen-pvh.S: Assembler messages: > arch/x86/xen/xen-pvh.S:150: Warning: shift count out of range (32 is not between 0 and 31) > arch/x86/xen/xen-pvh.S:150: Warning: shift count out of range (40 is not between 0 and 31) > arch/x86/xen/xen-pvh.S:150: Warning: shift count out of range (32 is not between 0 and 31) > arch/x86/xen/xen-pvh.S:152: Warning: shift count out of range (32 is not between 0 and 31) > arch/x86/xen/xen-pvh.S:152: Warning: shift count out of range (40 is not between 0 and 31) > arch/x86/xen/xen-pvh.S:152: Warning: shift count out of range (32 is not between 0 and 31) I think this is a mis-configured binutils build - even if targeting 32-bit only, it should allow 64-bit arithmetic (i.e. be configured with --enable-64-bit-bfd). Note how, for example, this .long 1 << 32, 0x10000 * 0x10000 .quad 1 << 32, 0x10000 * 0x10000 assembles consistently with a warning on _both_ values on the first line with what I'd call a properly configured binutils build, but errors only on the shift expressions on each line for an (imo) improperly configured one. The only viable alternative would imo be to simply disallow .quad without --enable-64-bit-bfd, but I guess that would break a number of consumers. In any event I'd like to suggest to drop this patch. Jan