]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
modpost: Amend ppc64 save/restfpr symnames for -Os build
authorRené Rebe <rene@exactco.de>
Sun, 23 Nov 2025 12:13:30 +0000 (13:13 +0100)
committerNathan Chancellor <nathan@kernel.org>
Tue, 3 Feb 2026 22:25:23 +0000 (15:25 -0700)
Building a size optimized ppc64 kernel (-Os), gcc emits more FP
save/restore symbols, that the linker generates on demand into the
.sfpr section. Explicitly allow-list those in scripts/mod/modpost.c,
too. They are needed for the amdgpu in-kernel floating point support.

MODPOST Module.symvers
ERROR: modpost: "_restfpr_20" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_restfpr_26" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_restfpr_22" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savegpr1_27" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savegpr1_25" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_restfpr_28" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savegpr1_29" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savefpr_20" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_savefpr_22" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
ERROR: modpost: "_restfpr_15" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
WARNING: modpost: suppressed 56 unresolved symbol warnings because there were too many)

Signed-off-by: René Rebe <rene@exactco.de>
Link: https://patch.msgid.link/20251123.131330.407910684435629198.rene@exactco.de
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
scripts/mod/modpost.c

index d042b355c9d6ff73c60899c2477501f491e45e5e..0c25b5ad497b584c1803c172ce18b8aaccd92282 100644 (file)
@@ -602,6 +602,10 @@ static int ignore_undef_symbol(struct elf_info *info, const char *symname)
                /* Special register function linked on all modules during final link of .ko */
                if (strstarts(symname, "_restgpr0_") ||
                    strstarts(symname, "_savegpr0_") ||
+                   strstarts(symname, "_restgpr1_") ||
+                   strstarts(symname, "_savegpr1_") ||
+                   strstarts(symname, "_restfpr_") ||
+                   strstarts(symname, "_savefpr_") ||
                    strstarts(symname, "_restvr_") ||
                    strstarts(symname, "_savevr_") ||
                    strcmp(symname, ".TOC.") == 0)