[PATCH] x86_64: Icecream has no way of detecting assembler-level includes
Icecream preprocesses c sources locally, and sends the result off to a remote host for compiling. It does not recognize includes at assembler level. The fix is to put the assemberincludes an a separate .s file, which will always be assembled locally. Signed-off-by: Andreas Gruenbacher <agruen@suse.de> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
f8d311939f
commit
2275cfa8bc
@@ -4,14 +4,14 @@
|
|||||||
|
|
||||||
obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_ioctl.o \
|
obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_ioctl.o \
|
||||||
ia32_signal.o tls32.o \
|
ia32_signal.o tls32.o \
|
||||||
ia32_binfmt.o fpu32.o ptrace32.o syscall32.o
|
ia32_binfmt.o fpu32.o ptrace32.o syscall32.o syscall32_syscall.o
|
||||||
|
|
||||||
sysv-$(CONFIG_SYSVIPC) := ipc32.o
|
sysv-$(CONFIG_SYSVIPC) := ipc32.o
|
||||||
obj-$(CONFIG_IA32_EMULATION) += $(sysv-y)
|
obj-$(CONFIG_IA32_EMULATION) += $(sysv-y)
|
||||||
|
|
||||||
obj-$(CONFIG_IA32_AOUT) += ia32_aout.o
|
obj-$(CONFIG_IA32_AOUT) += ia32_aout.o
|
||||||
|
|
||||||
$(obj)/syscall32.o: $(src)/syscall32.c \
|
$(obj)/syscall32_syscall.o: \
|
||||||
$(foreach F,sysenter syscall,$(obj)/vsyscall-$F.so)
|
$(foreach F,sysenter syscall,$(obj)/vsyscall-$F.so)
|
||||||
|
|
||||||
# Teach kbuild about targets
|
# Teach kbuild about targets
|
||||||
|
@@ -14,16 +14,6 @@
|
|||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
#include <asm/ia32_unistd.h>
|
#include <asm/ia32_unistd.h>
|
||||||
|
|
||||||
/* 32bit VDSOs mapped into user space. */
|
|
||||||
asm(".section \".init.data\",\"aw\"\n"
|
|
||||||
"syscall32_syscall:\n"
|
|
||||||
".incbin \"arch/x86_64/ia32/vsyscall-syscall.so\"\n"
|
|
||||||
"syscall32_syscall_end:\n"
|
|
||||||
"syscall32_sysenter:\n"
|
|
||||||
".incbin \"arch/x86_64/ia32/vsyscall-sysenter.so\"\n"
|
|
||||||
"syscall32_sysenter_end:\n"
|
|
||||||
".previous");
|
|
||||||
|
|
||||||
extern unsigned char syscall32_syscall[], syscall32_syscall_end[];
|
extern unsigned char syscall32_syscall[], syscall32_syscall_end[];
|
||||||
extern unsigned char syscall32_sysenter[], syscall32_sysenter_end[];
|
extern unsigned char syscall32_sysenter[], syscall32_sysenter_end[];
|
||||||
extern int sysctl_vsyscall32;
|
extern int sysctl_vsyscall32;
|
||||||
|
17
arch/x86_64/ia32/syscall32_syscall.S
Normal file
17
arch/x86_64/ia32/syscall32_syscall.S
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
/* 32bit VDSOs mapped into user space. */
|
||||||
|
|
||||||
|
.section ".init.data","aw"
|
||||||
|
|
||||||
|
.globl syscall32_syscall
|
||||||
|
.globl syscall32_syscall_end
|
||||||
|
|
||||||
|
syscall32_syscall:
|
||||||
|
.incbin "arch/x86_64/ia32/vsyscall-syscall.so"
|
||||||
|
syscall32_syscall_end:
|
||||||
|
|
||||||
|
.globl syscall32_sysenter
|
||||||
|
.globl syscall32_sysenter_end
|
||||||
|
|
||||||
|
syscall32_sysenter:
|
||||||
|
.incbin "arch/x86_64/ia32/vsyscall-sysenter.so"
|
||||||
|
syscall32_sysenter_end:
|
Reference in New Issue
Block a user