]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: Handle .ARM.attributes section in linker scripts
authorNathan Chancellor <nathan@kernel.org>
Thu, 6 Feb 2025 17:21:38 +0000 (10:21 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Feb 2025 12:50:05 +0000 (13:50 +0100)
commit ca0f4fe7cf7183bfbdc67ca2de56ae1fc3a8db2b upstream.

A recent LLVM commit [1] started generating an .ARM.attributes section
similar to the one that exists for 32-bit, which results in orphan
section warnings (or errors if CONFIG_WERROR is enabled) from the linker
because it is not handled in the arm64 linker scripts.

  ld.lld: error: arch/arm64/kernel/vdso/vgettimeofday.o:(.ARM.attributes) is being placed in '.ARM.attributes'
  ld.lld: error: arch/arm64/kernel/vdso/vgetrandom.o:(.ARM.attributes) is being placed in '.ARM.attributes'

  ld.lld: error: vmlinux.a(lib/vsprintf.o):(.ARM.attributes) is being placed in '.ARM.attributes'
  ld.lld: error: vmlinux.a(lib/win_minmax.o):(.ARM.attributes) is being placed in '.ARM.attributes'
  ld.lld: error: vmlinux.a(lib/xarray.o):(.ARM.attributes) is being placed in '.ARM.attributes'

Discard the new sections in the necessary linker scripts to resolve the
warnings, as the kernel and vDSO do not need to retain it, similar to
the .note.gnu.property section.

Cc: stable@vger.kernel.org
Fixes: b3e5d80d0c48 ("arm64/build: Warn on orphan section placement")
Link: https://github.com/llvm/llvm-project/commit/ee99c4d4845db66c4daa2373352133f4b237c942
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20250206-arm64-handle-arm-attributes-in-linker-script-v3-1-d53d169913eb@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm64/kernel/vdso/vdso.lds.S
arch/arm64/kernel/vmlinux.lds.S

index 6028f1fe2d1cbf593af2e3b0973aff64c940a83d..cc8b36acb996f0f450856576cff531d8e04f4dfe 100644 (file)
@@ -38,6 +38,7 @@ SECTIONS
         */
        /DISCARD/       : {
                *(.note.GNU-stack .note.gnu.property)
+               *(.ARM.attributes)
        }
        .note           : { *(.note.*) }                :text   :note
 
index b0226eac7bda83e62696733fbed6b62eee2ce89b..a2fb4241f5fbe3a2d058c639571fd883cda8dc46 100644 (file)
@@ -149,6 +149,7 @@ SECTIONS
        /DISCARD/ : {
                *(.interp .dynamic)
                *(.dynsym .dynstr .hash .gnu.hash)
+               *(.ARM.attributes)
        }
 
        . = KIMAGE_VADDR;