On Wed, 3 Feb 2016, Al Viro wrote: > From: Al Viro <v...@zeniv.linux.org.uk> > > Signed-off-by: Al Viro <v...@zeniv.linux.org.uk>
The following construct is incompatible with my autoksyms series: > diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h > index 7d807cf..df06638 100644 > --- a/arch/arm/lib/bitops.h > +++ b/arch/arm/lib/bitops.h > @@ -1,5 +1,6 @@ > #include <asm/assembler.h> > #include <asm/unwind.h> > +#include <asm/export.h> > > #if __LINUX_ARM_ARCH__ >= 6 > .macro bitop, name, instr > @@ -25,6 +26,7 @@ UNWIND( .fnstart ) > bx lr > UNWIND( .fnend ) > ENDPROC(\name ) > +EXPORT_SYMBOL(\name ) > .endm Here \name is an assembler macro argument and it is not subject to preprocessor substitutions. And the assembler doesn't see preprocessor macros either. So I'd suggest folding the following patch to let the preprocessor see the actual symbol name. It doesn't make the source code as compact but it works with my series. diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h index df06638b32..7d807cfd8e 100644 --- a/arch/arm/lib/bitops.h +++ b/arch/arm/lib/bitops.h @@ -1,6 +1,5 @@ #include <asm/assembler.h> #include <asm/unwind.h> -#include <asm/export.h> #if __LINUX_ARM_ARCH__ >= 6 .macro bitop, name, instr @@ -26,7 +25,6 @@ UNWIND( .fnstart ) bx lr UNWIND( .fnend ) ENDPROC(\name ) -EXPORT_SYMBOL(\name ) .endm .macro testop, name, instr, store @@ -57,7 +55,6 @@ UNWIND( .fnstart ) 2: bx lr UNWIND( .fnend ) ENDPROC(\name ) -EXPORT_SYMBOL(\name ) .endm #else .macro bitop, name, instr @@ -77,7 +74,6 @@ UNWIND( .fnstart ) ret lr UNWIND( .fnend ) ENDPROC(\name ) -EXPORT_SYMBOL(\name ) .endm /** @@ -106,6 +102,5 @@ UNWIND( .fnstart ) ret lr UNWIND( .fnend ) ENDPROC(\name ) -EXPORT_SYMBOL(\name ) .endm #endif diff --git a/arch/arm/lib/changebit.S b/arch/arm/lib/changebit.S index f402786217..1cfdb138d2 100644 --- a/arch/arm/lib/changebit.S +++ b/arch/arm/lib/changebit.S @@ -9,7 +9,10 @@ */ #include <linux/linkage.h> #include <asm/assembler.h> +#include <asm/export.h> #include "bitops.h" .text bitop _change_bit, eor + +EXPORT_SYMBOL(_change_bit) diff --git a/arch/arm/lib/clearbit.S b/arch/arm/lib/clearbit.S index f6b75fb64d..e901ca5af0 100644 --- a/arch/arm/lib/clearbit.S +++ b/arch/arm/lib/clearbit.S @@ -9,7 +9,10 @@ */ #include <linux/linkage.h> #include <asm/assembler.h> +#include <asm/export.h> #include "bitops.h" .text bitop _clear_bit, bic + +EXPORT_SYMBOL(_clear_bit) diff --git a/arch/arm/lib/setbit.S b/arch/arm/lib/setbit.S index 618fedae4b..3c8b11240f 100644 --- a/arch/arm/lib/setbit.S +++ b/arch/arm/lib/setbit.S @@ -9,7 +9,10 @@ */ #include <linux/linkage.h> #include <asm/assembler.h> +#include <asm/export.h> #include "bitops.h" .text bitop _set_bit, orr + +EXPORT_SYMBOL(_set_bit) diff --git a/arch/arm/lib/testchangebit.S b/arch/arm/lib/testchangebit.S index 4becdc3a59..e3d19b87fb 100644 --- a/arch/arm/lib/testchangebit.S +++ b/arch/arm/lib/testchangebit.S @@ -9,7 +9,10 @@ */ #include <linux/linkage.h> #include <asm/assembler.h> +#include <asm/export.h> #include "bitops.h" .text testop _test_and_change_bit, eor, str + +EXPORT_SYMBOL(_test_and_change_bit) diff --git a/arch/arm/lib/testclearbit.S b/arch/arm/lib/testclearbit.S index 918841dcce..d247e6f70f 100644 --- a/arch/arm/lib/testclearbit.S +++ b/arch/arm/lib/testclearbit.S @@ -9,7 +9,10 @@ */ #include <linux/linkage.h> #include <asm/assembler.h> +#include <asm/export.h> #include "bitops.h" .text testop _test_and_clear_bit, bicne, strne + +EXPORT_SYMBOL(_test_and_clear_bit) diff --git a/arch/arm/lib/testsetbit.S b/arch/arm/lib/testsetbit.S index 8d1b2fe9e4..76800ff601 100644 --- a/arch/arm/lib/testsetbit.S +++ b/arch/arm/lib/testsetbit.S @@ -9,7 +9,10 @@ */ #include <linux/linkage.h> #include <asm/assembler.h> +#include <asm/export.h> #include "bitops.h" .text testop _test_and_set_bit, orreq, streq + +EXPORT_SYMBOL(_test_and_set_bit)