]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: fix .data.rel.ro size assertion when CONFIG_LTO_CLANG
authorMasahiro Yamada <masahiroy@kernel.org>
Wed, 6 Nov 2024 16:18:42 +0000 (01:18 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2024 12:52:46 +0000 (13:52 +0100)
[ Upstream commit 340fd66c856651d8c1d29f392dd26ad674d2db0e ]

Commit be2881824ae9 ("arm64/build: Assert for unwanted sections")
introduced an assertion to ensure that the .data.rel.ro section does
not exist.

However, this check does not work when CONFIG_LTO_CLANG is enabled,
because .data.rel.ro matches the .data.[0-9a-zA-Z_]* pattern in the
DATA_MAIN macro.

Move the ASSERT() above the RW_DATA() line.

Fixes: be2881824ae9 ("arm64/build: Assert for unwanted sections")
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20241106161843.189927-1-masahiroy@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/arm64/kernel/vmlinux.lds.S

index 55a8e310ea12c6254b5860ad761b29471a6c3cdf..d294c1ea8391bdad538774e6850e1f7efc16826d 100644 (file)
@@ -288,6 +288,9 @@ SECTIONS
        __initdata_end = .;
        __init_end = .;
 
+       .data.rel.ro : { *(.data.rel.ro) }
+       ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!")
+
        _data = .;
        _sdata = .;
        RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_ALIGN)
@@ -344,9 +347,6 @@ SECTIONS
                *(.plt) *(.plt.*) *(.iplt) *(.igot .igot.plt)
        }
        ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
-
-       .data.rel.ro : { *(.data.rel.ro) }
-       ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!")
 }
 
 #include "image-vars.h"