Skip to content

Commit

Permalink
Merge branch 'sparc-Suppressing-version-generation-failed-warnings-in…
Browse files Browse the repository at this point in the history
…-sparc'

Nagarathnam Muthusamy says:

====================
sparc: Suppressing version generation failed warnings in sparc

Compiling the sparc build of upstream kernel generates lots of warnings
regarding version generation failure for functions defined in assembly files.
This can be easily suppressed by adding those function prototypes to
asm/asm-prototypes.h as in powerpc architecture. The following series of patches
aims to clean the following warnings.

WARNING: EXPORT symbol "atomic_add" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "xor_niagara_4" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "atomic_sub_return" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "atomic64_sub" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "xor_vis_3" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "atomic_xor" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "_mcount" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "sun4v_niagara2_getperf" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "atomic64_fetch_xor" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "atomic_fetch_xor" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "__bzero" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "atomic64_fetch_and" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "raw_copy_to_user" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "__flushw_user" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "sun4v_niagara2_setperf" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "__arch_hweight64" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "__ffs" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "prom_root_node" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "csum_partial_copy_nocheck" [vmlinux] version generation
failed, symbol will not be versioned.
WARNING: EXPORT symbol "memcpy" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "atomic_fetch_or" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "xor_vis_4" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "__arch_hweight32" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "ffs" [vmlinux] version generation failed, symbol will not be
versioned.
WARNING: EXPORT symbol "atomic_and" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "xor_niagara_3" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "atomic64_and" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "real_hard_smp_processor_id" [vmlinux] version generation
failed, symbol will not be versioned.
WARNING: EXPORT symbol "clear_user_page" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "memmove" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "raw_copy_from_user" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "atomic64_add_return" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "__memscan_generic" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "atomic_sub" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "__memscan_zero" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "atomic64_add" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "strncmp" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "atomic64_fetch_sub" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "xor_vis_5" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "ip_fast_csum" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "test_and_change_bit" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "__arch_hweight8" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "strlen" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "xor_niagara_2" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "atomic64_fetch_or" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "atomic64_or" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "atomic_fetch_sub" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "atomic_fetch_add" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "clear_bit" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "sun4v_mach_set_watchdog" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "set_bit" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "__csum_partial_copy_from_user" [vmlinux] version generation
failed, symbol will not be versioned.
WARNING: EXPORT symbol "memset" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "__csum_partial_copy_to_user" [vmlinux] version generation
failed, symbol will not be versioned.
WARNING: EXPORT symbol "atomic64_fetch_add" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "change_bit" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "__clear_user" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "atomic64_sub_return" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "__arch_hweight16" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "tlb_type" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "VISenter" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "test_and_set_bit" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "xor_niagara_5" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "_clear_page" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "xor_vis_2" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "atomic64_xor" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "test_and_clear_bit" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "csum_partial" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "atomic_fetch_and" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "copy_user_page" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "sun4v_chip_type" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "raw_copy_in_user" [vmlinux] version generation failed, symbol
will not be versioned.
WARNING: EXPORT symbol "memcmp" [vmlinux] version generation failed, symbol will not
be versioned.
WARNING: EXPORT symbol "atomic_add_return" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "atomic_or" [vmlinux] version generation failed, symbol will
not be versioned.
WARNING: EXPORT symbol "atomic64_dec_if_positive" [vmlinux] version generation
failed, symbol will not be versioned.
WARNING: EXPORT symbol "sun4v_niagara_setperf" [vmlinux] version generation failed,
symbol will not be versioned.
WARNING: EXPORT symbol "sun4v_niagara_getperf" [vmlinux] version generation failed,
symbol will not be versioned.

With the fix, all these warnings will be removed during compilation.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Jun 19, 2017
2 parents 5faab9e + f5a651f commit d8f431a
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 18 deletions.
24 changes: 24 additions & 0 deletions arch/sparc/include/asm/asm-prototypes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* 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 <asm/uaccess.h>
#include <asm/atomic.h>
#include <asm/ftrace.h>
#include <asm/cacheflush.h>
#include <asm/oplib.h>
#include <linux/atomic.h>

void *__memscan_zero(void *, size_t);
void *__memscan_generic(void *, int, size_t);
void *__bzero(void *, size_t);
void VISenter(void); /* Dummy prototype to supress warning */
#undef memcpy
#undef memset
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);
44 changes: 26 additions & 18 deletions arch/sparc/lib/atomic_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -62,19 +62,23 @@ ENTRY(atomic_fetch_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
ENDPROC(atomic_fetch_##op); \
EXPORT_SYMBOL(atomic_fetch_##op);

#define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_OP_RETURN(op) ATOMIC_FETCH_OP(op)
ATOMIC_OP(add)
ATOMIC_OP_RETURN(add)
ATOMIC_FETCH_OP(add)

ATOMIC_OPS(add)
ATOMIC_OPS(sub)
ATOMIC_OP(sub)
ATOMIC_OP_RETURN(sub)
ATOMIC_FETCH_OP(sub)

#undef ATOMIC_OPS
#define ATOMIC_OPS(op) ATOMIC_OP(op) ATOMIC_FETCH_OP(op)
ATOMIC_OP(and)
ATOMIC_FETCH_OP(and)

ATOMIC_OPS(and)
ATOMIC_OPS(or)
ATOMIC_OPS(xor)
ATOMIC_OP(or)
ATOMIC_FETCH_OP(or)

ATOMIC_OP(xor)
ATOMIC_FETCH_OP(xor)

#undef ATOMIC_OPS
#undef ATOMIC_FETCH_OP
#undef ATOMIC_OP_RETURN
#undef ATOMIC_OP
Expand Down Expand Up @@ -124,19 +128,23 @@ ENTRY(atomic64_fetch_##op) /* %o0 = increment, %o1 = atomic_ptr */ \
ENDPROC(atomic64_fetch_##op); \
EXPORT_SYMBOL(atomic64_fetch_##op);

#define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_OP_RETURN(op) ATOMIC64_FETCH_OP(op)
ATOMIC64_OP(add)
ATOMIC64_OP_RETURN(add)
ATOMIC64_FETCH_OP(add)

ATOMIC64_OP(sub)
ATOMIC64_OP_RETURN(sub)
ATOMIC64_FETCH_OP(sub)

ATOMIC64_OPS(add)
ATOMIC64_OPS(sub)
ATOMIC64_OP(and)
ATOMIC64_FETCH_OP(and)

#undef ATOMIC64_OPS
#define ATOMIC64_OPS(op) ATOMIC64_OP(op) ATOMIC64_FETCH_OP(op)
ATOMIC64_OP(or)
ATOMIC64_FETCH_OP(or)

ATOMIC64_OPS(and)
ATOMIC64_OPS(or)
ATOMIC64_OPS(xor)
ATOMIC64_OP(xor)
ATOMIC64_FETCH_OP(xor)

#undef ATOMIC64_OPS
#undef ATOMIC64_FETCH_OP
#undef ATOMIC64_OP_RETURN
#undef ATOMIC64_OP
Expand Down
1 change: 1 addition & 0 deletions arch/sparc/lib/checksum_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ csum_partial_fix_alignment:

.align 32
.globl csum_partial
.type csum_partial,#function
EXPORT_SYMBOL(csum_partial)
csum_partial: /* %o0=buff, %o1=len, %o2=sum */
prefetch [%o0 + 0x000], #n_reads
Expand Down
1 change: 1 addition & 0 deletions arch/sparc/lib/csum_copy.S
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
add %o5, %o4, %o4

.globl FUNC_NAME
.type FUNC_NAME,#function
EXPORT_SYMBOL(FUNC_NAME)
FUNC_NAME: /* %o0=src, %o1=dst, %o2=len, %o3=sum */
LOAD(prefetch, %o0 + 0x000, #n_reads)
Expand Down
2 changes: 2 additions & 0 deletions arch/sparc/lib/memscan_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
.text
.align 32
.globl __memscan_zero, __memscan_generic
.type __memscan_zero,#function
.type __memscan_generic,#function
.globl memscan
EXPORT_SYMBOL(__memscan_zero)
EXPORT_SYMBOL(__memscan_generic)
Expand Down
1 change: 1 addition & 0 deletions arch/sparc/lib/memset.S
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
__bzero_begin:

.globl __bzero
.type __bzero,#function
.globl memset
EXPORT_SYMBOL(__bzero)
EXPORT_SYMBOL(memset)
Expand Down

0 comments on commit d8f431a

Please sign in to comment.