linux/arch/x86
Jiri Slaby df33f2aeb8 x86/vdso: Fix the build on GCC5
commit e893286918 upstream.

On gcc5 the kernel does not link:

  ld: .eh_frame_hdr table[4] FDE at 0000000000000648 overlaps table[5] FDE at 0000000000000670.

Because prior GCC versions always emitted NOPs on ALIGN directives, but
gcc5 started omitting them.

.LSTARTFDEDLSI1 says:

        /* HACK: The dwarf2 unwind routines will subtract 1 from the
           return address to get an address in the middle of the
           presumed call instruction.  Since we didn't get here via
           a call, we need to include the nop before the real start
           to make up for it.  */
        .long .LSTART_sigreturn-1-.     /* PC-relative start address */

But commit 69d0627a7f ("x86 vDSO: reorder vdso32 code") from 2.6.25
replaced .org __kernel_vsyscall+32,0x90 by ALIGN right before
__kernel_sigreturn.

Of course, ALIGN need not generate any NOP in there. Esp. gcc5 collapses
vclock_gettime.o and int80.o together with no generated NOPs as "ALIGN".

So fix this by adding to that point at least a single NOP and make the
function ALIGN possibly with more NOPs then.

Kudos for reporting and diagnosing should go to Richard.

Reported-by: Richard Biener <rguenther@suse.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Acked-by: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1425543211-12542-1-git-send-email-jslaby@suse.cz
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2015-03-26 15:06:58 +01:00
..
boot x86, build: replace Perl script with Shell script 2015-02-05 22:35:48 -08:00
configs x86, defconfig: Add DEVTMPFS and DEVTMPFS_MOUNT to *86*_defconfig 2013-11-04 20:01:55 -08:00
crypto crypto: aesni - fix memory usage in GCM decryption 2015-03-26 15:06:57 +01:00
ia32 x86_64, entry: Fix out of bounds read on sysenter 2014-11-14 08:59:47 -08:00
include x86/fpu: Drop_fpu() should not assume that tsk equals current 2015-03-26 15:06:58 +01:00
kernel x86/fpu: Avoid math_state_restore() without used_math() in __restore_xstate_sig() 2015-03-26 15:06:58 +01:00
kvm KVM: emulate: fix CMPXCHG8B on 32-bit hosts 2015-03-18 13:31:28 +01:00
lguest x86, asmlinkage, lguest: Fix C functions used by inline assembler 2014-01-29 22:17:17 -08:00
lib x86, hash: Fix build failure with older binutils 2014-05-06 07:59:26 -07:00
math-emu x86: math-emu: Drop already-disabled print of build date 2014-01-27 23:14:12 +01:00
mm x86, mm/ASLR: Fix stack randomization on 64-bit systems 2015-03-06 14:43:32 -08:00
net net: filter: x86: fix JIT address randomization 2014-05-31 13:20:38 -07:00
oprofile perf: Fix arch_perf_out_copy_user default 2013-11-06 12:34:25 +01:00
pci PCI: Add NEC variants to Stratus ftServer PCIe DMI check 2015-02-11 14:54:46 +08:00
platform x86/efi: Make efi virtual runtime map passing more robust 2014-04-14 06:50:02 -07:00
power x86, asmlinkage, power: Make various symbols used by the suspend asm code visible 2013-08-06 14:21:03 -07:00
realmode Merge commit 'f4bcd8ccdd' into x86/build 2014-01-29 09:07:00 -08:00
syscalls x86, x32: Use compat shims for io_{setup,submit} 2014-06-30 20:12:00 -07:00
tools x86, build: replace Perl script with Shell script 2015-02-05 22:35:48 -08:00
um x86, um: actually mark system call tables readonly 2015-01-27 08:18:58 -08:00
vdso x86/vdso: Fix the build on GCC5 2015-03-26 15:06:58 +01:00
video x86: Use vga_default_device() when determining whether an fb is primary 2012-04-24 09:50:17 +01:00
xen x86/xen: don't copy bogus duplicate entries into kernel page tables 2014-10-05 14:52:17 -07:00
.gitignore x86/kprobes: Add arch/x86/tools/insn_sanity to .gitignore 2012-01-16 08:21:59 +01:00
Kbuild x86, realmode: realmode.bin infrastructure 2012-05-08 11:41:48 -07:00
Kconfig x86/apic: Re-enable PCI_MSI support for non-SMP X86_32 2015-01-29 17:40:50 -08:00
Kconfig.cpu x86: Remove CONFIG_X86_OOSTORE 2014-03-11 10:16:18 -07:00
Kconfig.debug x86: Disable CONFIG_X86_DECODER_SELFTEST in allmod/allyesconfigs 2014-02-05 14:10:30 -08:00
Makefile x86-64, build: Fix stack protector Makefile breakage with 32-bit userland 2014-05-13 13:32:58 +02:00
Makefile.um um: fix linker script generation 2012-04-09 13:59:00 -04:00
Makefile_32.cpu x86, 386 removal: Remove CONFIG_M386 from Kconfig 2012-11-29 13:23:01 -08:00