73 lines
2.5 KiB
Diff
73 lines
2.5 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Thu, 5 Jan 2023 17:04:40 +0100
|
|
Subject: alpha: Fix missing symbol versions for str{,n}{cat,cpy}
|
|
Origin: https://marc.info/?l=linux-alpha&m=167364720725291&w=2
|
|
|
|
Now that modpost extracts symbol versions from *.cmd files, it can't
|
|
find the versions for these 4 symbols. This is due to the way we link
|
|
their objects together ahead of the full vmlinux link. genksyms puts
|
|
their symbol CRCs in .str{,n}{cat,cpy}.o.cmd, but modpost only reads
|
|
the .sty{,n}cpy.o.cmd files.
|
|
|
|
Add assembly sources that bring the appropriate routines together with
|
|
include directives instead of using the linker for this.
|
|
|
|
Reported-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
|
|
Fixes: f292d875d0dc ("modpost: extract symbol versions from *.cmd files")
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
---
|
|
arch/alpha/lib/Makefile | 14 --------------
|
|
arch/alpha/lib/stycpy.S | 8 ++++++++
|
|
arch/alpha/lib/styncpy.S | 8 ++++++++
|
|
3 files changed, 16 insertions(+), 14 deletions(-)
|
|
create mode 100644 arch/alpha/lib/stycpy.S
|
|
create mode 100644 arch/alpha/lib/styncpy.S
|
|
|
|
Index: linux/arch/alpha/lib/Makefile
|
|
===================================================================
|
|
--- linux.orig/arch/alpha/lib/Makefile
|
|
+++ linux/arch/alpha/lib/Makefile
|
|
@@ -45,17 +45,3 @@ AFLAGS___remlu.o = -DREM -DINTSIZE
|
|
$(addprefix $(obj)/,__divqu.o __remqu.o __divlu.o __remlu.o): \
|
|
$(src)/$(ev6-y)divide.S FORCE
|
|
$(call if_changed_rule,as_o_S)
|
|
-
|
|
-# There are direct branches between {str*cpy,str*cat} and stx*cpy.
|
|
-# Ensure the branches are within range by merging these objects.
|
|
-
|
|
-LDFLAGS_stycpy.o := -r
|
|
-LDFLAGS_styncpy.o := -r
|
|
-
|
|
-$(obj)/stycpy.o: $(obj)/strcpy.o $(obj)/$(ev67-y)strcat.o \
|
|
- $(obj)/$(ev6-y)stxcpy.o FORCE
|
|
- $(call if_changed,ld)
|
|
-
|
|
-$(obj)/styncpy.o: $(obj)/strncpy.o $(obj)/$(ev67-y)strncat.o \
|
|
- $(obj)/$(ev6-y)stxncpy.o FORCE
|
|
- $(call if_changed,ld)
|
|
Index: linux/arch/alpha/lib/stycpy.S
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ linux/arch/alpha/lib/stycpy.S
|
|
@@ -0,0 +1,8 @@
|
|
+#include "strcpy.S"
|
|
+#ifdef CONFIG_ALPHA_EV6
|
|
+#include "ev6-strcat.S"
|
|
+#include "ev6-stxcpy.S"
|
|
+#else
|
|
+#include "strcat.S"
|
|
+#include "stxcpy.S"
|
|
+#endif
|
|
Index: linux/arch/alpha/lib/styncpy.S
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ linux/arch/alpha/lib/styncpy.S
|
|
@@ -0,0 +1,8 @@
|
|
+#include "strncpy.S"
|
|
+#ifdef CONFIG_ALPHA_EV6
|
|
+#include "ev6-strncat.S"
|
|
+#include "ev6-stxncpy.S"
|
|
+#else
|
|
+#include "strncat.S"
|
|
+#include "stxncpy.S"
|
|
+#endif
|