2023-01-20 07:17:48

by Masahiro Yamada

[permalink] [raw]
Subject: [PATCH] MIPS: remove CONFIG_MIPS_LD_CAN_LINK_VDSO

Given commit e4412739472b ("Documentation: raise minimum supported
version of binutils to 2.25"), CONFIG_MIPS_LD_CAN_LINK_VDSO is always
'y'.

Signed-off-by: Masahiro Yamada <[email protected]>
---

arch/mips/vdso/Kconfig | 14 +-------------
arch/mips/vdso/Makefile | 3 ---
2 files changed, 1 insertion(+), 16 deletions(-)

diff --git a/arch/mips/vdso/Kconfig b/arch/mips/vdso/Kconfig
index a665f6108cb5..70140248da72 100644
--- a/arch/mips/vdso/Kconfig
+++ b/arch/mips/vdso/Kconfig
@@ -1,18 +1,6 @@
-# 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
-# relocation in binutils > 2.25 but it will fail with older versions
-# because that relocation is not supported for that symbol. As a result
-# of which we are forced to disable the VDSO symbols when building
-# with < 2.25 binutils on pre-R6 kernels. For more references on why we
-# can't use other methods to get the base address of VDSO please refer to
-# the comments on that file.
-#
# 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.

-config MIPS_LD_CAN_LINK_VDSO
- def_bool LD_VERSION >= 22500 || LD_IS_LLD
-
config MIPS_DISABLE_VDSO
- def_bool CPU_MICROMIPS || (!CPU_MIPSR6 && !MIPS_LD_CAN_LINK_VDSO)
+ def_bool CPU_MICROMIPS
diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
index 1f7d5c6c10b0..18af9474ed0e 100644
--- a/arch/mips/vdso/Makefile
+++ b/arch/mips/vdso/Makefile
@@ -52,9 +52,6 @@ endif
CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)

ifdef CONFIG_MIPS_DISABLE_VDSO
- ifndef CONFIG_MIPS_LD_CAN_LINK_VDSO
- $(warning MIPS VDSO requires binutils >= 2.25)
- endif
obj-vdso-y := $(filter-out vgettimeofday.o, $(obj-vdso-y))
endif

--
2.34.1


2023-01-20 16:55:33

by Nathan Chancellor

[permalink] [raw]
Subject: Re: [PATCH] MIPS: remove CONFIG_MIPS_LD_CAN_LINK_VDSO

On Fri, Jan 20, 2023 at 03:33:51PM +0900, Masahiro Yamada wrote:
> Given commit e4412739472b ("Documentation: raise minimum supported
> version of binutils to 2.25"), CONFIG_MIPS_LD_CAN_LINK_VDSO is always
> 'y'.
>
> Signed-off-by: Masahiro Yamada <[email protected]>

Thanks for the patch!

Reviewed-by: Nathan Chancellor <[email protected]>

> ---
>
> arch/mips/vdso/Kconfig | 14 +-------------
> arch/mips/vdso/Makefile | 3 ---
> 2 files changed, 1 insertion(+), 16 deletions(-)
>
> diff --git a/arch/mips/vdso/Kconfig b/arch/mips/vdso/Kconfig
> index a665f6108cb5..70140248da72 100644
> --- a/arch/mips/vdso/Kconfig
> +++ b/arch/mips/vdso/Kconfig
> @@ -1,18 +1,6 @@
> -# 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
> -# relocation in binutils > 2.25 but it will fail with older versions
> -# because that relocation is not supported for that symbol. As a result
> -# of which we are forced to disable the VDSO symbols when building
> -# with < 2.25 binutils on pre-R6 kernels. For more references on why we
> -# can't use other methods to get the base address of VDSO please refer to
> -# the comments on that file.
> -#
> # 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.
>
> -config MIPS_LD_CAN_LINK_VDSO
> - def_bool LD_VERSION >= 22500 || LD_IS_LLD
> -
> config MIPS_DISABLE_VDSO
> - def_bool CPU_MICROMIPS || (!CPU_MIPSR6 && !MIPS_LD_CAN_LINK_VDSO)
> + def_bool CPU_MICROMIPS
> diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
> index 1f7d5c6c10b0..18af9474ed0e 100644
> --- a/arch/mips/vdso/Makefile
> +++ b/arch/mips/vdso/Makefile
> @@ -52,9 +52,6 @@ endif
> CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
>
> ifdef CONFIG_MIPS_DISABLE_VDSO
> - ifndef CONFIG_MIPS_LD_CAN_LINK_VDSO
> - $(warning MIPS VDSO requires binutils >= 2.25)
> - endif
> obj-vdso-y := $(filter-out vgettimeofday.o, $(obj-vdso-y))
> endif
>
> --
> 2.34.1
>

2023-01-26 18:56:03

by Philippe Mathieu-Daudé

[permalink] [raw]
Subject: Re: [PATCH] MIPS: remove CONFIG_MIPS_LD_CAN_LINK_VDSO

On 20/1/23 07:33, Masahiro Yamada wrote:
> Given commit e4412739472b ("Documentation: raise minimum supported
> version of binutils to 2.25"), CONFIG_MIPS_LD_CAN_LINK_VDSO is always
> 'y'.
>
> Signed-off-by: Masahiro Yamada <[email protected]>
> ---
>
> arch/mips/vdso/Kconfig | 14 +-------------
> arch/mips/vdso/Makefile | 3 ---
> 2 files changed, 1 insertion(+), 16 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <[email protected]>


2023-01-27 16:29:00

by Thomas Bogendoerfer

[permalink] [raw]
Subject: Re: [PATCH] MIPS: remove CONFIG_MIPS_LD_CAN_LINK_VDSO

On Fri, Jan 20, 2023 at 03:33:51PM +0900, Masahiro Yamada wrote:
> Given commit e4412739472b ("Documentation: raise minimum supported
> version of binutils to 2.25"), CONFIG_MIPS_LD_CAN_LINK_VDSO is always
> 'y'.
>
> Signed-off-by: Masahiro Yamada <[email protected]>
> ---
>
> arch/mips/vdso/Kconfig | 14 +-------------
> arch/mips/vdso/Makefile | 3 ---
> 2 files changed, 1 insertion(+), 16 deletions(-)
>
> diff --git a/arch/mips/vdso/Kconfig b/arch/mips/vdso/Kconfig
> index a665f6108cb5..70140248da72 100644
> --- a/arch/mips/vdso/Kconfig
> +++ b/arch/mips/vdso/Kconfig
> @@ -1,18 +1,6 @@
> -# 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
> -# relocation in binutils > 2.25 but it will fail with older versions
> -# because that relocation is not supported for that symbol. As a result
> -# of which we are forced to disable the VDSO symbols when building
> -# with < 2.25 binutils on pre-R6 kernels. For more references on why we
> -# can't use other methods to get the base address of VDSO please refer to
> -# the comments on that file.
> -#
> # 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.
>
> -config MIPS_LD_CAN_LINK_VDSO
> - def_bool LD_VERSION >= 22500 || LD_IS_LLD
> -
> config MIPS_DISABLE_VDSO
> - def_bool CPU_MICROMIPS || (!CPU_MIPSR6 && !MIPS_LD_CAN_LINK_VDSO)
> + def_bool CPU_MICROMIPS
> diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
> index 1f7d5c6c10b0..18af9474ed0e 100644
> --- a/arch/mips/vdso/Makefile
> +++ b/arch/mips/vdso/Makefile
> @@ -52,9 +52,6 @@ endif
> CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
>
> ifdef CONFIG_MIPS_DISABLE_VDSO
> - ifndef CONFIG_MIPS_LD_CAN_LINK_VDSO
> - $(warning MIPS VDSO requires binutils >= 2.25)
> - endif
> obj-vdso-y := $(filter-out vgettimeofday.o, $(obj-vdso-y))
> endif
>
> --
> 2.34.1

applied to mips-next.

Thomas.

--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]