diff mbox series

sparc32: Fix version generation failed warnings

Message ID 20240324065622.GA1032122@ravnborg.org
State New
Headers show
Series sparc32: Fix version generation failed warnings | expand

Commit Message

Sam Ravnborg March 24, 2024, 6:56 a.m. UTC
An allmodconfig build of sparc32 resulted in several warnings:

WARNING: modpost: EXPORT symbol "empty_zero_page" [vmlinux] version generation failed, symbol will not be versioned.
Is "empty_zero_page" prototyped in <asm/asm-prototypes.h>?
WARNING: modpost: EXPORT symbol "__udelay" [vmlinux] version generation failed, symbol will not be versioned.
Is "__udelay" prototyped in <asm/asm-prototypes.h>?
WARNING: modpost: EXPORT symbol "__ndelay" [vmlinux] version generation failed, symbol will not be versioned.
Is "__ndelay" prototyped in <asm/asm-prototypes.h>?
WARNING: modpost: EXPORT symbol "__ashldi3" [vmlinux] version generation failed, symbol will not be versioned.
Is "__ashldi3" prototyped in <asm/asm-prototypes.h>?
WARNING: modpost: EXPORT symbol "__ashrdi3" [vmlinux] version generation failed, symbol will not be versioned.
Is "__ashrdi3" prototyped in <asm/asm-prototypes.h>?
WARNING: modpost: EXPORT symbol "__lshrdi3" [vmlinux] version generation failed, symbol will not be versioned.
Is "__lshrdi3" prototyped in <asm/asm-prototypes.h>?

And later a lot of warnings like this:
WARNING: modpost: "__udelay" [kernel/locking/locktorture.ko] has no CRC!
WARNING: modpost: "__udelay" [kernel/rcu/rcutorture.ko] has no CRC!
WARNING: modpost: "__udelay" [kernel/rcu/rcuscale.ko] has no CRC!
WARNING: modpost: "__udelay" [kernel/rcu/refscale.ko] has no CRC!
WARNING: modpost: "__ndelay" [kernel/rcu/refscale.ko] has no CRC!
WARNING: modpost: "__udelay" [kernel/time/test_udelay.ko] has no CRC!
WARNING: modpost: "__udelay" [kernel/scftorture.ko] has no CRC!
WARNING: modpost: "__ashrdi3" [fs/quota/quota_tree.ko] has no CRC!
WARNING: modpost: "__ashldi3" [fs/ext4/ext4.ko] has no CRC!

The fix was, as hinted, to add missing prototypes to asm-prototypes.h.

For the __*di3 functions add the prototypes direct to the
asm-prototypes.h file.
Some of the symbols were already declared, so pulled in the relevant
headers (delay.h, pgtable.h).
The include files was alphabetically sorted to make the list somehow
readable.

The .S files exporting the symbols do not include asm-prototypes.h,
so they need to be explicit rebuild to generate symbol versioning.
One or more of the generic headers pulled in by asm-prototypes.h
did not support being used from .S files, so adding asm-prototypes.h
as an include file was not an option.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Andreas Larsson <andreas@gaisler.com>
Cc: "David S. Miller" <davem@davemloft.net>
---

 arch/sparc/include/asm/asm-prototypes.h | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

Comments

Andreas Larsson April 22, 2024, 2:30 p.m. UTC | #1
On 2024-03-24 07:56, Sam Ravnborg wrote:
> An allmodconfig build of sparc32 resulted in several warnings:
> 
> WARNING: modpost: EXPORT symbol "empty_zero_page" [vmlinux] version generation failed, symbol will not be versioned.
> Is "empty_zero_page" prototyped in <asm/asm-prototypes.h>?
> WARNING: modpost: EXPORT symbol "__udelay" [vmlinux] version generation failed, symbol will not be versioned.
> Is "__udelay" prototyped in <asm/asm-prototypes.h>?
> WARNING: modpost: EXPORT symbol "__ndelay" [vmlinux] version generation failed, symbol will not be versioned.
> Is "__ndelay" prototyped in <asm/asm-prototypes.h>?
> WARNING: modpost: EXPORT symbol "__ashldi3" [vmlinux] version generation failed, symbol will not be versioned.
> Is "__ashldi3" prototyped in <asm/asm-prototypes.h>?
> WARNING: modpost: EXPORT symbol "__ashrdi3" [vmlinux] version generation failed, symbol will not be versioned.
> Is "__ashrdi3" prototyped in <asm/asm-prototypes.h>?
> WARNING: modpost: EXPORT symbol "__lshrdi3" [vmlinux] version generation failed, symbol will not be versioned.
> Is "__lshrdi3" prototyped in <asm/asm-prototypes.h>?
> 
> And later a lot of warnings like this:
> WARNING: modpost: "__udelay" [kernel/locking/locktorture.ko] has no CRC!
> WARNING: modpost: "__udelay" [kernel/rcu/rcutorture.ko] has no CRC!
> WARNING: modpost: "__udelay" [kernel/rcu/rcuscale.ko] has no CRC!
> WARNING: modpost: "__udelay" [kernel/rcu/refscale.ko] has no CRC!
> WARNING: modpost: "__ndelay" [kernel/rcu/refscale.ko] has no CRC!
> WARNING: modpost: "__udelay" [kernel/time/test_udelay.ko] has no CRC!
> WARNING: modpost: "__udelay" [kernel/scftorture.ko] has no CRC!
> WARNING: modpost: "__ashrdi3" [fs/quota/quota_tree.ko] has no CRC!
> WARNING: modpost: "__ashldi3" [fs/ext4/ext4.ko] has no CRC!
> 
> The fix was, as hinted, to add missing prototypes to asm-prototypes.h.
> 
> For the __*di3 functions add the prototypes direct to the
> asm-prototypes.h file.
> Some of the symbols were already declared, so pulled in the relevant
> headers (delay.h, pgtable.h).
> The include files was alphabetically sorted to make the list somehow
> readable.
> 
> The .S files exporting the symbols do not include asm-prototypes.h,
> so they need to be explicit rebuild to generate symbol versioning.
> One or more of the generic headers pulled in by asm-prototypes.h
> did not support being used from .S files, so adding asm-prototypes.h
> as an include file was not an option.
> 
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> Cc: Andreas Larsson <andreas@gaisler.com>
> Cc: "David S. Miller" <davem@davemloft.net>
> ---
> 
>  arch/sparc/include/asm/asm-prototypes.h | 17 ++++++++++++-----
>  1 file changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/sparc/include/asm/asm-prototypes.h b/arch/sparc/include/asm/asm-prototypes.h
> index 4987c735ff56..08810808ca6d 100644
> --- a/arch/sparc/include/asm/asm-prototypes.h
> +++ b/arch/sparc/include/asm/asm-prototypes.h
> @@ -3,15 +3,18 @@
>   * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
>   */
>  
> -#include <asm/xor.h>
> -#include <asm/checksum.h>
> -#include <asm/trap_block.h>
> +#include <linux/atomic.h>
>  #include <linux/uaccess.h>
> +
>  #include <asm/atomic.h>
> -#include <asm/ftrace.h>
>  #include <asm/cacheflush.h>
> +#include <asm/checksum.h>
> +#include <asm/delay.h>
> +#include <asm/ftrace.h>
>  #include <asm/oplib.h>
> -#include <linux/atomic.h>
> +#include <asm/pgtable.h>
> +#include <asm/trap_block.h>
> +#include <asm/xor.h>
>  
>  void *__memscan_zero(void *, size_t);
>  void *__memscan_generic(void *, int, size_t);
> @@ -23,3 +26,7 @@ void *memcpy(void *dest, const void *src, size_t n);
>  void *memset(void *s, int c, size_t n);
>  typedef int TItype __attribute__((mode(TI)));
>  TItype __multi3(TItype a, TItype b);
> +
> +s64 __ashldi3(s64, int);
> +s64 __lshrdi3(s64, int);
> +s64 __ashrdi3(s64, int);

Reviewed-by: Andreas Larsson <andreas@gaisler.com>
Tested-by: Andreas Larsson <andreas@gaisler.com>

Picking this up to my for-next.

Thanks,
Andreas
diff mbox series

Patch

diff --git a/arch/sparc/include/asm/asm-prototypes.h b/arch/sparc/include/asm/asm-prototypes.h
index 4987c735ff56..08810808ca6d 100644
--- a/arch/sparc/include/asm/asm-prototypes.h
+++ b/arch/sparc/include/asm/asm-prototypes.h
@@ -3,15 +3,18 @@ 
  * Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved.
  */
 
-#include <asm/xor.h>
-#include <asm/checksum.h>
-#include <asm/trap_block.h>
+#include <linux/atomic.h>
 #include <linux/uaccess.h>
+
 #include <asm/atomic.h>
-#include <asm/ftrace.h>
 #include <asm/cacheflush.h>
+#include <asm/checksum.h>
+#include <asm/delay.h>
+#include <asm/ftrace.h>
 #include <asm/oplib.h>
-#include <linux/atomic.h>
+#include <asm/pgtable.h>
+#include <asm/trap_block.h>
+#include <asm/xor.h>
 
 void *__memscan_zero(void *, size_t);
 void *__memscan_generic(void *, int, size_t);
@@ -23,3 +26,7 @@  void *memcpy(void *dest, const void *src, size_t n);
 void *memset(void *s, int c, size_t n);
 typedef int TItype __attribute__((mode(TI)));
 TItype __multi3(TItype a, TItype b);
+
+s64 __ashldi3(s64, int);
+s64 __lshrdi3(s64, int);
+s64 __ashrdi3(s64, int);