Skip to content

Commit 8478132

Browse files
author
Russell King
committed
Revert "arm: move exports to definitions"
This reverts commit 4dd1837. Moving the exports for assembly code into the assembly files breaks KSYM trimming, but also breaks modversions. While fixing the KSYM trimming is trivial, fixing modversions brings us to a technically worse position that we had prior to the above change: - We end up with the prototype definitions divorsed from everything else, which means that adding or removing assembly level ksyms become more fragile: * if adding a new assembly ksyms export, a missed prototype in asm-prototypes.h results in a successful build if no module in the selected configuration makes use of the symbol. * when removing a ksyms export, asm-prototypes.h will get forgotten, with armksyms.c, you'll get a build error if you forget to touch the file. - We end up with the same amount of include files and prototypes, they're just in a header file instead of a .c file with their exports. As for lines of code, we don't get much of a size reduction: (original commit) 47 files changed, 131 insertions(+), 208 deletions(-) (fix for ksyms trimming) 7 files changed, 18 insertions(+), 5 deletions(-) (two fixes for modversions) 1 file changed, 34 insertions(+) 3 files changed, 7 insertions(+), 2 deletions(-) which results in a net total of only 25 lines deleted. As there does not seem to be much benefit from this change of approach, revert the change. Signed-off-by: Russell King <[email protected]>
1 parent 2a38110 commit 8478132

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+208
-131
lines changed

arch/arm/include/asm/Kbuild

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ generic-y += early_ioremap.h
88
generic-y += emergency-restart.h
99
generic-y += errno.h
1010
generic-y += exec.h
11-
generic-y += export.h
1211
generic-y += ioctl.h
1312
generic-y += ipcbuf.h
1413
generic-y += irq_regs.h

arch/arm/kernel/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ endif
3333
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
3434
obj-$(CONFIG_ISA_DMA_API) += dma.o
3535
obj-$(CONFIG_FIQ) += fiq.o fiqasm.o
36-
obj-$(CONFIG_MODULES) += module.o
36+
obj-$(CONFIG_MODULES) += armksyms.o module.o
3737
obj-$(CONFIG_ARM_MODULE_PLTS) += module-plts.o
3838
obj-$(CONFIG_ISA_DMA) += dma-isa.o
3939
obj-$(CONFIG_PCI) += bios32.o isa.o

arch/arm/kernel/armksyms.c

Lines changed: 183 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
/*
2+
* linux/arch/arm/kernel/armksyms.c
3+
*
4+
* Copyright (C) 2000 Russell King
5+
*
6+
* This program is free software; you can redistribute it and/or modify
7+
* it under the terms of the GNU General Public License version 2 as
8+
* published by the Free Software Foundation.
9+
*/
10+
#include <linux/export.h>
11+
#include <linux/sched.h>
12+
#include <linux/string.h>
13+
#include <linux/cryptohash.h>
14+
#include <linux/delay.h>
15+
#include <linux/in6.h>
16+
#include <linux/syscalls.h>
17+
#include <linux/uaccess.h>
18+
#include <linux/io.h>
19+
#include <linux/arm-smccc.h>
20+
21+
#include <asm/checksum.h>
22+
#include <asm/ftrace.h>
23+
24+
/*
25+
* libgcc functions - functions that are used internally by the
26+
* compiler... (prototypes are not correct though, but that
27+
* doesn't really matter since they're not versioned).
28+
*/
29+
extern void __ashldi3(void);
30+
extern void __ashrdi3(void);
31+
extern void __divsi3(void);
32+
extern void __lshrdi3(void);
33+
extern void __modsi3(void);
34+
extern void __muldi3(void);
35+
extern void __ucmpdi2(void);
36+
extern void __udivsi3(void);
37+
extern void __umodsi3(void);
38+
extern void __do_div64(void);
39+
extern void __bswapsi2(void);
40+
extern void __bswapdi2(void);
41+
42+
extern void __aeabi_idiv(void);
43+
extern void __aeabi_idivmod(void);
44+
extern void __aeabi_lasr(void);
45+
extern void __aeabi_llsl(void);
46+
extern void __aeabi_llsr(void);
47+
extern void __aeabi_lmul(void);
48+
extern void __aeabi_uidiv(void);
49+
extern void __aeabi_uidivmod(void);
50+
extern void __aeabi_ulcmp(void);
51+
52+
extern void fpundefinstr(void);
53+
54+
void mmioset(void *, unsigned int, size_t);
55+
void mmiocpy(void *, const void *, size_t);
56+
57+
/* platform dependent support */
58+
EXPORT_SYMBOL(arm_delay_ops);
59+
60+
/* networking */
61+
EXPORT_SYMBOL(csum_partial);
62+
EXPORT_SYMBOL(csum_partial_copy_from_user);
63+
EXPORT_SYMBOL(csum_partial_copy_nocheck);
64+
EXPORT_SYMBOL(__csum_ipv6_magic);
65+
66+
/* io */
67+
#ifndef __raw_readsb
68+
EXPORT_SYMBOL(__raw_readsb);
69+
#endif
70+
#ifndef __raw_readsw
71+
EXPORT_SYMBOL(__raw_readsw);
72+
#endif
73+
#ifndef __raw_readsl
74+
EXPORT_SYMBOL(__raw_readsl);
75+
#endif
76+
#ifndef __raw_writesb
77+
EXPORT_SYMBOL(__raw_writesb);
78+
#endif
79+
#ifndef __raw_writesw
80+
EXPORT_SYMBOL(__raw_writesw);
81+
#endif
82+
#ifndef __raw_writesl
83+
EXPORT_SYMBOL(__raw_writesl);
84+
#endif
85+
86+
/* string / mem functions */
87+
EXPORT_SYMBOL(strchr);
88+
EXPORT_SYMBOL(strrchr);
89+
EXPORT_SYMBOL(memset);
90+
EXPORT_SYMBOL(memcpy);
91+
EXPORT_SYMBOL(memmove);
92+
EXPORT_SYMBOL(memchr);
93+
EXPORT_SYMBOL(__memzero);
94+
95+
EXPORT_SYMBOL(mmioset);
96+
EXPORT_SYMBOL(mmiocpy);
97+
98+
#ifdef CONFIG_MMU
99+
EXPORT_SYMBOL(copy_page);
100+
101+
EXPORT_SYMBOL(arm_copy_from_user);
102+
EXPORT_SYMBOL(arm_copy_to_user);
103+
EXPORT_SYMBOL(arm_clear_user);
104+
105+
EXPORT_SYMBOL(__get_user_1);
106+
EXPORT_SYMBOL(__get_user_2);
107+
EXPORT_SYMBOL(__get_user_4);
108+
EXPORT_SYMBOL(__get_user_8);
109+
110+
#ifdef __ARMEB__
111+
EXPORT_SYMBOL(__get_user_64t_1);
112+
EXPORT_SYMBOL(__get_user_64t_2);
113+
EXPORT_SYMBOL(__get_user_64t_4);
114+
EXPORT_SYMBOL(__get_user_32t_8);
115+
#endif
116+
117+
EXPORT_SYMBOL(__put_user_1);
118+
EXPORT_SYMBOL(__put_user_2);
119+
EXPORT_SYMBOL(__put_user_4);
120+
EXPORT_SYMBOL(__put_user_8);
121+
#endif
122+
123+
/* gcc lib functions */
124+
EXPORT_SYMBOL(__ashldi3);
125+
EXPORT_SYMBOL(__ashrdi3);
126+
EXPORT_SYMBOL(__divsi3);
127+
EXPORT_SYMBOL(__lshrdi3);
128+
EXPORT_SYMBOL(__modsi3);
129+
EXPORT_SYMBOL(__muldi3);
130+
EXPORT_SYMBOL(__ucmpdi2);
131+
EXPORT_SYMBOL(__udivsi3);
132+
EXPORT_SYMBOL(__umodsi3);
133+
EXPORT_SYMBOL(__do_div64);
134+
EXPORT_SYMBOL(__bswapsi2);
135+
EXPORT_SYMBOL(__bswapdi2);
136+
137+
#ifdef CONFIG_AEABI
138+
EXPORT_SYMBOL(__aeabi_idiv);
139+
EXPORT_SYMBOL(__aeabi_idivmod);
140+
EXPORT_SYMBOL(__aeabi_lasr);
141+
EXPORT_SYMBOL(__aeabi_llsl);
142+
EXPORT_SYMBOL(__aeabi_llsr);
143+
EXPORT_SYMBOL(__aeabi_lmul);
144+
EXPORT_SYMBOL(__aeabi_uidiv);
145+
EXPORT_SYMBOL(__aeabi_uidivmod);
146+
EXPORT_SYMBOL(__aeabi_ulcmp);
147+
#endif
148+
149+
/* bitops */
150+
EXPORT_SYMBOL(_set_bit);
151+
EXPORT_SYMBOL(_test_and_set_bit);
152+
EXPORT_SYMBOL(_clear_bit);
153+
EXPORT_SYMBOL(_test_and_clear_bit);
154+
EXPORT_SYMBOL(_change_bit);
155+
EXPORT_SYMBOL(_test_and_change_bit);
156+
EXPORT_SYMBOL(_find_first_zero_bit_le);
157+
EXPORT_SYMBOL(_find_next_zero_bit_le);
158+
EXPORT_SYMBOL(_find_first_bit_le);
159+
EXPORT_SYMBOL(_find_next_bit_le);
160+
161+
#ifdef __ARMEB__
162+
EXPORT_SYMBOL(_find_first_zero_bit_be);
163+
EXPORT_SYMBOL(_find_next_zero_bit_be);
164+
EXPORT_SYMBOL(_find_first_bit_be);
165+
EXPORT_SYMBOL(_find_next_bit_be);
166+
#endif
167+
168+
#ifdef CONFIG_FUNCTION_TRACER
169+
#ifdef CONFIG_OLD_MCOUNT
170+
EXPORT_SYMBOL(mcount);
171+
#endif
172+
EXPORT_SYMBOL(__gnu_mcount_nc);
173+
#endif
174+
175+
#ifdef CONFIG_ARM_PATCH_PHYS_VIRT
176+
EXPORT_SYMBOL(__pv_phys_pfn_offset);
177+
EXPORT_SYMBOL(__pv_offset);
178+
#endif
179+
180+
#ifdef CONFIG_HAVE_ARM_SMCCC
181+
EXPORT_SYMBOL(arm_smccc_smc);
182+
EXPORT_SYMBOL(arm_smccc_hvc);
183+
#endif

arch/arm/kernel/entry-ftrace.S

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#include <asm/assembler.h>
88
#include <asm/ftrace.h>
99
#include <asm/unwind.h>
10-
#include <asm/export.h>
1110

1211
#include "entry-header.S"
1312

@@ -154,7 +153,6 @@ ENTRY(mcount)
154153
__mcount _old
155154
#endif
156155
ENDPROC(mcount)
157-
EXPORT_SYMBOL(mcount)
158156

159157
#ifdef CONFIG_DYNAMIC_FTRACE
160158
ENTRY(ftrace_caller_old)
@@ -207,7 +205,6 @@ UNWIND(.fnstart)
207205
#endif
208206
UNWIND(.fnend)
209207
ENDPROC(__gnu_mcount_nc)
210-
EXPORT_SYMBOL(__gnu_mcount_nc)
211208

212209
#ifdef CONFIG_DYNAMIC_FTRACE
213210
ENTRY(ftrace_caller)

arch/arm/kernel/head.S

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include <asm/memory.h>
2323
#include <asm/thread_info.h>
2424
#include <asm/pgtable.h>
25-
#include <asm/export.h>
2625

2726
#if defined(CONFIG_DEBUG_LL) && !defined(CONFIG_DEBUG_SEMIHOSTING)
2827
#include CONFIG_DEBUG_LL_INCLUDE
@@ -728,8 +727,6 @@ __pv_phys_pfn_offset:
728727
__pv_offset:
729728
.quad 0
730729
.size __pv_offset, . -__pv_offset
731-
EXPORT_SYMBOL(__pv_phys_pfn_offset)
732-
EXPORT_SYMBOL(__pv_offset)
733730
#endif
734731

735732
#include "head-common.S"

arch/arm/kernel/smccc-call.S

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include <asm/opcodes-sec.h>
1717
#include <asm/opcodes-virt.h>
1818
#include <asm/unwind.h>
19-
#include <asm/export.h>
2019

2120
/*
2221
* Wrap c macros in asm macros to delay expansion until after the
@@ -52,7 +51,6 @@ UNWIND( .fnend)
5251
ENTRY(arm_smccc_smc)
5352
SMCCC SMCCC_SMC
5453
ENDPROC(arm_smccc_smc)
55-
EXPORT_SYMBOL(arm_smccc_smc)
5654

5755
/*
5856
* void smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
@@ -62,4 +60,3 @@ EXPORT_SYMBOL(arm_smccc_smc)
6260
ENTRY(arm_smccc_hvc)
6361
SMCCC SMCCC_HVC
6462
ENDPROC(arm_smccc_hvc)
65-
EXPORT_SYMBOL(arm_smccc_hvc)

arch/arm/lib/ashldi3.S

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */
2828

2929
#include <linux/linkage.h>
3030
#include <asm/assembler.h>
31-
#include <asm/export.h>
3231

3332
#ifdef __ARMEB__
3433
#define al r1
@@ -53,5 +52,3 @@ ENTRY(__aeabi_llsl)
5352

5453
ENDPROC(__ashldi3)
5554
ENDPROC(__aeabi_llsl)
56-
EXPORT_SYMBOL(__ashldi3)
57-
EXPORT_SYMBOL(__aeabi_llsl)

arch/arm/lib/ashrdi3.S

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ Boston, MA 02110-1301, USA. */
2828

2929
#include <linux/linkage.h>
3030
#include <asm/assembler.h>
31-
#include <asm/export.h>
3231

3332
#ifdef __ARMEB__
3433
#define al r1
@@ -53,5 +52,3 @@ ENTRY(__aeabi_lasr)
5352

5453
ENDPROC(__ashrdi3)
5554
ENDPROC(__aeabi_lasr)
56-
EXPORT_SYMBOL(__ashrdi3)
57-
EXPORT_SYMBOL(__aeabi_lasr)

arch/arm/lib/bitops.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include <asm/assembler.h>
22
#include <asm/unwind.h>
3-
#include <asm/export.h>
43

54
#if __LINUX_ARM_ARCH__ >= 6
65
.macro bitop, name, instr
@@ -26,7 +25,6 @@ UNWIND( .fnstart )
2625
bx lr
2726
UNWIND( .fnend )
2827
ENDPROC(\name )
29-
EXPORT_SYMBOL(\name )
3028
.endm
3129

3230
.macro testop, name, instr, store
@@ -57,7 +55,6 @@ UNWIND( .fnstart )
5755
2: bx lr
5856
UNWIND( .fnend )
5957
ENDPROC(\name )
60-
EXPORT_SYMBOL(\name )
6158
.endm
6259
#else
6360
.macro bitop, name, instr
@@ -77,7 +74,6 @@ UNWIND( .fnstart )
7774
ret lr
7875
UNWIND( .fnend )
7976
ENDPROC(\name )
80-
EXPORT_SYMBOL(\name )
8177
.endm
8278

8379
/**
@@ -106,6 +102,5 @@ UNWIND( .fnstart )
106102
ret lr
107103
UNWIND( .fnend )
108104
ENDPROC(\name )
109-
EXPORT_SYMBOL(\name )
110105
.endm
111106
#endif

arch/arm/lib/bswapsdi2.S

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include <linux/linkage.h>
22
#include <asm/assembler.h>
3-
#include <asm/export.h>
43

54
#if __LINUX_ARM_ARCH__ >= 6
65
ENTRY(__bswapsi2)
@@ -36,5 +35,3 @@ ENTRY(__bswapdi2)
3635
ret lr
3736
ENDPROC(__bswapdi2)
3837
#endif
39-
EXPORT_SYMBOL(__bswapsi2)
40-
EXPORT_SYMBOL(__bswapdi2)

arch/arm/lib/clear_user.S

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
#include <linux/linkage.h>
1111
#include <asm/assembler.h>
1212
#include <asm/unwind.h>
13-
#include <asm/export.h>
1413

1514
.text
1615

@@ -51,9 +50,6 @@ USER( strnebt r2, [r0])
5150
UNWIND(.fnend)
5251
ENDPROC(arm_clear_user)
5352
ENDPROC(__clear_user_std)
54-
#ifndef CONFIG_UACCESS_WITH_MEMCPY
55-
EXPORT_SYMBOL(arm_clear_user)
56-
#endif
5753

5854
.pushsection .text.fixup,"ax"
5955
.align 0

arch/arm/lib/copy_from_user.S

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include <linux/linkage.h>
1414
#include <asm/assembler.h>
1515
#include <asm/unwind.h>
16-
#include <asm/export.h>
1716

1817
/*
1918
* Prototype:
@@ -95,7 +94,6 @@ ENTRY(arm_copy_from_user)
9594
#include "copy_template.S"
9695

9796
ENDPROC(arm_copy_from_user)
98-
EXPORT_SYMBOL(arm_copy_from_user)
9997

10098
.pushsection .fixup,"ax"
10199
.align 0

arch/arm/lib/copy_page.S

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include <asm/assembler.h>
1414
#include <asm/asm-offsets.h>
1515
#include <asm/cache.h>
16-
#include <asm/export.h>
1716

1817
#define COPY_COUNT (PAGE_SZ / (2 * L1_CACHE_BYTES) PLD( -1 ))
1918

@@ -46,4 +45,3 @@ ENTRY(copy_page)
4645
PLD( beq 2b )
4746
ldmfd sp!, {r4, pc} @ 3
4847
ENDPROC(copy_page)
49-
EXPORT_SYMBOL(copy_page)

0 commit comments

Comments
 (0)