lib: mpi: Use "static inline" instead of "extern inline" in header file for __GNUC__
PATCH 1/1 lib: mpi: Use "static inline" instead of "extern inline" in header file for __GNUC__
In header file, "extern inline" may cause multiple definition, so need change it to "static inline". And also need be quoted by __GNUC__ for they are as inline functions only for __GNUC__.
The related error (with allmodconfig under tile):
LD lib/mpi/mpi.o
lib/mpi/generic_mpih-mul1.o: In function `mpihelp_add_1':
generic_mpih-mul1.c:(.text+0x0): multiple definition of mpihelp_add_1' lib/mpi/generic_mpih-lshift.o:generic_mpih-lshift.c:(.text+0x0): first defined here lib/mpi/generic_mpih-mul1.o: In function mpihelp_add':
generic_mpih-mul1.c:(.text+0xe8): multiple definition of mpihelp_add' lib/mpi/generic_mpih-lshift.o:generic_mpih-lshift.c:(.text+0xe8): first defined here lib/mpi/generic_mpih-mul1.o: In function mpihelp_sub_1':
generic_mpih-mul1.c:(.text+0x278): multiple definition of mpihelp_sub_1' lib/mpi/generic_mpih-lshift.o:generic_mpih-lshift.c:(.text+0x278): first defined here lib/mpi/generic_mpih-mul1.o: In function mpihelp_sub':
generic_mpih-mul1.c:(.text+0x368): multiple definition of `mpihelp_sub' lib/mpi/generic_mpih-lshift.o:generic_mpih-lshift.c:(.text+0x368): first defined here
...
--- lib/mpi/mpi-inline.h | 2 +- lib/mpi/mpi-internal.h | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-)
lib/mpi/mpi-inline.h +1 -1
@@ -30,7 +30,7 @@#define G10_MPI_INLINE_H #ifndef G10_MPI_INLINE_DECL -#define G10_MPI_INLINE_DECL extern inline +#define G10_MPI_INLINE_DECL static inline#endif G10_MPI_INLINE_DECL mpi_limb_t
lib/mpi/mpi-internal.h +8 -4
@@ -168,20 +168,24 @@ void mpi_rshift_limbs(MPI a, unsigned int count);int mpi_lshift_limbs (MPI a,unsigned int count);/*-- mpihelp-add.c --*/ +#ifndef __GNUC__mpi_limb_t mpihelp_add_1 (mpi_ptr_t res_ptr,mpi_ptr_t s1_ptr,mpi_size_t s1_size,mpi_limb_t s2_limb); -mpi_limb_t mpihelp_add_n (mpi_ptr_t res_ptr,mpi_ptr_t s1_ptr, -mpi_ptr_t s2_ptr,mpi_size_t size);mpi_limb_t mpihelp_add (mpi_ptr_t res_ptr,mpi_ptr_t s1_ptr,mpi_size_t s1_size,mpi_ptr_t s2_ptr,mpi_size_t s2_size); +#endif +mpi_limb_t mpihelp_add_n (mpi_ptr_t res_ptr,mpi_ptr_t s1_ptr, +mpi_ptr_t s2_ptr,mpi_size_t size);/*-- mpihelp-sub.c --*/ +#ifndef __GNUC__mpi_limb_t mpihelp_sub_1 (mpi_ptr_t res_ptr,mpi_ptr_t s1_ptr,mpi_size_t s1_size,mpi_limb_t s2_limb); -mpi_limb_t mpihelp_sub_n (mpi_ptr_t res_ptr,mpi_ptr_t s1_ptr, -mpi_ptr_t s2_ptr,mpi_size_t size);mpi_limb_t mpihelp_sub (mpi_ptr_t res_ptr,mpi_ptr_t s1_ptr,mpi_size_t s1_size,mpi_ptr_t s2_ptr,mpi_size_t s2_size); +#endif +mpi_limb_t mpihelp_sub_n (mpi_ptr_t res_ptr,mpi_ptr_t s1_ptr, +mpi_ptr_t s2_ptr,mpi_size_t size);/*-- mpihelp-cmp.c --*/ int mpihelp_cmp (mpi_ptr_t op1_ptr,mpi_ptr_t op2_ptr,mpi_size_t size);
Signature · 1 line
1.9.3
Quoted 3 lines · Chen Gang
In header file, "extern inline" may cause multiple definition, so need change it to "static inline". And also need be quoted by
__GNUC__for they are as inline functions only for__GNUC__.
[]
lib/mpi/mpi-inline.h
Quoted 1 line
lib/mpi/mpi-inline.h +0
-0
[]
lib/mpi/mpi-inline.h line 33
Quoted 6 lines
lib/mpi/mpi-inline.h +1
-1@@ -30,7 +30,7 @@#define G10_MPI_INLINE_H #ifndef G10_MPI_INLINE_DECL -#define G10_MPI_INLINE_DECL extern inline +#define G10_MPI_INLINE_DECL static inline
Why not remove the #define and use static inline
in the 4 places the #define is currently used?
Quoted 10 lines · Joe Perches
Quoted 3 lines · Chen Gang
In header file, "extern inline" may cause multiple definition, so need change it to "static inline". And also need be quoted by
__GNUC__for they are as inline functions only for__GNUC__.[]
lib/mpi/mpi-inline.h
Quoted 1 line
lib/mpi/mpi-inline.h +0
-0[]
Quoted 3 lines
lib/mpi/mpi-inline.h +0
-0@@ -30,7 +30,7 @@#define G10_MPI_INLINE_H
Quoted 7 lines
lib/mpi/mpi-inline.h line 33
Quoted 3 lines
lib/mpi/mpi-inline.h +1
-1#ifndef G10_MPI_INLINE_DECL -#define G10_MPI_INLINE_DECL extern inline +#define G10_MPI_INLINE_DECL static inlineWhy not remove the #define and use static inline
in the 4 places the #define is currently used?
I just follow the original author's ways, the original author may think it is useful.
I guess, it may be used by other systems (neither Linux kernel nor gcc). For another compiler, it may need another syntax for it (although I am not quite sure about it).
So for safety reason, still keep it no touch, at present.
Thanks.
Signature · 3 lines
Chen Gang Open share and attitude like air water and life which God blessed