Unverified Commit 07015d7a authored by Paul Burton's avatar Paul Burton
Browse files

MIPS: Disable VDSO time functionality on microMIPS



A check we're about to add to pick up on function calls that depend on
bogus use of the GOT in the VDSO picked up on instances of such function
calls in microMIPS builds. Since the code appears genuinely problematic,
and given the relatively small amount of use & testing that microMIPS
sees, go ahead & disable the VDSO for microMIPS builds.

Signed-off-by: default avatarPaul Burton <paulburton@kernel.org>
parent d3f703c4
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -52,6 +52,8 @@ endif

CFLAGS_REMOVE_vgettimeofday.o = -pg

DISABLE_VDSO := n

#
# For the pre-R6 code in arch/mips/vdso/vdso.h for locating
# the base address of VDSO, the linker will emit a R_MIPS_PC32
@@ -65,10 +67,23 @@ CFLAGS_REMOVE_vgettimeofday.o = -pg
ifndef CONFIG_CPU_MIPSR6
  ifeq ($(call ld-ifversion, -lt, 225000000, y),y)
    $(warning MIPS VDSO requires binutils >= 2.25)
    DISABLE_VDSO := y
  endif
endif

#
# GCC (at least up to version 9.2) appears to emit function calls that make use
# of the GOT when targeting microMIPS, which we can't use in the VDSO due to
# the lack of relocations. As such, we disable the VDSO for microMIPS builds.
#
ifdef CONFIG_CPU_MICROMIPS
  DISABLE_VDSO := y
endif

ifeq ($(DISABLE_VDSO),y)
  obj-vdso-y := $(filter-out vgettimeofday.o, $(obj-vdso-y))
  ccflags-vdso += -DDISABLE_MIPS_VDSO
endif
endif

# VDSO linker flags.
VDSO_LDFLAGS := \