kernel: use -ffunction-sections, -fdata-sections and --gc-sections on mips
in combination with kernel symbol export stripping this significantly reduces the kernel image size SVN-Revision: 35320
This commit is contained in:
parent
7809d73fd2
commit
8933b918cd
52 changed files with 864 additions and 135 deletions
|
@ -81,15 +81,11 @@ define BuildKernel
|
||||||
( \
|
( \
|
||||||
echo '#define SYMTAB_KEEP \'; \
|
echo '#define SYMTAB_KEEP \'; \
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
||||||
awk '{print "*(___ksymtab+" $$$$1 ") \\" }'; \
|
awk '{print "KEEP(*(___ksymtab+" $$$$1 ")) \\" }'; \
|
||||||
echo; \
|
echo; \
|
||||||
echo '#define SYMTAB_KEEP_GPL \'; \
|
echo '#define SYMTAB_KEEP_GPL \'; \
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
||||||
awk '{print "*(___ksymtab_gpl+" $$$$1 ") \\" }'; \
|
awk '{print "KEEP(*(___ksymtab_gpl+" $$$$1 ")) \\" }'; \
|
||||||
echo; \
|
|
||||||
echo '#define SYMTAB_KEEP_STR \'; \
|
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
|
|
||||||
awk '{print "*(__ksymtab_strings." $$$$1 ") \\" }'; \
|
|
||||||
echo; \
|
echo; \
|
||||||
echo '#define SYMTAB_DISCARD \'; \
|
echo '#define SYMTAB_DISCARD \'; \
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
||||||
|
@ -99,10 +95,6 @@ define BuildKernel
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
||||||
awk '{print "*(___ksymtab_gpl+" $$$$1 ") \\" }'; \
|
awk '{print "*(___ksymtab_gpl+" $$$$1 ") \\" }'; \
|
||||||
echo; \
|
echo; \
|
||||||
echo '#define SYMTAB_DISCARD_STR \'; \
|
|
||||||
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
|
|
||||||
awk '{print "*(__ksymtab_strings." $$$$1 ") \\" }'; \
|
|
||||||
echo; \
|
|
||||||
) > $$@
|
) > $$@
|
||||||
|
|
||||||
$(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_KCONFIG_LIST) $(TOPDIR)/.config
|
$(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_KCONFIG_LIST) $(TOPDIR)/.config
|
||||||
|
|
|
@ -32,19 +32,18 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||||
- status = gpio_request(cdata->gpio, dev_name(&spi->dev));
|
- status = gpio_request(cdata->gpio, dev_name(&spi->dev));
|
||||||
- if (status)
|
- if (status)
|
||||||
- return status;
|
- return status;
|
||||||
-
|
+ flags = GPIOF_DIR_OUT;
|
||||||
|
+ if (spi->mode & SPI_CS_HIGH)
|
||||||
|
+ flags |= GPIOF_INIT_HIGH;
|
||||||
|
+ else
|
||||||
|
+ flags |= GPIOF_INIT_LOW;
|
||||||
|
|
||||||
- status = gpio_direction_output(cdata->gpio,
|
- status = gpio_direction_output(cdata->gpio,
|
||||||
- spi->mode & SPI_CS_HIGH);
|
- spi->mode & SPI_CS_HIGH);
|
||||||
- if (status) {
|
- if (status) {
|
||||||
- gpio_free(cdata->gpio);
|
- gpio_free(cdata->gpio);
|
||||||
- return status;
|
- return status;
|
||||||
- }
|
- }
|
||||||
+ flags = GPIOF_DIR_OUT;
|
|
||||||
+ if (spi->mode & SPI_CS_HIGH)
|
|
||||||
+ flags |= GPIOF_INIT_HIGH;
|
|
||||||
+ else
|
|
||||||
+ flags |= GPIOF_INIT_LOW;
|
|
||||||
+
|
|
||||||
+ status = gpio_request_one(cdata->gpio, flags,
|
+ status = gpio_request_one(cdata->gpio, flags,
|
||||||
+ dev_name(&spi->dev));
|
+ dev_name(&spi->dev));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/arch/mips/Makefile
|
--- a/arch/mips/Makefile
|
||||||
+++ b/arch/mips/Makefile
|
+++ b/arch/mips/Makefile
|
||||||
@@ -180,6 +180,7 @@ endif
|
@@ -182,6 +182,7 @@ endif
|
||||||
#
|
#
|
||||||
libs-$(CONFIG_ARC) += arch/mips/fw/arc/
|
libs-$(CONFIG_ARC) += arch/mips/fw/arc/
|
||||||
libs-$(CONFIG_CFE) += arch/mips/fw/cfe/
|
libs-$(CONFIG_CFE) += arch/mips/fw/cfe/
|
||||||
|
|
372
target/linux/generic/patches-3.7/220-gc_sections.patch
Normal file
372
target/linux/generic/patches-3.7/220-gc_sections.patch
Normal file
|
@ -0,0 +1,372 @@
|
||||||
|
--- a/arch/mips/Makefile
|
||||||
|
+++ b/arch/mips/Makefile
|
||||||
|
@@ -89,10 +89,12 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
|
||||||
|
#
|
||||||
|
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
|
||||||
|
cflags-y += -msoft-float
|
||||||
|
-LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
||||||
|
+LDFLAGS_vmlinux += -G 0 -static -n -nostdlib --gc-sections
|
||||||
|
KBUILD_AFLAGS_MODULE += -mlong-calls
|
||||||
|
KBUILD_CFLAGS_MODULE += -mlong-calls
|
||||||
|
|
||||||
|
+KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
|
||||||
|
+
|
||||||
|
cflags-y += -ffreestanding
|
||||||
|
|
||||||
|
#
|
||||||
|
--- a/arch/mips/kernel/vmlinux.lds.S
|
||||||
|
+++ b/arch/mips/kernel/vmlinux.lds.S
|
||||||
|
@@ -66,7 +66,7 @@ SECTIONS
|
||||||
|
/* Exception table for data bus errors */
|
||||||
|
__dbe_table : {
|
||||||
|
__start___dbe_table = .;
|
||||||
|
- *(__dbe_table)
|
||||||
|
+ KEEP(*(__dbe_table))
|
||||||
|
__stop___dbe_table = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -111,7 +111,7 @@ SECTIONS
|
||||||
|
. = ALIGN(4);
|
||||||
|
.mips.machines.init : AT(ADDR(.mips.machines.init) - LOAD_OFFSET) {
|
||||||
|
__mips_machines_start = .;
|
||||||
|
- *(.mips.machines.init)
|
||||||
|
+ KEEP(*(.mips.machines.init))
|
||||||
|
__mips_machines_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- a/include/asm-generic/vmlinux.lds.h
|
||||||
|
+++ b/include/asm-generic/vmlinux.lds.h
|
||||||
|
@@ -101,7 +101,7 @@
|
||||||
|
#ifdef CONFIG_FTRACE_MCOUNT_RECORD
|
||||||
|
#define MCOUNT_REC() . = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start_mcount_loc) = .; \
|
||||||
|
- *(__mcount_loc) \
|
||||||
|
+ KEEP(*(__mcount_loc)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_mcount_loc) = .;
|
||||||
|
#else
|
||||||
|
#define MCOUNT_REC()
|
||||||
|
@@ -109,7 +109,7 @@
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRACE_BRANCH_PROFILING
|
||||||
|
#define LIKELY_PROFILE() VMLINUX_SYMBOL(__start_annotated_branch_profile) = .; \
|
||||||
|
- *(_ftrace_annotated_branch) \
|
||||||
|
+ KEEP(*(_ftrace_annotated_branch)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_annotated_branch_profile) = .;
|
||||||
|
#else
|
||||||
|
#define LIKELY_PROFILE()
|
||||||
|
@@ -117,7 +117,7 @@
|
||||||
|
|
||||||
|
#ifdef CONFIG_PROFILE_ALL_BRANCHES
|
||||||
|
#define BRANCH_PROFILE() VMLINUX_SYMBOL(__start_branch_profile) = .; \
|
||||||
|
- *(_ftrace_branch) \
|
||||||
|
+ KEEP(*(_ftrace_branch)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_branch_profile) = .;
|
||||||
|
#else
|
||||||
|
#define BRANCH_PROFILE()
|
||||||
|
@@ -126,7 +126,7 @@
|
||||||
|
#ifdef CONFIG_EVENT_TRACING
|
||||||
|
#define FTRACE_EVENTS() . = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start_ftrace_events) = .; \
|
||||||
|
- *(_ftrace_events) \
|
||||||
|
+ KEEP(*(_ftrace_events)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_ftrace_events) = .;
|
||||||
|
#else
|
||||||
|
#define FTRACE_EVENTS()
|
||||||
|
@@ -134,7 +134,7 @@
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRACING
|
||||||
|
#define TRACE_PRINTKS() VMLINUX_SYMBOL(__start___trace_bprintk_fmt) = .; \
|
||||||
|
- *(__trace_printk_fmt) /* Trace_printk fmt' pointer */ \
|
||||||
|
+ KEEP(*(__trace_printk_fmt)) /* Trace_printk fmt' pointer */ \
|
||||||
|
VMLINUX_SYMBOL(__stop___trace_bprintk_fmt) = .;
|
||||||
|
#else
|
||||||
|
#define TRACE_PRINTKS()
|
||||||
|
@@ -143,7 +143,7 @@
|
||||||
|
#ifdef CONFIG_FTRACE_SYSCALLS
|
||||||
|
#define TRACE_SYSCALLS() . = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start_syscalls_metadata) = .; \
|
||||||
|
- *(__syscalls_metadata) \
|
||||||
|
+ KEEP(*(__syscalls_metadata)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_syscalls_metadata) = .;
|
||||||
|
#else
|
||||||
|
#define TRACE_SYSCALLS()
|
||||||
|
@@ -153,7 +153,7 @@
|
||||||
|
#define KERNEL_DTB() \
|
||||||
|
STRUCT_ALIGN(); \
|
||||||
|
VMLINUX_SYMBOL(__dtb_start) = .; \
|
||||||
|
- *(.dtb.init.rodata) \
|
||||||
|
+ KEEP(*(.dtb.init.rodata)) \
|
||||||
|
VMLINUX_SYMBOL(__dtb_end) = .;
|
||||||
|
|
||||||
|
/* .data section */
|
||||||
|
@@ -173,15 +173,16 @@
|
||||||
|
/* implement dynamic printk debug */ \
|
||||||
|
. = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start___jump_table) = .; \
|
||||||
|
- *(__jump_table) \
|
||||||
|
+ KEEP(*(__jump_table)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___jump_table) = .; \
|
||||||
|
. = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start___verbose) = .; \
|
||||||
|
- *(__verbose) \
|
||||||
|
+ KEEP(*(__verbose)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___verbose) = .; \
|
||||||
|
LIKELY_PROFILE() \
|
||||||
|
BRANCH_PROFILE() \
|
||||||
|
- TRACE_PRINTKS()
|
||||||
|
+ TRACE_PRINTKS() \
|
||||||
|
+ *(.data.*)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Data section helpers
|
||||||
|
@@ -235,39 +236,39 @@
|
||||||
|
/* PCI quirks */ \
|
||||||
|
.pci_fixup : AT(ADDR(.pci_fixup) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_early) = .; \
|
||||||
|
- *(.pci_fixup_early) \
|
||||||
|
+ KEEP(*(.pci_fixup_early)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_early) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_header) = .; \
|
||||||
|
- *(.pci_fixup_header) \
|
||||||
|
+ KEEP(*(.pci_fixup_header)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_header) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_final) = .; \
|
||||||
|
- *(.pci_fixup_final) \
|
||||||
|
+ KEEP(*(.pci_fixup_final)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_final) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \
|
||||||
|
- *(.pci_fixup_enable) \
|
||||||
|
+ KEEP(*(.pci_fixup_enable)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_resume) = .; \
|
||||||
|
- *(.pci_fixup_resume) \
|
||||||
|
+ KEEP(*(.pci_fixup_resume)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_resume) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_resume_early) = .; \
|
||||||
|
- *(.pci_fixup_resume_early) \
|
||||||
|
+ KEEP(*(.pci_fixup_resume_early)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_resume_early) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_suspend) = .; \
|
||||||
|
- *(.pci_fixup_suspend) \
|
||||||
|
+ KEEP(*(.pci_fixup_suspend)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_suspend) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Built-in firmware blobs */ \
|
||||||
|
.builtin_fw : AT(ADDR(.builtin_fw) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start_builtin_fw) = .; \
|
||||||
|
- *(.builtin_fw) \
|
||||||
|
+ KEEP(*(.builtin_fw)) \
|
||||||
|
VMLINUX_SYMBOL(__end_builtin_fw) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* RapidIO route ops */ \
|
||||||
|
.rio_ops : AT(ADDR(.rio_ops) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start_rio_switch_ops) = .; \
|
||||||
|
- *(.rio_switch_ops) \
|
||||||
|
+ KEEP(*(.rio_switch_ops)) \
|
||||||
|
VMLINUX_SYMBOL(__end_rio_switch_ops) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
@@ -276,49 +277,49 @@
|
||||||
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
|
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
||||||
|
- *(SORT(___ksymtab+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-only symbols */ \
|
||||||
|
__ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \
|
||||||
|
- *(SORT(___ksymtab_gpl+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab_gpl+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: Normal unused symbols */ \
|
||||||
|
__ksymtab_unused : AT(ADDR(__ksymtab_unused) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab_unused) = .; \
|
||||||
|
- *(SORT(___ksymtab_unused+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab_unused+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab_unused) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-only unused symbols */ \
|
||||||
|
__ksymtab_unused_gpl : AT(ADDR(__ksymtab_unused_gpl) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab_unused_gpl) = .; \
|
||||||
|
- *(SORT(___ksymtab_unused_gpl+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab_unused_gpl+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab_unused_gpl) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-future-only symbols */ \
|
||||||
|
__ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab_gpl_future) = .; \
|
||||||
|
- *(SORT(___ksymtab_gpl_future+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab_gpl_future+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl_future) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
|
__kcrctab : AT(ADDR(__kcrctab) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___kcrctab) = .; \
|
||||||
|
- *(SORT(___kcrctab+*)) \
|
||||||
|
+ KEEP(*(SORT(___kcrctab+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___kcrctab) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-only symbols */ \
|
||||||
|
__kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___kcrctab_gpl) = .; \
|
||||||
|
- *(SORT(___kcrctab_gpl+*)) \
|
||||||
|
+ KEEP(*(SORT(___kcrctab_gpl+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___kcrctab_gpl) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
@@ -332,14 +333,14 @@
|
||||||
|
/* Kernel symbol table: GPL-only unused symbols */ \
|
||||||
|
__kcrctab_unused_gpl : AT(ADDR(__kcrctab_unused_gpl) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___kcrctab_unused_gpl) = .; \
|
||||||
|
- *(SORT(___kcrctab_unused_gpl+*)) \
|
||||||
|
+ KEEP(*(SORT(___kcrctab_unused_gpl+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___kcrctab_unused_gpl) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-future-only symbols */ \
|
||||||
|
__kcrctab_gpl_future : AT(ADDR(__kcrctab_gpl_future) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___kcrctab_gpl_future) = .; \
|
||||||
|
- *(SORT(___kcrctab_gpl_future+*)) \
|
||||||
|
+ KEEP(*(SORT(___kcrctab_gpl_future+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___kcrctab_gpl_future) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
@@ -362,14 +363,14 @@
|
||||||
|
/* Built-in module parameters. */ \
|
||||||
|
__param : AT(ADDR(__param) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___param) = .; \
|
||||||
|
- *(__param) \
|
||||||
|
+ KEEP(*(__param)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___param) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Built-in module versions. */ \
|
||||||
|
__modver : AT(ADDR(__modver) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___modver) = .; \
|
||||||
|
- *(__modver) \
|
||||||
|
+ KEEP(*(__modver)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___modver) = .; \
|
||||||
|
. = ALIGN((align)); \
|
||||||
|
VMLINUX_SYMBOL(__end_rodata) = .; \
|
||||||
|
@@ -429,7 +430,7 @@
|
||||||
|
#define ENTRY_TEXT \
|
||||||
|
ALIGN_FUNCTION(); \
|
||||||
|
VMLINUX_SYMBOL(__entry_text_start) = .; \
|
||||||
|
- *(.entry.text) \
|
||||||
|
+ KEEP(*(.entry.text)) \
|
||||||
|
VMLINUX_SYMBOL(__entry_text_end) = .;
|
||||||
|
|
||||||
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||||
|
@@ -457,7 +458,7 @@
|
||||||
|
. = ALIGN(align); \
|
||||||
|
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ex_table) = .; \
|
||||||
|
- *(__ex_table) \
|
||||||
|
+ KEEP(*(__ex_table)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ex_table) = .; \
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -473,7 +474,7 @@
|
||||||
|
#ifdef CONFIG_CONSTRUCTORS
|
||||||
|
#define KERNEL_CTORS() . = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__ctors_start) = .; \
|
||||||
|
- *(.ctors) \
|
||||||
|
+ KEEP(*(.ctors)) \
|
||||||
|
VMLINUX_SYMBOL(__ctors_end) = .;
|
||||||
|
#else
|
||||||
|
#define KERNEL_CTORS()
|
||||||
|
@@ -526,7 +527,7 @@
|
||||||
|
#define SBSS(sbss_align) \
|
||||||
|
. = ALIGN(sbss_align); \
|
||||||
|
.sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \
|
||||||
|
- *(.sbss) \
|
||||||
|
+ *(.sbss .sbss.*) \
|
||||||
|
*(.scommon) \
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -544,7 +545,7 @@
|
||||||
|
BSS_FIRST_SECTIONS \
|
||||||
|
*(.bss..page_aligned) \
|
||||||
|
*(.dynbss) \
|
||||||
|
- *(.bss) \
|
||||||
|
+ *(.bss .bss.*) \
|
||||||
|
*(COMMON) \
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -593,7 +594,7 @@
|
||||||
|
. = ALIGN(8); \
|
||||||
|
__bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___bug_table) = .; \
|
||||||
|
- *(__bug_table) \
|
||||||
|
+ KEEP(*(__bug_table)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___bug_table) = .; \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
@@ -605,7 +606,7 @@
|
||||||
|
. = ALIGN(4); \
|
||||||
|
.tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__tracedata_start) = .; \
|
||||||
|
- *(.tracedata) \
|
||||||
|
+ KEEP(*(.tracedata)) \
|
||||||
|
VMLINUX_SYMBOL(__tracedata_end) = .; \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
@@ -622,17 +623,17 @@
|
||||||
|
#define INIT_SETUP(initsetup_align) \
|
||||||
|
. = ALIGN(initsetup_align); \
|
||||||
|
VMLINUX_SYMBOL(__setup_start) = .; \
|
||||||
|
- *(.init.setup) \
|
||||||
|
+ KEEP(*(.init.setup)) \
|
||||||
|
VMLINUX_SYMBOL(__setup_end) = .;
|
||||||
|
|
||||||
|
#define INIT_CALLS_LEVEL(level) \
|
||||||
|
VMLINUX_SYMBOL(__initcall##level##_start) = .; \
|
||||||
|
- *(.initcall##level##.init) \
|
||||||
|
- *(.initcall##level##s.init) \
|
||||||
|
+ KEEP(*(.initcall##level##.init)) \
|
||||||
|
+ KEEP(*(.initcall##level##s.init)) \
|
||||||
|
|
||||||
|
#define INIT_CALLS \
|
||||||
|
VMLINUX_SYMBOL(__initcall_start) = .; \
|
||||||
|
- *(.initcallearly.init) \
|
||||||
|
+ KEEP(*(.initcallearly.init)) \
|
||||||
|
INIT_CALLS_LEVEL(0) \
|
||||||
|
INIT_CALLS_LEVEL(1) \
|
||||||
|
INIT_CALLS_LEVEL(2) \
|
||||||
|
@@ -646,21 +647,21 @@
|
||||||
|
|
||||||
|
#define CON_INITCALL \
|
||||||
|
VMLINUX_SYMBOL(__con_initcall_start) = .; \
|
||||||
|
- *(.con_initcall.init) \
|
||||||
|
+ KEEP(*(.con_initcall.init)) \
|
||||||
|
VMLINUX_SYMBOL(__con_initcall_end) = .;
|
||||||
|
|
||||||
|
#define SECURITY_INITCALL \
|
||||||
|
VMLINUX_SYMBOL(__security_initcall_start) = .; \
|
||||||
|
- *(.security_initcall.init) \
|
||||||
|
+ KEEP(*(.security_initcall.init)) \
|
||||||
|
VMLINUX_SYMBOL(__security_initcall_end) = .;
|
||||||
|
|
||||||
|
#ifdef CONFIG_BLK_DEV_INITRD
|
||||||
|
#define INIT_RAM_FS \
|
||||||
|
. = ALIGN(4); \
|
||||||
|
VMLINUX_SYMBOL(__initramfs_start) = .; \
|
||||||
|
- *(.init.ramfs) \
|
||||||
|
+ KEEP(*(.init.ramfs)) \
|
||||||
|
. = ALIGN(8); \
|
||||||
|
- *(.init.ramfs.info)
|
||||||
|
+ KEEP(*(.init.ramfs.info))
|
||||||
|
#else
|
||||||
|
#define INIT_RAM_FS
|
||||||
|
#endif
|
|
@ -1,29 +1,27 @@
|
||||||
--- 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,18 @@
|
@@ -52,6 +52,16 @@
|
||||||
#define LOAD_OFFSET 0
|
#define LOAD_OFFSET 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#ifndef SYMTAB_KEEP_STR
|
+#ifndef SYMTAB_KEEP
|
||||||
+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
|
+#define SYMTAB_KEEP KEEP(*(SORT(___ksymtab+*)))
|
||||||
+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
|
+#define SYMTAB_KEEP_GPL KEEP(*(SORT(___ksymtab_gpl+*)))
|
||||||
+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#ifndef SYMTAB_DISCARD
|
+#ifndef SYMTAB_DISCARD
|
||||||
+#define SYMTAB_DISCARD
|
+#define SYMTAB_DISCARD
|
||||||
+#define SYMTAB_DISCARD_GPL
|
+#define SYMTAB_DISCARD_GPL
|
||||||
+#define SYMTAB_DISCARD_STR
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
#ifndef SYMBOL_PREFIX
|
#ifndef SYMBOL_PREFIX
|
||||||
#define VMLINUX_SYMBOL(sym) sym
|
#define VMLINUX_SYMBOL(sym) sym
|
||||||
#else
|
#else
|
||||||
@@ -276,14 +288,14 @@
|
@@ -277,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) = .; \
|
||||||
- *(SORT(___ksymtab+*)) \
|
- KEEP(*(SORT(___ksymtab+*))) \
|
||||||
+ SYMTAB_KEEP \
|
+ SYMTAB_KEEP \
|
||||||
VMLINUX_SYMBOL(__stop___ksymtab) = .; \
|
VMLINUX_SYMBOL(__stop___ksymtab) = .; \
|
||||||
} \
|
} \
|
||||||
|
@ -31,30 +29,40 @@
|
||||||
/* Kernel symbol table: GPL-only symbols */ \
|
/* Kernel symbol table: GPL-only symbols */ \
|
||||||
__ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \
|
__ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \
|
||||||
VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \
|
VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \
|
||||||
- *(SORT(___ksymtab_gpl+*)) \
|
- KEEP(*(SORT(___ksymtab_gpl+*))) \
|
||||||
+ SYMTAB_KEEP_GPL \
|
+ SYMTAB_KEEP_GPL \
|
||||||
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
@@ -345,7 +357,7 @@
|
@@ -346,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) { \
|
||||||
- *(__ksymtab_strings) \
|
- *(__ksymtab_strings) \
|
||||||
+ SYMTAB_KEEP_STR \
|
+ *(__ksymtab_strings+*) \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -679,6 +691,9 @@
|
@@ -680,6 +690,8 @@
|
||||||
EXIT_TEXT \
|
EXIT_TEXT \
|
||||||
EXIT_DATA \
|
EXIT_DATA \
|
||||||
EXIT_CALL \
|
EXIT_CALL \
|
||||||
+ SYMTAB_DISCARD \
|
+ SYMTAB_DISCARD \
|
||||||
+ SYMTAB_DISCARD_GPL \
|
+ SYMTAB_DISCARD_GPL \
|
||||||
+ SYMTAB_DISCARD_STR \
|
|
||||||
*(.discard) \
|
*(.discard) \
|
||||||
*(.discard.*) \
|
*(.discard.*) \
|
||||||
}
|
}
|
||||||
|
--- 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
|
||||||
--- a/include/linux/export.h
|
--- a/include/linux/export.h
|
||||||
+++ b/include/linux/export.h
|
+++ b/include/linux/export.h
|
||||||
@@ -45,12 +45,19 @@ extern struct module __this_module;
|
@@ -45,12 +45,19 @@ extern struct module __this_module;
|
||||||
|
@ -78,14 +86,3 @@
|
||||||
= 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
|
|
|
@ -7,5 +7,5 @@
|
||||||
-cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
|
-cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
|
||||||
+cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
|
+cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
|
||||||
cflags-y += -msoft-float
|
cflags-y += -msoft-float
|
||||||
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib --gc-sections
|
||||||
KBUILD_AFLAGS_MODULE += -mlong-calls
|
KBUILD_AFLAGS_MODULE += -mlong-calls
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
@@ -90,8 +90,13 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
|
@@ -90,8 +90,13 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
|
||||||
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
|
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
|
||||||
cflags-y += -msoft-float
|
cflags-y += -msoft-float
|
||||||
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib --gc-sections
|
||||||
+ifdef CONFIG_64BIT
|
+ifdef CONFIG_64BIT
|
||||||
KBUILD_AFLAGS_MODULE += -mlong-calls
|
KBUILD_AFLAGS_MODULE += -mlong-calls
|
||||||
KBUILD_CFLAGS_MODULE += -mlong-calls
|
KBUILD_CFLAGS_MODULE += -mlong-calls
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
+KBUILD_CFLAGS_MODULE += -mno-long-calls
|
+KBUILD_CFLAGS_MODULE += -mno-long-calls
|
||||||
+endif
|
+endif
|
||||||
|
|
||||||
cflags-y += -ffreestanding
|
KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
|
||||||
|
|
||||||
--- a/arch/mips/include/asm/module.h
|
--- a/arch/mips/include/asm/module.h
|
||||||
+++ b/arch/mips/include/asm/module.h
|
+++ b/arch/mips/include/asm/module.h
|
||||||
|
|
|
@ -76,11 +76,10 @@
|
||||||
|
|
||||||
counters = alloc_counters(table);
|
counters = alloc_counters(table);
|
||||||
if (IS_ERR(counters))
|
if (IS_ERR(counters))
|
||||||
@@ -960,6 +989,14 @@ copy_entries_to_user(unsigned int total_
|
@@ -961,6 +990,14 @@ copy_entries_to_user(unsigned int total_
|
||||||
ret = -EFAULT;
|
|
||||||
goto free_counters;
|
goto free_counters;
|
||||||
}
|
}
|
||||||
+
|
|
||||||
+ flags = e->ip.flags & IPT_F_MASK;
|
+ flags = e->ip.flags & IPT_F_MASK;
|
||||||
+ if (copy_to_user(userptr + off
|
+ if (copy_to_user(userptr + off
|
||||||
+ + offsetof(struct ipt_entry, ip.flags),
|
+ + offsetof(struct ipt_entry, ip.flags),
|
||||||
|
@ -88,6 +87,7 @@
|
||||||
+ ret = -EFAULT;
|
+ ret = -EFAULT;
|
||||||
+ goto free_counters;
|
+ goto free_counters;
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
for (i = sizeof(struct ipt_entry);
|
for (i = sizeof(struct ipt_entry);
|
||||||
i < e->target_offset;
|
i < e->target_offset;
|
||||||
|
i += m->u.match_size) {
|
||||||
|
|
|
@ -279,8 +279,8 @@
|
||||||
source "fs/fuse/Kconfig"
|
source "fs/fuse/Kconfig"
|
||||||
+source "fs/overlayfs/Kconfig"
|
+source "fs/overlayfs/Kconfig"
|
||||||
|
|
||||||
config CUSE
|
config GENERIC_ACL
|
||||||
tristate "Character device in Userspace support"
|
bool
|
||||||
--- a/fs/Makefile
|
--- a/fs/Makefile
|
||||||
+++ b/fs/Makefile
|
+++ b/fs/Makefile
|
||||||
@@ -107,6 +107,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
|
@@ -107,6 +107,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/drivers/usb/host/ehci-hcd.c
|
--- a/drivers/usb/host/ehci-hcd.c
|
||||||
+++ b/drivers/usb/host/ehci-hcd.c
|
+++ b/drivers/usb/host/ehci-hcd.c
|
||||||
@@ -634,7 +634,7 @@ static int ehci_run (struct usb_hcd *hcd
|
@@ -630,7 +630,7 @@ static int ehci_run (struct usb_hcd *hcd
|
||||||
"USB %x.%x started, EHCI %x.%02x%s\n",
|
"USB %x.%x started, EHCI %x.%02x%s\n",
|
||||||
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
|
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
|
||||||
temp >> 8, temp & 0xff,
|
temp >> 8, temp & 0xff,
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
/*
|
/*
|
||||||
--- a/drivers/usb/host/ehci.h
|
--- a/drivers/usb/host/ehci.h
|
||||||
+++ b/drivers/usb/host/ehci.h
|
+++ b/drivers/usb/host/ehci.h
|
||||||
@@ -196,6 +196,7 @@ struct ehci_hcd { /* one per controlle
|
@@ -200,6 +200,7 @@ struct ehci_hcd { /* one per controlle
|
||||||
unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/
|
unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/
|
||||||
unsigned has_synopsys_hc_bug:1; /* Synopsys HC */
|
unsigned has_synopsys_hc_bug:1; /* Synopsys HC */
|
||||||
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
|
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
|
||||||
|
|
372
target/linux/generic/patches-3.8/220-gc_sections.patch
Normal file
372
target/linux/generic/patches-3.8/220-gc_sections.patch
Normal file
|
@ -0,0 +1,372 @@
|
||||||
|
--- a/arch/mips/Makefile
|
||||||
|
+++ b/arch/mips/Makefile
|
||||||
|
@@ -89,10 +89,12 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
|
||||||
|
#
|
||||||
|
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
|
||||||
|
cflags-y += -msoft-float
|
||||||
|
-LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
||||||
|
+LDFLAGS_vmlinux += -G 0 -static -n -nostdlib --gc-sections
|
||||||
|
KBUILD_AFLAGS_MODULE += -mlong-calls
|
||||||
|
KBUILD_CFLAGS_MODULE += -mlong-calls
|
||||||
|
|
||||||
|
+KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
|
||||||
|
+
|
||||||
|
cflags-y += -ffreestanding
|
||||||
|
|
||||||
|
#
|
||||||
|
--- a/arch/mips/kernel/vmlinux.lds.S
|
||||||
|
+++ b/arch/mips/kernel/vmlinux.lds.S
|
||||||
|
@@ -67,7 +67,7 @@ SECTIONS
|
||||||
|
/* Exception table for data bus errors */
|
||||||
|
__dbe_table : {
|
||||||
|
__start___dbe_table = .;
|
||||||
|
- *(__dbe_table)
|
||||||
|
+ KEEP(*(__dbe_table))
|
||||||
|
__stop___dbe_table = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -112,7 +112,7 @@ SECTIONS
|
||||||
|
. = ALIGN(4);
|
||||||
|
.mips.machines.init : AT(ADDR(.mips.machines.init) - LOAD_OFFSET) {
|
||||||
|
__mips_machines_start = .;
|
||||||
|
- *(.mips.machines.init)
|
||||||
|
+ KEEP(*(.mips.machines.init))
|
||||||
|
__mips_machines_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
--- a/include/asm-generic/vmlinux.lds.h
|
||||||
|
+++ b/include/asm-generic/vmlinux.lds.h
|
||||||
|
@@ -101,7 +101,7 @@
|
||||||
|
#ifdef CONFIG_FTRACE_MCOUNT_RECORD
|
||||||
|
#define MCOUNT_REC() . = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start_mcount_loc) = .; \
|
||||||
|
- *(__mcount_loc) \
|
||||||
|
+ KEEP(*(__mcount_loc)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_mcount_loc) = .;
|
||||||
|
#else
|
||||||
|
#define MCOUNT_REC()
|
||||||
|
@@ -109,7 +109,7 @@
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRACE_BRANCH_PROFILING
|
||||||
|
#define LIKELY_PROFILE() VMLINUX_SYMBOL(__start_annotated_branch_profile) = .; \
|
||||||
|
- *(_ftrace_annotated_branch) \
|
||||||
|
+ KEEP(*(_ftrace_annotated_branch)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_annotated_branch_profile) = .;
|
||||||
|
#else
|
||||||
|
#define LIKELY_PROFILE()
|
||||||
|
@@ -117,7 +117,7 @@
|
||||||
|
|
||||||
|
#ifdef CONFIG_PROFILE_ALL_BRANCHES
|
||||||
|
#define BRANCH_PROFILE() VMLINUX_SYMBOL(__start_branch_profile) = .; \
|
||||||
|
- *(_ftrace_branch) \
|
||||||
|
+ KEEP(*(_ftrace_branch)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_branch_profile) = .;
|
||||||
|
#else
|
||||||
|
#define BRANCH_PROFILE()
|
||||||
|
@@ -126,7 +126,7 @@
|
||||||
|
#ifdef CONFIG_EVENT_TRACING
|
||||||
|
#define FTRACE_EVENTS() . = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start_ftrace_events) = .; \
|
||||||
|
- *(_ftrace_events) \
|
||||||
|
+ KEEP(*(_ftrace_events)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_ftrace_events) = .;
|
||||||
|
#else
|
||||||
|
#define FTRACE_EVENTS()
|
||||||
|
@@ -134,7 +134,7 @@
|
||||||
|
|
||||||
|
#ifdef CONFIG_TRACING
|
||||||
|
#define TRACE_PRINTKS() VMLINUX_SYMBOL(__start___trace_bprintk_fmt) = .; \
|
||||||
|
- *(__trace_printk_fmt) /* Trace_printk fmt' pointer */ \
|
||||||
|
+ KEEP(*(__trace_printk_fmt)) /* Trace_printk fmt' pointer */ \
|
||||||
|
VMLINUX_SYMBOL(__stop___trace_bprintk_fmt) = .;
|
||||||
|
#else
|
||||||
|
#define TRACE_PRINTKS()
|
||||||
|
@@ -143,7 +143,7 @@
|
||||||
|
#ifdef CONFIG_FTRACE_SYSCALLS
|
||||||
|
#define TRACE_SYSCALLS() . = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start_syscalls_metadata) = .; \
|
||||||
|
- *(__syscalls_metadata) \
|
||||||
|
+ KEEP(*(__syscalls_metadata)) \
|
||||||
|
VMLINUX_SYMBOL(__stop_syscalls_metadata) = .;
|
||||||
|
#else
|
||||||
|
#define TRACE_SYSCALLS()
|
||||||
|
@@ -153,7 +153,7 @@
|
||||||
|
#define KERNEL_DTB() \
|
||||||
|
STRUCT_ALIGN(); \
|
||||||
|
VMLINUX_SYMBOL(__dtb_start) = .; \
|
||||||
|
- *(.dtb.init.rodata) \
|
||||||
|
+ KEEP(*(.dtb.init.rodata)) \
|
||||||
|
VMLINUX_SYMBOL(__dtb_end) = .;
|
||||||
|
|
||||||
|
/* .data section */
|
||||||
|
@@ -173,15 +173,16 @@
|
||||||
|
/* implement dynamic printk debug */ \
|
||||||
|
. = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start___jump_table) = .; \
|
||||||
|
- *(__jump_table) \
|
||||||
|
+ KEEP(*(__jump_table)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___jump_table) = .; \
|
||||||
|
. = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__start___verbose) = .; \
|
||||||
|
- *(__verbose) \
|
||||||
|
+ KEEP(*(__verbose)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___verbose) = .; \
|
||||||
|
LIKELY_PROFILE() \
|
||||||
|
BRANCH_PROFILE() \
|
||||||
|
- TRACE_PRINTKS()
|
||||||
|
+ TRACE_PRINTKS() \
|
||||||
|
+ *(.data.*)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Data section helpers
|
||||||
|
@@ -235,39 +236,39 @@
|
||||||
|
/* PCI quirks */ \
|
||||||
|
.pci_fixup : AT(ADDR(.pci_fixup) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_early) = .; \
|
||||||
|
- *(.pci_fixup_early) \
|
||||||
|
+ KEEP(*(.pci_fixup_early)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_early) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_header) = .; \
|
||||||
|
- *(.pci_fixup_header) \
|
||||||
|
+ KEEP(*(.pci_fixup_header)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_header) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_final) = .; \
|
||||||
|
- *(.pci_fixup_final) \
|
||||||
|
+ KEEP(*(.pci_fixup_final)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_final) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_enable) = .; \
|
||||||
|
- *(.pci_fixup_enable) \
|
||||||
|
+ KEEP(*(.pci_fixup_enable)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_enable) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_resume) = .; \
|
||||||
|
- *(.pci_fixup_resume) \
|
||||||
|
+ KEEP(*(.pci_fixup_resume)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_resume) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_resume_early) = .; \
|
||||||
|
- *(.pci_fixup_resume_early) \
|
||||||
|
+ KEEP(*(.pci_fixup_resume_early)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_resume_early) = .; \
|
||||||
|
VMLINUX_SYMBOL(__start_pci_fixups_suspend) = .; \
|
||||||
|
- *(.pci_fixup_suspend) \
|
||||||
|
+ KEEP(*(.pci_fixup_suspend)) \
|
||||||
|
VMLINUX_SYMBOL(__end_pci_fixups_suspend) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Built-in firmware blobs */ \
|
||||||
|
.builtin_fw : AT(ADDR(.builtin_fw) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start_builtin_fw) = .; \
|
||||||
|
- *(.builtin_fw) \
|
||||||
|
+ KEEP(*(.builtin_fw)) \
|
||||||
|
VMLINUX_SYMBOL(__end_builtin_fw) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* RapidIO route ops */ \
|
||||||
|
.rio_ops : AT(ADDR(.rio_ops) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start_rio_switch_ops) = .; \
|
||||||
|
- *(.rio_switch_ops) \
|
||||||
|
+ KEEP(*(.rio_switch_ops)) \
|
||||||
|
VMLINUX_SYMBOL(__end_rio_switch_ops) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
@@ -276,49 +277,49 @@
|
||||||
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
|
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
||||||
|
- *(SORT(___ksymtab+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-only symbols */ \
|
||||||
|
__ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \
|
||||||
|
- *(SORT(___ksymtab_gpl+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab_gpl+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: Normal unused symbols */ \
|
||||||
|
__ksymtab_unused : AT(ADDR(__ksymtab_unused) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab_unused) = .; \
|
||||||
|
- *(SORT(___ksymtab_unused+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab_unused+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab_unused) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-only unused symbols */ \
|
||||||
|
__ksymtab_unused_gpl : AT(ADDR(__ksymtab_unused_gpl) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab_unused_gpl) = .; \
|
||||||
|
- *(SORT(___ksymtab_unused_gpl+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab_unused_gpl+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab_unused_gpl) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-future-only symbols */ \
|
||||||
|
__ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ksymtab_gpl_future) = .; \
|
||||||
|
- *(SORT(___ksymtab_gpl_future+*)) \
|
||||||
|
+ KEEP(*(SORT(___ksymtab_gpl_future+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl_future) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
|
__kcrctab : AT(ADDR(__kcrctab) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___kcrctab) = .; \
|
||||||
|
- *(SORT(___kcrctab+*)) \
|
||||||
|
+ KEEP(*(SORT(___kcrctab+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___kcrctab) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-only symbols */ \
|
||||||
|
__kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___kcrctab_gpl) = .; \
|
||||||
|
- *(SORT(___kcrctab_gpl+*)) \
|
||||||
|
+ KEEP(*(SORT(___kcrctab_gpl+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___kcrctab_gpl) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
@@ -332,14 +333,14 @@
|
||||||
|
/* Kernel symbol table: GPL-only unused symbols */ \
|
||||||
|
__kcrctab_unused_gpl : AT(ADDR(__kcrctab_unused_gpl) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___kcrctab_unused_gpl) = .; \
|
||||||
|
- *(SORT(___kcrctab_unused_gpl+*)) \
|
||||||
|
+ KEEP(*(SORT(___kcrctab_unused_gpl+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___kcrctab_unused_gpl) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Kernel symbol table: GPL-future-only symbols */ \
|
||||||
|
__kcrctab_gpl_future : AT(ADDR(__kcrctab_gpl_future) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___kcrctab_gpl_future) = .; \
|
||||||
|
- *(SORT(___kcrctab_gpl_future+*)) \
|
||||||
|
+ KEEP(*(SORT(___kcrctab_gpl_future+*))) \
|
||||||
|
VMLINUX_SYMBOL(__stop___kcrctab_gpl_future) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
@@ -362,14 +363,14 @@
|
||||||
|
/* Built-in module parameters. */ \
|
||||||
|
__param : AT(ADDR(__param) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___param) = .; \
|
||||||
|
- *(__param) \
|
||||||
|
+ KEEP(*(__param)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___param) = .; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
/* Built-in module versions. */ \
|
||||||
|
__modver : AT(ADDR(__modver) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___modver) = .; \
|
||||||
|
- *(__modver) \
|
||||||
|
+ KEEP(*(__modver)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___modver) = .; \
|
||||||
|
. = ALIGN((align)); \
|
||||||
|
VMLINUX_SYMBOL(__end_rodata) = .; \
|
||||||
|
@@ -429,7 +430,7 @@
|
||||||
|
#define ENTRY_TEXT \
|
||||||
|
ALIGN_FUNCTION(); \
|
||||||
|
VMLINUX_SYMBOL(__entry_text_start) = .; \
|
||||||
|
- *(.entry.text) \
|
||||||
|
+ KEEP(*(.entry.text)) \
|
||||||
|
VMLINUX_SYMBOL(__entry_text_end) = .;
|
||||||
|
|
||||||
|
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
|
||||||
|
@@ -457,7 +458,7 @@
|
||||||
|
. = ALIGN(align); \
|
||||||
|
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___ex_table) = .; \
|
||||||
|
- *(__ex_table) \
|
||||||
|
+ KEEP(*(__ex_table)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___ex_table) = .; \
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -473,7 +474,7 @@
|
||||||
|
#ifdef CONFIG_CONSTRUCTORS
|
||||||
|
#define KERNEL_CTORS() . = ALIGN(8); \
|
||||||
|
VMLINUX_SYMBOL(__ctors_start) = .; \
|
||||||
|
- *(.ctors) \
|
||||||
|
+ KEEP(*(.ctors)) \
|
||||||
|
VMLINUX_SYMBOL(__ctors_end) = .;
|
||||||
|
#else
|
||||||
|
#define KERNEL_CTORS()
|
||||||
|
@@ -526,7 +527,7 @@
|
||||||
|
#define SBSS(sbss_align) \
|
||||||
|
. = ALIGN(sbss_align); \
|
||||||
|
.sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { \
|
||||||
|
- *(.sbss) \
|
||||||
|
+ *(.sbss .sbss.*) \
|
||||||
|
*(.scommon) \
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -544,7 +545,7 @@
|
||||||
|
BSS_FIRST_SECTIONS \
|
||||||
|
*(.bss..page_aligned) \
|
||||||
|
*(.dynbss) \
|
||||||
|
- *(.bss) \
|
||||||
|
+ *(.bss .bss.*) \
|
||||||
|
*(COMMON) \
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -593,7 +594,7 @@
|
||||||
|
. = ALIGN(8); \
|
||||||
|
__bug_table : AT(ADDR(__bug_table) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__start___bug_table) = .; \
|
||||||
|
- *(__bug_table) \
|
||||||
|
+ KEEP(*(__bug_table)) \
|
||||||
|
VMLINUX_SYMBOL(__stop___bug_table) = .; \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
@@ -605,7 +606,7 @@
|
||||||
|
. = ALIGN(4); \
|
||||||
|
.tracedata : AT(ADDR(.tracedata) - LOAD_OFFSET) { \
|
||||||
|
VMLINUX_SYMBOL(__tracedata_start) = .; \
|
||||||
|
- *(.tracedata) \
|
||||||
|
+ KEEP(*(.tracedata)) \
|
||||||
|
VMLINUX_SYMBOL(__tracedata_end) = .; \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
@@ -622,17 +623,17 @@
|
||||||
|
#define INIT_SETUP(initsetup_align) \
|
||||||
|
. = ALIGN(initsetup_align); \
|
||||||
|
VMLINUX_SYMBOL(__setup_start) = .; \
|
||||||
|
- *(.init.setup) \
|
||||||
|
+ KEEP(*(.init.setup)) \
|
||||||
|
VMLINUX_SYMBOL(__setup_end) = .;
|
||||||
|
|
||||||
|
#define INIT_CALLS_LEVEL(level) \
|
||||||
|
VMLINUX_SYMBOL(__initcall##level##_start) = .; \
|
||||||
|
- *(.initcall##level##.init) \
|
||||||
|
- *(.initcall##level##s.init) \
|
||||||
|
+ KEEP(*(.initcall##level##.init)) \
|
||||||
|
+ KEEP(*(.initcall##level##s.init)) \
|
||||||
|
|
||||||
|
#define INIT_CALLS \
|
||||||
|
VMLINUX_SYMBOL(__initcall_start) = .; \
|
||||||
|
- *(.initcallearly.init) \
|
||||||
|
+ KEEP(*(.initcallearly.init)) \
|
||||||
|
INIT_CALLS_LEVEL(0) \
|
||||||
|
INIT_CALLS_LEVEL(1) \
|
||||||
|
INIT_CALLS_LEVEL(2) \
|
||||||
|
@@ -646,21 +647,21 @@
|
||||||
|
|
||||||
|
#define CON_INITCALL \
|
||||||
|
VMLINUX_SYMBOL(__con_initcall_start) = .; \
|
||||||
|
- *(.con_initcall.init) \
|
||||||
|
+ KEEP(*(.con_initcall.init)) \
|
||||||
|
VMLINUX_SYMBOL(__con_initcall_end) = .;
|
||||||
|
|
||||||
|
#define SECURITY_INITCALL \
|
||||||
|
VMLINUX_SYMBOL(__security_initcall_start) = .; \
|
||||||
|
- *(.security_initcall.init) \
|
||||||
|
+ KEEP(*(.security_initcall.init)) \
|
||||||
|
VMLINUX_SYMBOL(__security_initcall_end) = .;
|
||||||
|
|
||||||
|
#ifdef CONFIG_BLK_DEV_INITRD
|
||||||
|
#define INIT_RAM_FS \
|
||||||
|
. = ALIGN(4); \
|
||||||
|
VMLINUX_SYMBOL(__initramfs_start) = .; \
|
||||||
|
- *(.init.ramfs) \
|
||||||
|
+ KEEP(*(.init.ramfs)) \
|
||||||
|
. = ALIGN(8); \
|
||||||
|
- *(.init.ramfs.info)
|
||||||
|
+ KEEP(*(.init.ramfs.info))
|
||||||
|
#else
|
||||||
|
#define INIT_RAM_FS
|
||||||
|
#endif
|
|
@ -1,29 +1,27 @@
|
||||||
--- 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,18 @@
|
@@ -52,6 +52,16 @@
|
||||||
#define LOAD_OFFSET 0
|
#define LOAD_OFFSET 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
+#ifndef SYMTAB_KEEP_STR
|
+#ifndef SYMTAB_KEEP
|
||||||
+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
|
+#define SYMTAB_KEEP KEEP(*(SORT(___ksymtab+*)))
|
||||||
+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
|
+#define SYMTAB_KEEP_GPL KEEP(*(SORT(___ksymtab_gpl+*)))
|
||||||
+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#ifndef SYMTAB_DISCARD
|
+#ifndef SYMTAB_DISCARD
|
||||||
+#define SYMTAB_DISCARD
|
+#define SYMTAB_DISCARD
|
||||||
+#define SYMTAB_DISCARD_GPL
|
+#define SYMTAB_DISCARD_GPL
|
||||||
+#define SYMTAB_DISCARD_STR
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
#ifndef SYMBOL_PREFIX
|
#ifndef SYMBOL_PREFIX
|
||||||
#define VMLINUX_SYMBOL(sym) sym
|
#define VMLINUX_SYMBOL(sym) sym
|
||||||
#else
|
#else
|
||||||
@@ -276,14 +288,14 @@
|
@@ -277,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) = .; \
|
||||||
- *(SORT(___ksymtab+*)) \
|
- KEEP(*(SORT(___ksymtab+*))) \
|
||||||
+ SYMTAB_KEEP \
|
+ SYMTAB_KEEP \
|
||||||
VMLINUX_SYMBOL(__stop___ksymtab) = .; \
|
VMLINUX_SYMBOL(__stop___ksymtab) = .; \
|
||||||
} \
|
} \
|
||||||
|
@ -31,30 +29,40 @@
|
||||||
/* Kernel symbol table: GPL-only symbols */ \
|
/* Kernel symbol table: GPL-only symbols */ \
|
||||||
__ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \
|
__ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \
|
||||||
VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \
|
VMLINUX_SYMBOL(__start___ksymtab_gpl) = .; \
|
||||||
- *(SORT(___ksymtab_gpl+*)) \
|
- KEEP(*(SORT(___ksymtab_gpl+*))) \
|
||||||
+ SYMTAB_KEEP_GPL \
|
+ SYMTAB_KEEP_GPL \
|
||||||
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
@@ -345,7 +357,7 @@
|
@@ -346,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) { \
|
||||||
- *(__ksymtab_strings) \
|
- *(__ksymtab_strings) \
|
||||||
+ SYMTAB_KEEP_STR \
|
+ *(__ksymtab_strings+*) \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -679,6 +691,9 @@
|
@@ -680,6 +690,8 @@
|
||||||
EXIT_TEXT \
|
EXIT_TEXT \
|
||||||
EXIT_DATA \
|
EXIT_DATA \
|
||||||
EXIT_CALL \
|
EXIT_CALL \
|
||||||
+ SYMTAB_DISCARD \
|
+ SYMTAB_DISCARD \
|
||||||
+ SYMTAB_DISCARD_GPL \
|
+ SYMTAB_DISCARD_GPL \
|
||||||
+ SYMTAB_DISCARD_STR \
|
|
||||||
*(.discard) \
|
*(.discard) \
|
||||||
*(.discard.*) \
|
*(.discard.*) \
|
||||||
}
|
}
|
||||||
|
--- 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
|
||||||
--- a/include/linux/export.h
|
--- a/include/linux/export.h
|
||||||
+++ b/include/linux/export.h
|
+++ b/include/linux/export.h
|
||||||
@@ -45,12 +45,19 @@ extern struct module __this_module;
|
@@ -45,12 +45,19 @@ extern struct module __this_module;
|
||||||
|
@ -78,14 +86,3 @@
|
||||||
= 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
|
|
|
@ -7,5 +7,5 @@
|
||||||
-cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
|
-cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
|
||||||
+cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
|
+cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
|
||||||
cflags-y += -msoft-float
|
cflags-y += -msoft-float
|
||||||
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib --gc-sections
|
||||||
KBUILD_AFLAGS_MODULE += -mlong-calls
|
KBUILD_AFLAGS_MODULE += -mlong-calls
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
@@ -90,8 +90,13 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
|
@@ -90,8 +90,13 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
|
||||||
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
|
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
|
||||||
cflags-y += -msoft-float
|
cflags-y += -msoft-float
|
||||||
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib --gc-sections
|
||||||
+ifdef CONFIG_64BIT
|
+ifdef CONFIG_64BIT
|
||||||
KBUILD_AFLAGS_MODULE += -mlong-calls
|
KBUILD_AFLAGS_MODULE += -mlong-calls
|
||||||
KBUILD_CFLAGS_MODULE += -mlong-calls
|
KBUILD_CFLAGS_MODULE += -mlong-calls
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
+KBUILD_CFLAGS_MODULE += -mno-long-calls
|
+KBUILD_CFLAGS_MODULE += -mno-long-calls
|
||||||
+endif
|
+endif
|
||||||
|
|
||||||
cflags-y += -ffreestanding
|
KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
|
||||||
|
|
||||||
--- a/arch/mips/include/asm/module.h
|
--- a/arch/mips/include/asm/module.h
|
||||||
+++ b/arch/mips/include/asm/module.h
|
+++ b/arch/mips/include/asm/module.h
|
||||||
|
|
|
@ -76,11 +76,10 @@
|
||||||
|
|
||||||
counters = alloc_counters(table);
|
counters = alloc_counters(table);
|
||||||
if (IS_ERR(counters))
|
if (IS_ERR(counters))
|
||||||
@@ -960,6 +989,14 @@ copy_entries_to_user(unsigned int total_
|
@@ -961,6 +990,14 @@ copy_entries_to_user(unsigned int total_
|
||||||
ret = -EFAULT;
|
|
||||||
goto free_counters;
|
goto free_counters;
|
||||||
}
|
}
|
||||||
+
|
|
||||||
+ flags = e->ip.flags & IPT_F_MASK;
|
+ flags = e->ip.flags & IPT_F_MASK;
|
||||||
+ if (copy_to_user(userptr + off
|
+ if (copy_to_user(userptr + off
|
||||||
+ + offsetof(struct ipt_entry, ip.flags),
|
+ + offsetof(struct ipt_entry, ip.flags),
|
||||||
|
@ -88,6 +87,7 @@
|
||||||
+ ret = -EFAULT;
|
+ ret = -EFAULT;
|
||||||
+ goto free_counters;
|
+ goto free_counters;
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
for (i = sizeof(struct ipt_entry);
|
for (i = sizeof(struct ipt_entry);
|
||||||
i < e->target_offset;
|
i < e->target_offset;
|
||||||
|
i += m->u.match_size) {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/init/main.c
|
--- a/init/main.c
|
||||||
+++ b/init/main.c
|
+++ b/init/main.c
|
||||||
@@ -878,7 +878,7 @@ static void __init kernel_init_freeable(
|
@@ -878,7 +878,7 @@ static noinline void __init kernel_init_
|
||||||
|
|
||||||
/* Open the /dev/console on the rootfs, this should never fail */
|
/* Open the /dev/console on the rootfs, this should never fail */
|
||||||
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
|
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
* When we die, we re-parent all our children, and try to:
|
* When we die, we re-parent all our children, and try to:
|
||||||
--- a/kernel/sched/core.c
|
--- a/kernel/sched/core.c
|
||||||
+++ b/kernel/sched/core.c
|
+++ b/kernel/sched/core.c
|
||||||
@@ -3633,6 +3633,7 @@ int can_nice(const struct task_struct *p
|
@@ -3634,6 +3634,7 @@ int can_nice(const struct task_struct *p
|
||||||
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
|
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
|
||||||
capable(CAP_SYS_NICE));
|
capable(CAP_SYS_NICE));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue