kernel: fix stripping symbol exports
SVN-Revision: 34458
This commit is contained in:
parent
d38be845f4
commit
24b31c9428
@ -67,24 +67,40 @@ define BuildKernel
|
|||||||
$(Kernel/Prepare)
|
$(Kernel/Prepare)
|
||||||
touch $$@
|
touch $$@
|
||||||
|
|
||||||
$(KERNEL_BUILD_DIR)/symtab.txt: FORCE
|
$(KERNEL_BUILD_DIR)/symtab.h: FORCE
|
||||||
|
rm -f $(KERNEL_BUILD_DIR)/symtab.h
|
||||||
|
touch $(KERNEL_BUILD_DIR)/symtab.h
|
||||||
|
+$(MAKE) $(KERNEL_MAKEOPTS) vmlinux
|
||||||
find $(LINUX_DIR) $(STAGING_DIR_ROOT)/lib/modules -name \*.ko | \
|
find $(LINUX_DIR) $(STAGING_DIR_ROOT)/lib/modules -name \*.ko | \
|
||||||
xargs $(TARGET_CROSS)nm | \
|
xargs $(TARGET_CROSS)nm | \
|
||||||
awk '$$$$1 == "U" { print $$$$2 } ' | \
|
awk '$$$$1 == "U" { print $$$$2 } ' | \
|
||||||
sort -u > $$@
|
sort -u > $(KERNEL_BUILD_DIR)/mod_symtab.txt
|
||||||
|
$(TARGET_CROSS)nm -n $(LINUX_DIR)/vmlinux.o | grep ' r __ksymtab' | sed -e 's,........ r __ksymtab_,,' > $(KERNEL_BUILD_DIR)/kernel_symtab.txt
|
||||||
$(KERNEL_BUILD_DIR)/symtab.h: $(KERNEL_BUILD_DIR)/symtab.txt
|
grep -f $(KERNEL_BUILD_DIR)/mod_symtab.txt $(KERNEL_BUILD_DIR)/kernel_symtab.txt > $(KERNEL_BUILD_DIR)/sym_include.txt
|
||||||
|
grep -vf $(KERNEL_BUILD_DIR)/mod_symtab.txt $(KERNEL_BUILD_DIR)/kernel_symtab.txt > $(KERNEL_BUILD_DIR)/sym_exclude.txt
|
||||||
( \
|
( \
|
||||||
echo '#define SYMTAB_KEEP \'; \
|
echo '#define SYMTAB_KEEP \'; \
|
||||||
cat $(KERNEL_BUILD_DIR)/symtab.txt | \
|
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
||||||
awk '{print "*(__ksymtab." $$$$1 ") \\" }'; \
|
awk '{print "*(__ksymtab." $$$$1 ") \\" }'; \
|
||||||
echo; \
|
echo; \
|
||||||
echo '#define SYMTAB_KEEP_GPL \'; \
|
echo '#define SYMTAB_KEEP_GPL \'; \
|
||||||
cat $(KERNEL_BUILD_DIR)/symtab.txt | \
|
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
||||||
awk '{print "*(__ksymtab_gpl." $$$$1 ") \\" }'; \
|
awk '{print "*(__ksymtab_gpl." $$$$1 ") \\" }'; \
|
||||||
echo; \
|
echo; \
|
||||||
echo '#define SYMTAB_KEEP_STR \'; \
|
echo '#define SYMTAB_KEEP_STR \'; \
|
||||||
cat $(KERNEL_BUILD_DIR)/symtab.txt | \
|
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
||||||
|
awk '{print "*(__ksymtab_strings." $$$$1 ") \\" }'; \
|
||||||
|
echo; \
|
||||||
|
echo '#define SYMTAB_DISCARD \'; \
|
||||||
|
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
||||||
|
awk '{print "*(__ksymtab." $$$$1 ") \\" }'; \
|
||||||
|
echo; \
|
||||||
|
echo '#define SYMTAB_DISCARD_GPL \'; \
|
||||||
|
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
||||||
|
awk '{print "*(__ksymtab_gpl." $$$$1 ") \\" }'; \
|
||||||
|
echo; \
|
||||||
|
echo '#define SYMTAB_DISCARD_STR \'; \
|
||||||
|
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
||||||
awk '{print "*(__ksymtab_strings." $$$$1 ") \\" }'; \
|
awk '{print "*(__ksymtab_strings." $$$$1 ") \\" }'; \
|
||||||
echo; \
|
echo; \
|
||||||
) > $$@
|
) > $$@
|
||||||
|
@ -1,34 +1,25 @@
|
|||||||
--- a/include/asm-generic/vmlinux.lds.h
|
--- a/include/asm-generic/vmlinux.lds.h
|
||||||
+++ b/include/asm-generic/vmlinux.lds.h
|
+++ b/include/asm-generic/vmlinux.lds.h
|
||||||
@@ -52,6 +52,27 @@
|
@@ -52,6 +52,18 @@
|
||||||
#define LOAD_OFFSET 0
|
#define LOAD_OFFSET 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#ifndef SYMTAB_KEEP_STR
|
+#ifndef SYMTAB_KEEP_STR
|
||||||
+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
|
|
||||||
+#define SYMTAB_DISCARD_STR
|
|
||||||
+#else
|
|
||||||
+#define SYMTAB_DISCARD_STR *(__ksymtab_strings+*)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#ifndef SYMTAB_KEEP
|
|
||||||
+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
|
+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
|
||||||
+#define SYMTAB_DISCARD
|
+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
|
||||||
+#else
|
+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
|
||||||
+#define SYMTAB_DISCARD *(SORT(___ksymtab+*))
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#ifndef SYMTAB_KEEP_GPL
|
+#ifndef SYMTAB_DISCARD
|
||||||
+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
|
+#define SYMTAB_DISCARD
|
||||||
+#define SYMTAB_DISCARD_GPL
|
+#define SYMTAB_DISCARD_GPL
|
||||||
+#else
|
+#define SYMTAB_DISCARD_STR
|
||||||
+#define SYMTAB_DISCARD_GPL *(SORT(___ksymtab_gpl+*))
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
#ifndef SYMBOL_PREFIX
|
#ifndef SYMBOL_PREFIX
|
||||||
#define VMLINUX_SYMBOL(sym) sym
|
#define VMLINUX_SYMBOL(sym) sym
|
||||||
#else
|
#else
|
||||||
@@ -275,14 +296,14 @@
|
@@ -275,14 +287,14 @@
|
||||||
/* Kernel symbol table: Normal symbols */ \
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
||||||
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
||||||
@ -45,7 +36,7 @@
|
|||||||
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
@@ -344,7 +365,7 @@
|
@@ -344,7 +356,7 @@
|
||||||
\
|
\
|
||||||
/* Kernel symbol table: strings */ \
|
/* Kernel symbol table: strings */ \
|
||||||
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
||||||
@ -54,7 +45,7 @@
|
|||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -676,6 +697,9 @@
|
@@ -676,6 +688,9 @@
|
||||||
EXIT_TEXT \
|
EXIT_TEXT \
|
||||||
EXIT_DATA \
|
EXIT_DATA \
|
||||||
EXIT_CALL \
|
EXIT_CALL \
|
||||||
@ -87,3 +78,14 @@
|
|||||||
= MODULE_SYMBOL_PREFIX #sym; \
|
= MODULE_SYMBOL_PREFIX #sym; \
|
||||||
static const struct kernel_symbol __ksymtab_##sym \
|
static const struct kernel_symbol __ksymtab_##sym \
|
||||||
__used \
|
__used \
|
||||||
|
--- a/scripts/Makefile.build
|
||||||
|
+++ b/scripts/Makefile.build
|
||||||
|
@@ -346,7 +346,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $(
|
||||||
|
# Linker scripts preprocessor (.lds.S -> .lds)
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
quiet_cmd_cpp_lds_S = LDS $@
|
||||||
|
- cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \
|
||||||
|
+ cmd_cpp_lds_S = $(CPP) $(EXTRA_LDSFLAGS) $(cpp_flags) -P -C -U$(ARCH) \
|
||||||
|
-D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<
|
||||||
|
|
||||||
|
$(obj)/%.lds: $(src)/%.lds.S FORCE
|
||||||
|
@ -1,34 +1,25 @@
|
|||||||
--- a/include/asm-generic/vmlinux.lds.h
|
--- a/include/asm-generic/vmlinux.lds.h
|
||||||
+++ b/include/asm-generic/vmlinux.lds.h
|
+++ b/include/asm-generic/vmlinux.lds.h
|
||||||
@@ -52,6 +52,27 @@
|
@@ -52,6 +52,18 @@
|
||||||
#define LOAD_OFFSET 0
|
#define LOAD_OFFSET 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#ifndef SYMTAB_KEEP_STR
|
+#ifndef SYMTAB_KEEP_STR
|
||||||
+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
|
|
||||||
+#define SYMTAB_DISCARD_STR
|
|
||||||
+#else
|
|
||||||
+#define SYMTAB_DISCARD_STR *(__ksymtab_strings+*)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#ifndef SYMTAB_KEEP
|
|
||||||
+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
|
+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
|
||||||
+#define SYMTAB_DISCARD
|
+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
|
||||||
+#else
|
+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
|
||||||
+#define SYMTAB_DISCARD *(SORT(___ksymtab+*))
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#ifndef SYMTAB_KEEP_GPL
|
+#ifndef SYMTAB_DISCARD
|
||||||
+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
|
+#define SYMTAB_DISCARD
|
||||||
+#define SYMTAB_DISCARD_GPL
|
+#define SYMTAB_DISCARD_GPL
|
||||||
+#else
|
+#define SYMTAB_DISCARD_STR
|
||||||
+#define SYMTAB_DISCARD_GPL *(SORT(___ksymtab_gpl+*))
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
#ifndef SYMBOL_PREFIX
|
#ifndef SYMBOL_PREFIX
|
||||||
#define VMLINUX_SYMBOL(sym) sym
|
#define VMLINUX_SYMBOL(sym) sym
|
||||||
#else
|
#else
|
||||||
@@ -276,14 +297,14 @@
|
@@ -276,14 +288,14 @@
|
||||||
/* Kernel symbol table: Normal symbols */ \
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
||||||
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
||||||
@ -45,7 +36,7 @@
|
|||||||
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
@@ -345,7 +366,7 @@
|
@@ -345,7 +357,7 @@
|
||||||
\
|
\
|
||||||
/* Kernel symbol table: strings */ \
|
/* Kernel symbol table: strings */ \
|
||||||
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
||||||
@ -54,7 +45,7 @@
|
|||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -670,6 +691,9 @@
|
@@ -670,6 +682,9 @@
|
||||||
EXIT_TEXT \
|
EXIT_TEXT \
|
||||||
EXIT_DATA \
|
EXIT_DATA \
|
||||||
EXIT_CALL \
|
EXIT_CALL \
|
||||||
@ -87,3 +78,14 @@
|
|||||||
= MODULE_SYMBOL_PREFIX #sym; \
|
= MODULE_SYMBOL_PREFIX #sym; \
|
||||||
static const struct kernel_symbol __ksymtab_##sym \
|
static const struct kernel_symbol __ksymtab_##sym \
|
||||||
__used \
|
__used \
|
||||||
|
--- a/scripts/Makefile.build
|
||||||
|
+++ b/scripts/Makefile.build
|
||||||
|
@@ -348,7 +348,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $(
|
||||||
|
# Linker scripts preprocessor (.lds.S -> .lds)
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
quiet_cmd_cpp_lds_S = LDS $@
|
||||||
|
- cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \
|
||||||
|
+ cmd_cpp_lds_S = $(CPP) $(EXTRA_LDSFLAGS) $(cpp_flags) -P -C -U$(ARCH) \
|
||||||
|
-D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<
|
||||||
|
|
||||||
|
$(obj)/%.lds: $(src)/%.lds.S FORCE
|
||||||
|
@ -1,34 +1,25 @@
|
|||||||
--- a/include/asm-generic/vmlinux.lds.h
|
--- a/include/asm-generic/vmlinux.lds.h
|
||||||
+++ b/include/asm-generic/vmlinux.lds.h
|
+++ b/include/asm-generic/vmlinux.lds.h
|
||||||
@@ -52,6 +52,27 @@
|
@@ -52,6 +52,18 @@
|
||||||
#define LOAD_OFFSET 0
|
#define LOAD_OFFSET 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#ifndef SYMTAB_KEEP_STR
|
+#ifndef SYMTAB_KEEP_STR
|
||||||
+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
|
|
||||||
+#define SYMTAB_DISCARD_STR
|
|
||||||
+#else
|
|
||||||
+#define SYMTAB_DISCARD_STR *(__ksymtab_strings+*)
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#ifndef SYMTAB_KEEP
|
|
||||||
+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
|
+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
|
||||||
+#define SYMTAB_DISCARD
|
+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
|
||||||
+#else
|
+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
|
||||||
+#define SYMTAB_DISCARD *(SORT(___ksymtab+*))
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#ifndef SYMTAB_KEEP_GPL
|
+#ifndef SYMTAB_DISCARD
|
||||||
+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
|
+#define SYMTAB_DISCARD
|
||||||
+#define SYMTAB_DISCARD_GPL
|
+#define SYMTAB_DISCARD_GPL
|
||||||
+#else
|
+#define SYMTAB_DISCARD_STR
|
||||||
+#define SYMTAB_DISCARD_GPL *(SORT(___ksymtab_gpl+*))
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
#ifndef SYMBOL_PREFIX
|
#ifndef SYMBOL_PREFIX
|
||||||
#define VMLINUX_SYMBOL(sym) sym
|
#define VMLINUX_SYMBOL(sym) sym
|
||||||
#else
|
#else
|
||||||
@@ -276,14 +297,14 @@
|
@@ -276,14 +288,14 @@
|
||||||
/* Kernel symbol table: Normal symbols */ \
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
||||||
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
||||||
@ -45,7 +36,7 @@
|
|||||||
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
@@ -345,7 +366,7 @@
|
@@ -345,7 +357,7 @@
|
||||||
\
|
\
|
||||||
/* Kernel symbol table: strings */ \
|
/* Kernel symbol table: strings */ \
|
||||||
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
||||||
@ -54,7 +45,7 @@
|
|||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -679,6 +700,9 @@
|
@@ -679,6 +691,9 @@
|
||||||
EXIT_TEXT \
|
EXIT_TEXT \
|
||||||
EXIT_DATA \
|
EXIT_DATA \
|
||||||
EXIT_CALL \
|
EXIT_CALL \
|
||||||
@ -87,3 +78,14 @@
|
|||||||
= MODULE_SYMBOL_PREFIX #sym; \
|
= MODULE_SYMBOL_PREFIX #sym; \
|
||||||
static const struct kernel_symbol __ksymtab_##sym \
|
static const struct kernel_symbol __ksymtab_##sym \
|
||||||
__used \
|
__used \
|
||||||
|
--- a/scripts/Makefile.build
|
||||||
|
+++ b/scripts/Makefile.build
|
||||||
|
@@ -348,7 +348,7 @@ targets += $(extra-y) $(MAKECMDGOALS) $(
|
||||||
|
# Linker scripts preprocessor (.lds.S -> .lds)
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
quiet_cmd_cpp_lds_S = LDS $@
|
||||||
|
- cmd_cpp_lds_S = $(CPP) $(cpp_flags) -P -C -U$(ARCH) \
|
||||||
|
+ cmd_cpp_lds_S = $(CPP) $(EXTRA_LDSFLAGS) $(cpp_flags) -P -C -U$(ARCH) \
|
||||||
|
-D__ASSEMBLY__ -DLINKER_SCRIPT -o $@ $<
|
||||||
|
|
||||||
|
$(obj)/%.lds: $(src)/%.lds.S FORCE
|
||||||
|
Loading…
Reference in New Issue
Block a user