* [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0
@ 2024-07-04 13:47 Masahiro Yamada
2024-07-04 13:47 ` [PATCH 2/3] modpost: remove self-definitions of R_ARM_* macros Masahiro Yamada
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Masahiro Yamada @ 2024-07-04 13:47 UTC (permalink / raw)
To: linux-kbuild
Cc: linux-kernel, Masahiro Yamada, Jonathan Corbet, Nathan Chancellor,
Nicolas Schier, linux-doc, workflows
RHEL/CentOS 7, popular distributions that install GNU Make 3.82, reached
EOM/EOL on June 30, 2024. While you may get extended support, it is a
good time to raise the minimum GNU Make version.
The new requirement, GNU Make 4.0, was released in October, 2013.
I did not touch the Makefiles under tools/ because I do not know the
requirements for building tools. I do not find any GNU Make version
checks under tools/.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Documentation/process/changes.rst | 4 ++--
Makefile | 22 +++-------------------
scripts/Kbuild.include | 2 +-
3 files changed, 6 insertions(+), 22 deletions(-)
diff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rst
index 5685d7bfe4d0..415ac8eeb46c 100644
--- a/Documentation/process/changes.rst
+++ b/Documentation/process/changes.rst
@@ -33,7 +33,7 @@ GNU C 5.1 gcc --version
Clang/LLVM (optional) 13.0.1 clang --version
Rust (optional) 1.78.0 rustc --version
bindgen (optional) 0.65.1 bindgen --version
-GNU make 3.82 make --version
+GNU make 4.0 make --version
bash 4.2 bash --version
binutils 2.25 ld -v
flex 2.5.35 flex --version
@@ -111,7 +111,7 @@ It depends on ``libclang``.
Make
----
-You will need GNU make 3.82 or later to build the kernel.
+You will need GNU make 4.0 or later to build the kernel.
Bash
----
diff --git a/Makefile b/Makefile
index 06aa6402b385..c90d408c825e 100644
--- a/Makefile
+++ b/Makefile
@@ -11,8 +11,8 @@ NAME = Baby Opossum Posse
# Comments in this file are targeted only to the developer, do not
# expect to learn how to build the kernel reading this file.
-ifeq ($(filter undefine,$(.FEATURES)),)
-$(error GNU Make >= 3.82 is required. Your Make version is $(MAKE_VERSION))
+ifeq ($(filter output-sync,$(.FEATURES)),)
+$(error GNU Make >= 4.0 is required. Your Make version is $(MAKE_VERSION))
endif
$(if $(filter __%, $(MAKECMDGOALS)), \
@@ -93,15 +93,7 @@ endif
# If the user is running make -s (silent mode), suppress echoing of
# commands
-# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
-
-ifeq ($(filter 3.%,$(MAKE_VERSION)),)
-short-opts := $(firstword -$(MAKEFLAGS))
-else
-short-opts := $(filter-out --%,$(MAKEFLAGS))
-endif
-
-ifneq ($(findstring s,$(short-opts)),)
+ifneq ($(findstring s,$(firstword -$(MAKEFLAGS))),)
quiet=silent_
override KBUILD_VERBOSE :=
endif
@@ -201,14 +193,6 @@ ifneq ($(words $(subst :, ,$(abs_srctree))), 1)
$(error source directory cannot contain spaces or colons)
endif
-ifneq ($(filter 3.%,$(MAKE_VERSION)),)
-# 'MAKEFLAGS += -rR' does not immediately become effective for GNU Make 3.x
-# We need to invoke sub-make to avoid implicit rules in the top Makefile.
-need-sub-make := 1
-# Cancel implicit rules for this Makefile.
-$(this-makefile): ;
-endif
-
export sub_make_done := 1
endif # sub_make_done
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index faf37bafa3f8..ed8a7493524b 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -68,7 +68,7 @@ kbuild-file = $(or $(wildcard $(src)/Kbuild),$(src)/Makefile)
# Read a file, replacing newlines with spaces
#
# Make 4.2 or later can read a file by using its builtin function.
-ifneq ($(filter-out 3.% 4.0 4.1, $(MAKE_VERSION)),)
+ifneq ($(filter-out 4.0 4.1, $(MAKE_VERSION)),)
read-file = $(subst $(newline),$(space),$(file < $1))
else
read-file = $(shell cat $1 2>/dev/null)
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 2/3] modpost: remove self-definitions of R_ARM_* macros
2024-07-04 13:47 [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0 Masahiro Yamada
@ 2024-07-04 13:47 ` Masahiro Yamada
2024-07-05 16:58 ` Nathan Chancellor
2024-07-04 13:47 ` [PATCH 3/3] modpost: rename R_ARM_THM_CALL to R_ARM_THM_PC22 Masahiro Yamada
2024-07-05 16:52 ` [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0 Nathan Chancellor
2 siblings, 1 reply; 6+ messages in thread
From: Masahiro Yamada @ 2024-07-04 13:47 UTC (permalink / raw)
To: linux-kbuild
Cc: linux-kernel, Masahiro Yamada, Nathan Chancellor, Nicolas Schier
Commit f5983dab0ead ("modpost: define more R_ARM_* for old
distributions") added self-definitions for the R_ARM_* macros to fix
build errors on CentOS 7.
RHEL/CentOS 7 were retired at the end of June.
Remove all the R_ARM_* definitions (except for R_ARM_THM_CALL), which
should be available in recent distributions.
Glibc added most of R_ARM_* macros in 2013. [1]
[1]: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=08cbd996d33114ca50644d060fbe3a08260430fb
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
scripts/mod/modpost.c | 30 ------------------------------
1 file changed, 30 deletions(-)
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 11731fc62140..e9aae1b7ff77 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1168,39 +1168,9 @@ static Elf_Addr addend_386_rel(uint32_t *location, unsigned int r_type)
return (Elf_Addr)(-1);
}
-#ifndef R_ARM_CALL
-#define R_ARM_CALL 28
-#endif
-#ifndef R_ARM_JUMP24
-#define R_ARM_JUMP24 29
-#endif
-
#ifndef R_ARM_THM_CALL
#define R_ARM_THM_CALL 10
#endif
-#ifndef R_ARM_THM_JUMP24
-#define R_ARM_THM_JUMP24 30
-#endif
-
-#ifndef R_ARM_MOVW_ABS_NC
-#define R_ARM_MOVW_ABS_NC 43
-#endif
-
-#ifndef R_ARM_MOVT_ABS
-#define R_ARM_MOVT_ABS 44
-#endif
-
-#ifndef R_ARM_THM_MOVW_ABS_NC
-#define R_ARM_THM_MOVW_ABS_NC 47
-#endif
-
-#ifndef R_ARM_THM_MOVT_ABS
-#define R_ARM_THM_MOVT_ABS 48
-#endif
-
-#ifndef R_ARM_THM_JUMP19
-#define R_ARM_THM_JUMP19 51
-#endif
static int32_t sign_extend32(int32_t value, int index)
{
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 2/3] modpost: remove self-definitions of R_ARM_* macros
2024-07-04 13:47 ` [PATCH 2/3] modpost: remove self-definitions of R_ARM_* macros Masahiro Yamada
@ 2024-07-05 16:58 ` Nathan Chancellor
0 siblings, 0 replies; 6+ messages in thread
From: Nathan Chancellor @ 2024-07-05 16:58 UTC (permalink / raw)
To: Masahiro Yamada; +Cc: linux-kbuild, linux-kernel, Nicolas Schier
On Thu, Jul 04, 2024 at 10:47:56PM +0900, Masahiro Yamada wrote:
> Commit f5983dab0ead ("modpost: define more R_ARM_* for old
> distributions") added self-definitions for the R_ARM_* macros to fix
> build errors on CentOS 7.
>
> RHEL/CentOS 7 were retired at the end of June.
>
> Remove all the R_ARM_* definitions (except for R_ARM_THM_CALL), which
> should be available in recent distributions.
>
> Glibc added most of R_ARM_* macros in 2013. [1]
>
> [1]: https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=08cbd996d33114ca50644d060fbe3a08260430fb
So did musl by virtue of a glibc elf.h update:
https://git.musl-libc.org/cgit/musl/commit/?id=268375c1c017c0bdefeed1a330811e433c4dfaef
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
I can't imagine this will need to be reverted but in case it does, would
it make sense to place patch 3 before this one (such that it is just
renaming R_ARM_THM_CALL to R_ARM_THM_PC22) so that fix remains around
and the revert can be easy?
Regardless:
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> ---
>
> scripts/mod/modpost.c | 30 ------------------------------
> 1 file changed, 30 deletions(-)
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index 11731fc62140..e9aae1b7ff77 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -1168,39 +1168,9 @@ static Elf_Addr addend_386_rel(uint32_t *location, unsigned int r_type)
> return (Elf_Addr)(-1);
> }
>
> -#ifndef R_ARM_CALL
> -#define R_ARM_CALL 28
> -#endif
> -#ifndef R_ARM_JUMP24
> -#define R_ARM_JUMP24 29
> -#endif
> -
> #ifndef R_ARM_THM_CALL
> #define R_ARM_THM_CALL 10
> #endif
> -#ifndef R_ARM_THM_JUMP24
> -#define R_ARM_THM_JUMP24 30
> -#endif
> -
> -#ifndef R_ARM_MOVW_ABS_NC
> -#define R_ARM_MOVW_ABS_NC 43
> -#endif
> -
> -#ifndef R_ARM_MOVT_ABS
> -#define R_ARM_MOVT_ABS 44
> -#endif
> -
> -#ifndef R_ARM_THM_MOVW_ABS_NC
> -#define R_ARM_THM_MOVW_ABS_NC 47
> -#endif
> -
> -#ifndef R_ARM_THM_MOVT_ABS
> -#define R_ARM_THM_MOVT_ABS 48
> -#endif
> -
> -#ifndef R_ARM_THM_JUMP19
> -#define R_ARM_THM_JUMP19 51
> -#endif
>
> static int32_t sign_extend32(int32_t value, int index)
> {
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/3] modpost: rename R_ARM_THM_CALL to R_ARM_THM_PC22
2024-07-04 13:47 [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0 Masahiro Yamada
2024-07-04 13:47 ` [PATCH 2/3] modpost: remove self-definitions of R_ARM_* macros Masahiro Yamada
@ 2024-07-04 13:47 ` Masahiro Yamada
2024-07-05 17:00 ` Nathan Chancellor
2024-07-05 16:52 ` [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0 Nathan Chancellor
2 siblings, 1 reply; 6+ messages in thread
From: Masahiro Yamada @ 2024-07-04 13:47 UTC (permalink / raw)
To: linux-kbuild
Cc: linux-kernel, Masahiro Yamada, Nathan Chancellor, Nicolas Schier
R_ARM_THM_CALL does not exist in /usr/include/elf.h, which originates
from the Glibc project.
Instead, the following line exists:
#define R_ARM_THM_PC22 10 /* PC relative 24 bit (Thumb32 BL). */
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
scripts/mod/modpost.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index e9aae1b7ff77..3e5313ed6065 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1168,10 +1168,6 @@ static Elf_Addr addend_386_rel(uint32_t *location, unsigned int r_type)
return (Elf_Addr)(-1);
}
-#ifndef R_ARM_THM_CALL
-#define R_ARM_THM_CALL 10
-#endif
-
static int32_t sign_extend32(int32_t value, int index)
{
uint8_t shift = 31 - index;
@@ -1232,7 +1228,7 @@ static Elf_Addr addend_arm_rel(void *loc, Elf_Sym *sym, unsigned int r_type)
((lower & 0x07ff) << 1),
20);
return offset + sym->st_value + 4;
- case R_ARM_THM_CALL:
+ case R_ARM_THM_PC22:
case R_ARM_THM_JUMP24:
/*
* Encoding T4:
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH 3/3] modpost: rename R_ARM_THM_CALL to R_ARM_THM_PC22
2024-07-04 13:47 ` [PATCH 3/3] modpost: rename R_ARM_THM_CALL to R_ARM_THM_PC22 Masahiro Yamada
@ 2024-07-05 17:00 ` Nathan Chancellor
0 siblings, 0 replies; 6+ messages in thread
From: Nathan Chancellor @ 2024-07-05 17:00 UTC (permalink / raw)
To: Masahiro Yamada; +Cc: linux-kbuild, linux-kernel, Nicolas Schier
On Thu, Jul 04, 2024 at 10:47:57PM +0900, Masahiro Yamada wrote:
> R_ARM_THM_CALL does not exist in /usr/include/elf.h, which originates
> from the Glibc project.
>
> Instead, the following line exists:
>
> #define R_ARM_THM_PC22 10 /* PC relative 24 bit (Thumb32 BL). */
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Like I point out on patch 2, I think making this change a pure rename
and moving the removal into the patch that removes the rest of the
defines would probably be a little better but that's up to you.
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> ---
>
> scripts/mod/modpost.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
> index e9aae1b7ff77..3e5313ed6065 100644
> --- a/scripts/mod/modpost.c
> +++ b/scripts/mod/modpost.c
> @@ -1168,10 +1168,6 @@ static Elf_Addr addend_386_rel(uint32_t *location, unsigned int r_type)
> return (Elf_Addr)(-1);
> }
>
> -#ifndef R_ARM_THM_CALL
> -#define R_ARM_THM_CALL 10
> -#endif
> -
> static int32_t sign_extend32(int32_t value, int index)
> {
> uint8_t shift = 31 - index;
> @@ -1232,7 +1228,7 @@ static Elf_Addr addend_arm_rel(void *loc, Elf_Sym *sym, unsigned int r_type)
> ((lower & 0x07ff) << 1),
> 20);
> return offset + sym->st_value + 4;
> - case R_ARM_THM_CALL:
> + case R_ARM_THM_PC22:
> case R_ARM_THM_JUMP24:
> /*
> * Encoding T4:
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0
2024-07-04 13:47 [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0 Masahiro Yamada
2024-07-04 13:47 ` [PATCH 2/3] modpost: remove self-definitions of R_ARM_* macros Masahiro Yamada
2024-07-04 13:47 ` [PATCH 3/3] modpost: rename R_ARM_THM_CALL to R_ARM_THM_PC22 Masahiro Yamada
@ 2024-07-05 16:52 ` Nathan Chancellor
2 siblings, 0 replies; 6+ messages in thread
From: Nathan Chancellor @ 2024-07-05 16:52 UTC (permalink / raw)
To: Masahiro Yamada
Cc: linux-kbuild, linux-kernel, Jonathan Corbet, Nicolas Schier,
linux-doc, workflows
On Thu, Jul 04, 2024 at 10:47:55PM +0900, Masahiro Yamada wrote:
> RHEL/CentOS 7, popular distributions that install GNU Make 3.82, reached
> EOM/EOL on June 30, 2024. While you may get extended support, it is a
> good time to raise the minimum GNU Make version.
>
> The new requirement, GNU Make 4.0, was released in October, 2013.
Seems reasonable. If someone gets bit by this, I think they can just
build make from scratch if they really need to keep building on this
distribution.
> I did not touch the Makefiles under tools/ because I do not know the
> requirements for building tools. I do not find any GNU Make version
> checks under tools/.
>
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> ---
>
> Documentation/process/changes.rst | 4 ++--
> Makefile | 22 +++-------------------
> scripts/Kbuild.include | 2 +-
> 3 files changed, 6 insertions(+), 22 deletions(-)
>
> diff --git a/Documentation/process/changes.rst b/Documentation/process/changes.rst
> index 5685d7bfe4d0..415ac8eeb46c 100644
> --- a/Documentation/process/changes.rst
> +++ b/Documentation/process/changes.rst
> @@ -33,7 +33,7 @@ GNU C 5.1 gcc --version
> Clang/LLVM (optional) 13.0.1 clang --version
> Rust (optional) 1.78.0 rustc --version
> bindgen (optional) 0.65.1 bindgen --version
> -GNU make 3.82 make --version
> +GNU make 4.0 make --version
> bash 4.2 bash --version
> binutils 2.25 ld -v
> flex 2.5.35 flex --version
> @@ -111,7 +111,7 @@ It depends on ``libclang``.
> Make
> ----
>
> -You will need GNU make 3.82 or later to build the kernel.
> +You will need GNU make 4.0 or later to build the kernel.
>
> Bash
> ----
> diff --git a/Makefile b/Makefile
> index 06aa6402b385..c90d408c825e 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -11,8 +11,8 @@ NAME = Baby Opossum Posse
> # Comments in this file are targeted only to the developer, do not
> # expect to learn how to build the kernel reading this file.
>
> -ifeq ($(filter undefine,$(.FEATURES)),)
> -$(error GNU Make >= 3.82 is required. Your Make version is $(MAKE_VERSION))
> +ifeq ($(filter output-sync,$(.FEATURES)),)
> +$(error GNU Make >= 4.0 is required. Your Make version is $(MAKE_VERSION))
> endif
>
> $(if $(filter __%, $(MAKECMDGOALS)), \
> @@ -93,15 +93,7 @@ endif
>
> # If the user is running make -s (silent mode), suppress echoing of
> # commands
> -# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
> -
> -ifeq ($(filter 3.%,$(MAKE_VERSION)),)
> -short-opts := $(firstword -$(MAKEFLAGS))
> -else
> -short-opts := $(filter-out --%,$(MAKEFLAGS))
> -endif
> -
> -ifneq ($(findstring s,$(short-opts)),)
> +ifneq ($(findstring s,$(firstword -$(MAKEFLAGS))),)
> quiet=silent_
> override KBUILD_VERBOSE :=
> endif
> @@ -201,14 +193,6 @@ ifneq ($(words $(subst :, ,$(abs_srctree))), 1)
> $(error source directory cannot contain spaces or colons)
> endif
>
> -ifneq ($(filter 3.%,$(MAKE_VERSION)),)
> -# 'MAKEFLAGS += -rR' does not immediately become effective for GNU Make 3.x
> -# We need to invoke sub-make to avoid implicit rules in the top Makefile.
> -need-sub-make := 1
> -# Cancel implicit rules for this Makefile.
> -$(this-makefile): ;
> -endif
> -
> export sub_make_done := 1
>
> endif # sub_make_done
> diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
> index faf37bafa3f8..ed8a7493524b 100644
> --- a/scripts/Kbuild.include
> +++ b/scripts/Kbuild.include
> @@ -68,7 +68,7 @@ kbuild-file = $(or $(wildcard $(src)/Kbuild),$(src)/Makefile)
> # Read a file, replacing newlines with spaces
> #
> # Make 4.2 or later can read a file by using its builtin function.
> -ifneq ($(filter-out 3.% 4.0 4.1, $(MAKE_VERSION)),)
> +ifneq ($(filter-out 4.0 4.1, $(MAKE_VERSION)),)
> read-file = $(subst $(newline),$(space),$(file < $1))
> else
> read-file = $(shell cat $1 2>/dev/null)
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-07-05 17:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-04 13:47 [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0 Masahiro Yamada
2024-07-04 13:47 ` [PATCH 2/3] modpost: remove self-definitions of R_ARM_* macros Masahiro Yamada
2024-07-05 16:58 ` Nathan Chancellor
2024-07-04 13:47 ` [PATCH 3/3] modpost: rename R_ARM_THM_CALL to R_ARM_THM_PC22 Masahiro Yamada
2024-07-05 17:00 ` Nathan Chancellor
2024-07-05 16:52 ` [PATCH 1/3] kbuild: raise the minimum GNU Make requirement to 4.0 Nathan Chancellor
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox