s390: don't build vdso32 with clang
clang does not support 31 bit object files on s390, so skip the 32-bit vdso here, and only build it when using gcc to compile the kernel. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Родитель
c1afcaec2a
Коммит
96ca7674ea
|
@ -388,6 +388,9 @@ config COMPAT
|
||||||
(and some other stuff like libraries and such) is needed for
|
(and some other stuff like libraries and such) is needed for
|
||||||
executing 31 bit applications. It is safe to say "Y".
|
executing 31 bit applications. It is safe to say "Y".
|
||||||
|
|
||||||
|
config COMPAT_VDSO
|
||||||
|
def_bool COMPAT && !CC_IS_CLANG
|
||||||
|
|
||||||
config SYSVIPC_COMPAT
|
config SYSVIPC_COMPAT
|
||||||
def_bool y if COMPAT && SYSVIPC
|
def_bool y if COMPAT && SYSVIPC
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ obj-$(CONFIG_TRACEPOINTS) += trace.o
|
||||||
|
|
||||||
# vdso
|
# vdso
|
||||||
obj-y += vdso64/
|
obj-y += vdso64/
|
||||||
obj-$(CONFIG_COMPAT) += vdso32/
|
obj-$(CONFIG_COMPAT_VDSO) += vdso32/
|
||||||
|
|
||||||
chkbss := head64.o early_nobss.o
|
chkbss := head64.o early_nobss.o
|
||||||
include $(srctree)/arch/s390/scripts/Makefile.chkbss
|
include $(srctree)/arch/s390/scripts/Makefile.chkbss
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#include <asm/vdso.h>
|
#include <asm/vdso.h>
|
||||||
#include <asm/facility.h>
|
#include <asm/facility.h>
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT_VDSO
|
||||||
extern char vdso32_start, vdso32_end;
|
extern char vdso32_start, vdso32_end;
|
||||||
static void *vdso32_kbase = &vdso32_start;
|
static void *vdso32_kbase = &vdso32_start;
|
||||||
static unsigned int vdso32_pages;
|
static unsigned int vdso32_pages;
|
||||||
|
@ -55,7 +55,7 @@ static vm_fault_t vdso_fault(const struct vm_special_mapping *sm,
|
||||||
|
|
||||||
vdso_pagelist = vdso64_pagelist;
|
vdso_pagelist = vdso64_pagelist;
|
||||||
vdso_pages = vdso64_pages;
|
vdso_pages = vdso64_pages;
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT_VDSO
|
||||||
if (vma->vm_mm->context.compat_mm) {
|
if (vma->vm_mm->context.compat_mm) {
|
||||||
vdso_pagelist = vdso32_pagelist;
|
vdso_pagelist = vdso32_pagelist;
|
||||||
vdso_pages = vdso32_pages;
|
vdso_pages = vdso32_pages;
|
||||||
|
@ -76,7 +76,7 @@ static int vdso_mremap(const struct vm_special_mapping *sm,
|
||||||
unsigned long vdso_pages;
|
unsigned long vdso_pages;
|
||||||
|
|
||||||
vdso_pages = vdso64_pages;
|
vdso_pages = vdso64_pages;
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT_VDSO
|
||||||
if (vma->vm_mm->context.compat_mm)
|
if (vma->vm_mm->context.compat_mm)
|
||||||
vdso_pages = vdso32_pages;
|
vdso_pages = vdso32_pages;
|
||||||
#endif
|
#endif
|
||||||
|
@ -223,7 +223,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
vdso_pages = vdso64_pages;
|
vdso_pages = vdso64_pages;
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT_VDSO
|
||||||
mm->context.compat_mm = is_compat_task();
|
mm->context.compat_mm = is_compat_task();
|
||||||
if (mm->context.compat_mm)
|
if (mm->context.compat_mm)
|
||||||
vdso_pages = vdso32_pages;
|
vdso_pages = vdso32_pages;
|
||||||
|
@ -280,7 +280,7 @@ static int __init vdso_init(void)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
vdso_init_data(vdso_data);
|
vdso_init_data(vdso_data);
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT_VDSO
|
||||||
/* Calculate the size of the 32 bit vDSO */
|
/* Calculate the size of the 32 bit vDSO */
|
||||||
vdso32_pages = ((&vdso32_end - &vdso32_start
|
vdso32_pages = ((&vdso32_end - &vdso32_start
|
||||||
+ PAGE_SIZE - 1) >> PAGE_SHIFT) + 1;
|
+ PAGE_SIZE - 1) >> PAGE_SHIFT) + 1;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче