summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-01-26 16:26:13 +0000
committerFelix Fietkau <nbd@openwrt.org>2013-01-26 16:26:13 +0000
commit8933b918cd6bce2db5a6a5a51513b62672f13069 (patch)
tree6bd79c5e27a84096f2b209d0e108c9a89f88581d
parent7809d73fd2b78c65aad0a1e18b06c3a4c0c15a8d (diff)
downloadmaster-31e0f0ae-8933b918cd6bce2db5a6a5a51513b62672f13069.tar.gz
master-31e0f0ae-8933b918cd6bce2db5a6a5a51513b62672f13069.tar.bz2
master-31e0f0ae-8933b918cd6bce2db5a6a5a51513b62672f13069.zip
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
-rw-r--r--include/kernel-build.mk12
-rw-r--r--target/linux/ar71xx/patches-3.7/169-MIPS-ath79-allow-to-specify-bus-number-in-PCI-IRQ-ma.patch2
-rw-r--r--target/linux/ar71xx/patches-3.7/170-MIPS-ath79-add-PCI-controller-registration-code-for-.patch2
-rw-r--r--target/linux/ar71xx/patches-3.7/203-spi-ath79-use-gpio_request_one.patch13
-rw-r--r--target/linux/ar71xx/patches-3.7/204-spi-ath79-avoid-multiple-initialization-of-the-SPI-c.patch2
-rw-r--r--target/linux/ar71xx/patches-3.7/206-spi-ath79-make-chipselect-logic-more-flexible.patch4
-rw-r--r--target/linux/ar71xx/patches-3.7/212-MIPS-ath79-fix-GPIO-function-selection-for-AR934x-So.patch2
-rw-r--r--target/linux/ar71xx/patches-3.7/500-MIPS-fw-myloader.patch2
-rw-r--r--target/linux/ar71xx/patches-3.7/505-MIPS-ath79-add-ath79_gpio_function_select.patch2
-rw-r--r--target/linux/ar71xx/patches-3.7/521-MIPS-ath79-enable-UART-for-early_serial.patch2
-rw-r--r--target/linux/ar71xx/patches-3.7/606-MIPS-ath79-pb44-fixes.patch2
-rw-r--r--target/linux/ar71xx/patches-3.7/902-unaligned_access_hacks.patch4
-rw-r--r--target/linux/generic/patches-3.7/220-gc_sections.patch372
-rw-r--r--target/linux/generic/patches-3.7/221-module_exports.patch (renamed from target/linux/generic/patches-3.7/220-module_exports.patch)45
-rw-r--r--target/linux/generic/patches-3.7/230-openwrt_lzma_options.patch2
-rw-r--r--target/linux/generic/patches-3.7/302-mips_no_branch_likely.patch2
-rw-r--r--target/linux/generic/patches-3.7/305-mips_module_reloc.patch4
-rw-r--r--target/linux/generic/patches-3.7/306-mips_mem_functions_performance.patch2
-rw-r--r--target/linux/generic/patches-3.7/340-module_alloc_size_check.patch2
-rw-r--r--target/linux/generic/patches-3.7/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch2
-rw-r--r--target/linux/generic/patches-3.7/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch10
-rw-r--r--target/linux/generic/patches-3.7/531-debloat_lzma.patch6
-rw-r--r--target/linux/generic/patches-3.7/600-netfilter_layer7_2.22.patch2
-rw-r--r--target/linux/generic/patches-3.7/610-netfilter_match_bypass_default_checks.patch8
-rw-r--r--target/linux/generic/patches-3.7/653-disable_netlink_trim.patch2
-rw-r--r--target/linux/generic/patches-3.7/750-hostap_txpower.patch2
-rw-r--r--target/linux/generic/patches-3.7/901-debloat_sock_diag.patch2
-rw-r--r--target/linux/generic/patches-3.7/941-ocf_20120127.patch2
-rw-r--r--target/linux/generic/patches-3.7/992-mpcore_wdt_fix_watchdog_counter_loading.patch2
-rw-r--r--target/linux/generic/patches-3.8/100-overlayfs.patch4
-rw-r--r--target/linux/generic/patches-3.8/102-ehci_hcd_ignore_oc.patch4
-rw-r--r--target/linux/generic/patches-3.8/220-gc_sections.patch372
-rw-r--r--target/linux/generic/patches-3.8/221-module_exports.patch (renamed from target/linux/generic/patches-3.8/220-module_exports.patch)45
-rw-r--r--target/linux/generic/patches-3.8/230-openwrt_lzma_options.patch2
-rw-r--r--target/linux/generic/patches-3.8/302-mips_no_branch_likely.patch2
-rw-r--r--target/linux/generic/patches-3.8/305-mips_module_reloc.patch4
-rw-r--r--target/linux/generic/patches-3.8/306-mips_mem_functions_performance.patch2
-rw-r--r--target/linux/generic/patches-3.8/470-mtd_m25p80_add_pm25lv_flash_support.patch2
-rw-r--r--target/linux/generic/patches-3.8/476-mtd-m25p80-allow-to-disable-small-sector-erase.patch2
-rw-r--r--target/linux/generic/patches-3.8/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch2
-rw-r--r--target/linux/generic/patches-3.8/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch10
-rw-r--r--target/linux/generic/patches-3.8/531-debloat_lzma.patch6
-rw-r--r--target/linux/generic/patches-3.8/600-netfilter_layer7_2.22.patch2
-rw-r--r--target/linux/generic/patches-3.8/610-netfilter_match_bypass_default_checks.patch8
-rw-r--r--target/linux/generic/patches-3.8/653-disable_netlink_trim.patch2
-rw-r--r--target/linux/generic/patches-3.8/750-hostap_txpower.patch2
-rw-r--r--target/linux/generic/patches-3.8/810-pci_disable_common_quirks.patch2
-rw-r--r--target/linux/generic/patches-3.8/901-debloat_sock_diag.patch2
-rw-r--r--target/linux/generic/patches-3.8/920-unable_to_open_console.patch2
-rw-r--r--target/linux/generic/patches-3.8/941-ocf_20120127.patch2
-rw-r--r--target/linux/generic/patches-3.8/950-vm_exports.patch2
-rw-r--r--target/linux/generic/patches-3.8/992-mpcore_wdt_fix_watchdog_counter_loading.patch2
52 files changed, 864 insertions, 135 deletions
diff --git a/include/kernel-build.mk b/include/kernel-build.mk
index 0b7b54fdd8..095940c570 100644
--- a/include/kernel-build.mk
+++ b/include/kernel-build.mk
@@ -81,15 +81,11 @@ define BuildKernel
( \
echo '#define SYMTAB_KEEP \'; \
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
- awk '{print "*(___ksymtab+" $$$$1 ") \\" }'; \
+ awk '{print "KEEP(*(___ksymtab+" $$$$1 ")) \\" }'; \
echo; \
echo '#define SYMTAB_KEEP_GPL \'; \
cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
- awk '{print "*(___ksymtab_gpl+" $$$$1 ") \\" }'; \
- echo; \
- echo '#define SYMTAB_KEEP_STR \'; \
- cat $(KERNEL_BUILD_DIR)/sym_include.txt | \
- awk '{print "*(__ksymtab_strings." $$$$1 ") \\" }'; \
+ awk '{print "KEEP(*(___ksymtab_gpl+" $$$$1 ")) \\" }'; \
echo; \
echo '#define SYMTAB_DISCARD \'; \
cat $(KERNEL_BUILD_DIR)/sym_exclude.txt | \
@@ -99,10 +95,6 @@ define BuildKernel
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 ") \\" }'; \
- echo; \
) > $$@
$(STAMP_CONFIGURED): $(STAMP_PREPARED) $(LINUX_KCONFIG_LIST) $(TOPDIR)/.config
diff --git a/target/linux/ar71xx/patches-3.7/169-MIPS-ath79-allow-to-specify-bus-number-in-PCI-IRQ-ma.patch b/target/linux/ar71xx/patches-3.7/169-MIPS-ath79-allow-to-specify-bus-number-in-PCI-IRQ-ma.patch
index bd95d718b2..89ab5ace69 100644
--- a/target/linux/ar71xx/patches-3.7/169-MIPS-ath79-allow-to-specify-bus-number-in-PCI-IRQ-ma.patch
+++ b/target/linux/ar71xx/patches-3.7/169-MIPS-ath79-allow-to-specify-bus-number-in-PCI-IRQ-ma.patch
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/arch/mips/ath79/pci.c
+++ b/arch/mips/ath79/pci.c
-@@ -75,7 +75,9 @@ int __init pcibios_map_irq(const struct
+@@ -75,7 +75,9 @@ int __init pcibios_map_irq(const struct
const struct ath79_pci_irq *entry;
entry = &ath79_pci_irq_map[i];
diff --git a/target/linux/ar71xx/patches-3.7/170-MIPS-ath79-add-PCI-controller-registration-code-for-.patch b/target/linux/ar71xx/patches-3.7/170-MIPS-ath79-add-PCI-controller-registration-code-for-.patch
index 0c3889fdb9..5c6388c455 100644
--- a/target/linux/ar71xx/patches-3.7/170-MIPS-ath79-add-PCI-controller-registration-code-for-.patch
+++ b/target/linux/ar71xx/patches-3.7/170-MIPS-ath79-add-PCI-controller-registration-code-for-.patch
@@ -44,7 +44,7 @@ Subject: [PATCH 26/34] MIPS: ath79: add PCI controller registration code for the
int __init pcibios_map_irq(const struct pci_dev *dev, uint8_t slot, uint8_t pin)
{
int irq = -1;
-@@ -64,6 +79,9 @@ int __init pcibios_map_irq(const struct
+@@ -64,6 +79,9 @@ int __init pcibios_map_irq(const struct
soc_is_ar9344()) {
ath79_pci_irq_map = ar724x_pci_irq_map;
ath79_pci_nr_irqs = ARRAY_SIZE(ar724x_pci_irq_map);
diff --git a/target/linux/ar71xx/patches-3.7/203-spi-ath79-use-gpio_request_one.patch b/target/linux/ar71xx/patches-3.7/203-spi-ath79-use-gpio_request_one.patch
index 12559bcae1..a7329b2ab7 100644
--- a/target/linux/ar71xx/patches-3.7/203-spi-ath79-use-gpio_request_one.patch
+++ b/target/linux/ar71xx/patches-3.7/203-spi-ath79-use-gpio_request_one.patch
@@ -32,19 +32,18 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- status = gpio_request(cdata->gpio, dev_name(&spi->dev));
- if (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,
- spi->mode & SPI_CS_HIGH);
- if (status) {
- gpio_free(cdata->gpio);
- 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,
+ dev_name(&spi->dev));
}
diff --git a/target/linux/ar71xx/patches-3.7/204-spi-ath79-avoid-multiple-initialization-of-the-SPI-c.patch b/target/linux/ar71xx/patches-3.7/204-spi-ath79-avoid-multiple-initialization-of-the-SPI-c.patch
index c6f4b2b959..976159c6f9 100644
--- a/target/linux/ar71xx/patches-3.7/204-spi-ath79-avoid-multiple-initialization-of-the-SPI-c.patch
+++ b/target/linux/ar71xx/patches-3.7/204-spi-ath79-avoid-multiple-initialization-of-the-SPI-c.patch
@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/drivers/spi/spi-ath79.c
+++ b/drivers/spi/spi-ath79.c
-@@ -96,16 +96,8 @@ static void ath79_spi_chipselect(struct
+@@ -96,16 +96,8 @@ static void ath79_spi_chipselect(struct
}
diff --git a/target/linux/ar71xx/patches-3.7/206-spi-ath79-make-chipselect-logic-more-flexible.patch b/target/linux/ar71xx/patches-3.7/206-spi-ath79-make-chipselect-logic-more-flexible.patch
index 34df1756bb..da83e2ebe8 100644
--- a/target/linux/ar71xx/patches-3.7/206-spi-ath79-make-chipselect-logic-more-flexible.patch
+++ b/target/linux/ar71xx/patches-3.7/206-spi-ath79-make-chipselect-logic-more-flexible.patch
@@ -170,7 +170,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
struct ath79_spi {
struct spi_bitbang bitbang;
u32 ioc_base;
-@@ -69,6 +71,7 @@ static void ath79_spi_chipselect(struct
+@@ -69,6 +71,7 @@ static void ath79_spi_chipselect(struct
{
struct ath79_spi *sp = ath79_spidev_to_sp(spi);
int cs_high = (spi->mode & SPI_CS_HIGH) ? is_active : !is_active;
@@ -178,7 +178,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
if (is_active) {
/* set initial clock polarity */
-@@ -80,20 +83,24 @@ static void ath79_spi_chipselect(struct
+@@ -80,20 +83,24 @@ static void ath79_spi_chipselect(struct
ath79_spi_wr(sp, AR71XX_SPI_REG_IOC, sp->ioc_base);
}
diff --git a/target/linux/ar71xx/patches-3.7/212-MIPS-ath79-fix-GPIO-function-selection-for-AR934x-So.patch b/target/linux/ar71xx/patches-3.7/212-MIPS-ath79-fix-GPIO-function-selection-for-AR934x-So.patch
index a9845baba8..3e41789bf8 100644
--- a/target/linux/ar71xx/patches-3.7/212-MIPS-ath79-fix-GPIO-function-selection-for-AR934x-So.patch
+++ b/target/linux/ar71xx/patches-3.7/212-MIPS-ath79-fix-GPIO-function-selection-for-AR934x-So.patch
@@ -19,7 +19,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/arch/mips/ath79/gpio.c
+++ b/arch/mips/ath79/gpio.c
-@@ -137,47 +137,61 @@ static struct gpio_chip ath79_gpio_chip
+@@ -137,47 +137,61 @@ static struct gpio_chip ath79_gpio_chip
.base = 0,
};
diff --git a/target/linux/ar71xx/patches-3.7/500-MIPS-fw-myloader.patch b/target/linux/ar71xx/patches-3.7/500-MIPS-fw-myloader.patch
index 3559a27a2c..184f67a723 100644
--- a/target/linux/ar71xx/patches-3.7/500-MIPS-fw-myloader.patch
+++ b/target/linux/ar71xx/patches-3.7/500-MIPS-fw-myloader.patch
@@ -1,6 +1,6 @@
--- a/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_CFE) += arch/mips/fw/cfe/
diff --git a/target/linux/ar71xx/patches-3.7/505-MIPS-ath79-add-ath79_gpio_function_select.patch b/target/linux/ar71xx/patches-3.7/505-MIPS-ath79-add-ath79_gpio_function_select.patch
index 86e136f67e..08f4a1e95c 100644
--- a/target/linux/ar71xx/patches-3.7/505-MIPS-ath79-add-ath79_gpio_function_select.patch
+++ b/target/linux/ar71xx/patches-3.7/505-MIPS-ath79-add-ath79_gpio_function_select.patch
@@ -10,7 +10,7 @@
#endif /* __ATH79_COMMON_H */
--- a/arch/mips/ath79/gpio.c
+++ b/arch/mips/ath79/gpio.c
-@@ -198,6 +198,34 @@ void ath79_gpio_function_setup(u32 set,
+@@ -198,6 +198,34 @@ void ath79_gpio_function_setup(u32 set,
spin_unlock_irqrestore(&ath79_gpio_lock, flags);
}
diff --git a/target/linux/ar71xx/patches-3.7/521-MIPS-ath79-enable-UART-for-early_serial.patch b/target/linux/ar71xx/patches-3.7/521-MIPS-ath79-enable-UART-for-early_serial.patch
index 489bc96738..2ee025bbf2 100644
--- a/target/linux/ar71xx/patches-3.7/521-MIPS-ath79-enable-UART-for-early_serial.patch
+++ b/target/linux/ar71xx/patches-3.7/521-MIPS-ath79-enable-UART-for-early_serial.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/ath79/early_printk.c
+++ b/arch/mips/ath79/early_printk.c
-@@ -56,6 +56,46 @@ static void prom_putchar_dummy(unsigned
+@@ -56,6 +56,46 @@ static void prom_putchar_dummy(unsigned
/* nothing to do */
}
diff --git a/target/linux/ar71xx/patches-3.7/606-MIPS-ath79-pb44-fixes.patch b/target/linux/ar71xx/patches-3.7/606-MIPS-ath79-pb44-fixes.patch
index f9ec7753f1..b38b46121d 100644
--- a/target/linux/ar71xx/patches-3.7/606-MIPS-ath79-pb44-fixes.patch
+++ b/target/linux/ar71xx/patches-3.7/606-MIPS-ath79-pb44-fixes.patch
@@ -50,7 +50,7 @@
#define PB44_GPIO_SW_RESET (PB44_GPIO_EXP_BASE + 6)
#define PB44_GPIO_SW_JUMP (PB44_GPIO_EXP_BASE + 8)
#define PB44_GPIO_LED_JUMP1 (PB44_GPIO_EXP_BASE + 9)
-@@ -92,21 +117,66 @@ static struct ath79_spi_controller_data
+@@ -92,21 +117,66 @@ static struct ath79_spi_controller_data
.cs_line = 0,
};
diff --git a/target/linux/ar71xx/patches-3.7/902-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-3.7/902-unaligned_access_hacks.patch
index e7e1712b7e..fc05676b83 100644
--- a/target/linux/ar71xx/patches-3.7/902-unaligned_access_hacks.patch
+++ b/target/linux/ar71xx/patches-3.7/902-unaligned_access_hacks.patch
@@ -288,7 +288,7 @@
#include <asm/uaccess.h>
#include <linux/proc_fs.h>
-@@ -851,10 +852,10 @@ static void tcp_v6_send_response(struct
+@@ -851,10 +852,10 @@ static void tcp_v6_send_response(struct
topt = (__be32 *)(t1 + 1);
if (ts) {
@@ -415,7 +415,7 @@
if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
fl6.flowi6_mark = skb->mark;
-@@ -1256,7 +1256,7 @@ static int ip6gre_header(struct sk_buff
+@@ -1256,7 +1256,7 @@ static int ip6gre_header(struct sk_buff
struct ipv6hdr *ipv6h = (struct ipv6hdr *)skb_push(skb, t->hlen);
__be16 *p = (__be16 *)(ipv6h+1);
diff --git a/target/linux/generic/patches-3.7/220-gc_sections.patch b/target/linux/generic/patches-3.7/220-gc_sections.patch
new file mode 100644
index 0000000000..8a52a1eec8
--- /dev/null
+++ b/target/linux/generic/patches-3.7/220-gc_sections.patch
@@ -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
diff --git a/target/linux/generic/patches-3.7/220-module_exports.patch b/target/linux/generic/patches-3.7/221-module_exports.patch
index fc382c16f9..da08de626a 100644
--- a/target/linux/generic/patches-3.7/220-module_exports.patch
+++ b/target/linux/generic/patches-3.7/221-module_exports.patch
@@ -1,29 +1,27 @@
--- a/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
#endif
-+#ifndef SYMTAB_KEEP_STR
-+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
-+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
-+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
++#ifndef SYMTAB_KEEP
++#define SYMTAB_KEEP KEEP(*(SORT(___ksymtab+*)))
++#define SYMTAB_KEEP_GPL KEEP(*(SORT(___ksymtab_gpl+*)))
+#endif
+
+#ifndef SYMTAB_DISCARD
+#define SYMTAB_DISCARD
+#define SYMTAB_DISCARD_GPL
-+#define SYMTAB_DISCARD_STR
+#endif
+
#ifndef SYMBOL_PREFIX
#define VMLINUX_SYMBOL(sym) sym
#else
-@@ -276,14 +288,14 @@
+@@ -277,14 +287,14 @@
/* Kernel symbol table: Normal symbols */ \
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___ksymtab) = .; \
-- *(SORT(___ksymtab+*)) \
+- KEEP(*(SORT(___ksymtab+*))) \
+ SYMTAB_KEEP \
VMLINUX_SYMBOL(__stop___ksymtab) = .; \
} \
@@ -31,30 +29,40 @@
/* 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+*))) \
+ SYMTAB_KEEP_GPL \
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
} \
\
-@@ -345,7 +357,7 @@
+@@ -346,7 +356,7 @@
\
/* Kernel symbol table: strings */ \
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
- *(__ksymtab_strings) \
-+ SYMTAB_KEEP_STR \
++ *(__ksymtab_strings+*) \
} \
\
/* __*init sections */ \
-@@ -679,6 +691,9 @@
+@@ -680,6 +690,8 @@
EXIT_TEXT \
EXIT_DATA \
EXIT_CALL \
+ SYMTAB_DISCARD \
+ SYMTAB_DISCARD_GPL \
-+ SYMTAB_DISCARD_STR \
*(.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
+++ b/include/linux/export.h
@@ -45,12 +45,19 @@ extern struct module __this_module;
@@ -78,14 +86,3 @@
= MODULE_SYMBOL_PREFIX #sym; \
static const struct kernel_symbol __ksymtab_##sym \
__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
diff --git a/target/linux/generic/patches-3.7/230-openwrt_lzma_options.patch b/target/linux/generic/patches-3.7/230-openwrt_lzma_options.patch
index b09c24d4c3..972b876dfe 100644
--- a/target/linux/generic/patches-3.7/230-openwrt_lzma_options.patch
+++ b/target/linux/generic/patches-3.7/230-openwrt_lzma_options.patch
@@ -1,6 +1,6 @@
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
-@@ -296,7 +296,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
+@@ -296,7 +296,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
quiet_cmd_lzma = LZMA $@
cmd_lzma = (cat $(filter-out FORCE,$^) | \
diff --git a/target/linux/generic/patches-3.7/302-mips_no_branch_likely.patch b/target/linux/generic/patches-3.7/302-mips_no_branch_likely.patch
index 1da9540050..44c6b04fcf 100644
--- a/target/linux/generic/patches-3.7/302-mips_no_branch_likely.patch
+++ b/target/linux/generic/patches-3.7/302-mips_no_branch_likely.patch
@@ -7,5 +7,5 @@
-cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
+cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
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
diff --git a/target/linux/generic/patches-3.7/305-mips_module_reloc.patch b/target/linux/generic/patches-3.7/305-mips_module_reloc.patch
index 3c51d14cf7..f0f513741d 100644
--- a/target/linux/generic/patches-3.7/305-mips_module_reloc.patch
+++ b/target/linux/generic/patches-3.7/305-mips_module_reloc.patch
@@ -3,7 +3,7 @@
@@ -90,8 +90,13 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
cflags-y += -msoft-float
- LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
+ LDFLAGS_vmlinux += -G 0 -static -n -nostdlib --gc-sections
+ifdef CONFIG_64BIT
KBUILD_AFLAGS_MODULE += -mlong-calls
KBUILD_CFLAGS_MODULE += -mlong-calls
@@ -12,7 +12,7 @@
+KBUILD_CFLAGS_MODULE += -mno-long-calls
+endif
- cflags-y += -ffreestanding
+ KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
--- a/arch/mips/include/asm/module.h
+++ b/arch/mips/include/asm/module.h
diff --git a/target/linux/generic/patches-3.7/306-mips_mem_functions_performance.patch b/target/linux/generic/patches-3.7/306-mips_mem_functions_performance.patch
index 9818677425..e6056fa5c4 100644
--- a/target/linux/generic/patches-3.7/306-mips_mem_functions_performance.patch
+++ b/target/linux/generic/patches-3.7/306-mips_mem_functions_performance.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/include/asm/string.h
+++ b/arch/mips/include/asm/string.h
-@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__
+@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__
#define __HAVE_ARCH_MEMSET
extern void *memset(void *__s, int __c, size_t __count);
diff --git a/target/linux/generic/patches-3.7/340-module_alloc_size_check.patch b/target/linux/generic/patches-3.7/340-module_alloc_size_check.patch
index 2459b6183d..e48c0d2c10 100644
--- a/target/linux/generic/patches-3.7/340-module_alloc_size_check.patch
+++ b/target/linux/generic/patches-3.7/340-module_alloc_size_check.patch
@@ -1,6 +1,6 @@
--- a/kernel/module.c
+++ b/kernel/module.c
-@@ -2378,12 +2378,15 @@ static void dynamic_debug_remove(struct
+@@ -2378,12 +2378,15 @@ static void dynamic_debug_remove(struct
void * __weak module_alloc(unsigned long size)
{
diff --git a/target/linux/generic/patches-3.7/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch b/target/linux/generic/patches-3.7/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch
index 1b814e97fd..4767e769b6 100644
--- a/target/linux/generic/patches-3.7/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch
+++ b/target/linux/generic/patches-3.7/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch
@@ -26,7 +26,7 @@ Signed-off-by: Charles Manning <cdhmanning@gmail.com>
#include <linux/pagemap.h>
#include <linux/mtd/mtd.h>
#include <linux/interrupt.h>
-@@ -236,7 +238,9 @@ static int yaffs_file_flush(struct file
+@@ -236,7 +238,9 @@ static int yaffs_file_flush(struct file
static int yaffs_file_flush(struct file *file);
#endif
diff --git a/target/linux/generic/patches-3.7/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch b/target/linux/generic/patches-3.7/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch
index 1ca189d2ee..7787d500a9 100644
--- a/target/linux/generic/patches-3.7/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch
+++ b/target/linux/generic/patches-3.7/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch
@@ -216,7 +216,7 @@
result = yaffs_rd_chunk_tags_nand(dev,nand_chunk,buffer,&tempTags);
if(memcmp(buffer,data,dev->data_bytes_per_chunk) ||
tempTags.obj_id != tags->obj_id ||
-@@ -424,7 +424,7 @@ static int yaffs_write_new_chunk(struct
+@@ -424,7 +424,7 @@ static int yaffs_write_new_chunk(struct
* lot of checks that are most likely not needed.
*
* Mods to the above
@@ -225,7 +225,7 @@
* rest of the block.
*/
-@@ -486,7 +486,7 @@ static int yaffs_write_new_chunk(struct
+@@ -486,7 +486,7 @@ static int yaffs_write_new_chunk(struct
}
@@ -279,7 +279,7 @@
/* Free chunks already includes softdeleted chunks.
* How ever this chunk is going to soon be really deleted
* which will increment free chunks.
-@@ -2752,7 +2752,7 @@ int yaffs_put_chunk_in_file(yaffs_obj_t
+@@ -2752,7 +2752,7 @@ int yaffs_put_chunk_in_file(yaffs_obj_t
NULL);
if (!tn)
return YAFFS_FAIL;
@@ -455,7 +455,7 @@
#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
else if (obj->short_name[0]) {
yaffs_strcpy(name, obj->short_name);
-@@ -4861,9 +4861,9 @@ int yaffs_set_attribs(yaffs_obj_t *obj,
+@@ -4861,9 +4861,9 @@ int yaffs_set_attribs(yaffs_obj_t *obj,
if (valid & ATTR_MODE)
obj->yst_mode = attr->ia_mode;
if (valid & ATTR_UID)
@@ -467,7 +467,7 @@
if (valid & ATTR_ATIME)
obj->yst_atime = Y_TIME_CONVERT(attr->ia_atime);
-@@ -4886,9 +4886,9 @@ int yaffs_get_attribs(yaffs_obj_t *obj,
+@@ -4886,9 +4886,9 @@ int yaffs_get_attribs(yaffs_obj_t *obj,
attr->ia_mode = obj->yst_mode;
valid |= ATTR_MODE;
diff --git a/target/linux/generic/patches-3.7/531-debloat_lzma.patch b/target/linux/generic/patches-3.7/531-debloat_lzma.patch
index 1e41661ebb..18e4a51ee3 100644
--- a/target/linux/generic/patches-3.7/531-debloat_lzma.patch
+++ b/target/linux/generic/patches-3.7/531-debloat_lzma.patch
@@ -124,7 +124,7 @@
/* LzmaDecode
--- a/lib/lzma/LzmaDec.c
+++ b/lib/lzma/LzmaDec.c
-@@ -682,7 +682,7 @@ static void LzmaDec_InitRc(CLzmaDec *p,
+@@ -682,7 +682,7 @@ static void LzmaDec_InitRc(CLzmaDec *p,
p->needFlush = 0;
}
@@ -194,7 +194,7 @@
{
CLzmaProps propNew;
RINOK(LzmaProps_Decode(&propNew, props, propsSize));
-@@ -944,7 +944,7 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p,
+@@ -944,7 +944,7 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p,
return SZ_OK;
}
@@ -375,7 +375,7 @@
void MatchFinder_Construct(CMatchFinder *p);
/* Conditions:
-@@ -70,12 +65,6 @@ int MatchFinder_Create(CMatchFinder *p,
+@@ -70,12 +65,6 @@ int MatchFinder_Create(CMatchFinder *p,
UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter,
ISzAlloc *alloc);
void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc);
diff --git a/target/linux/generic/patches-3.7/600-netfilter_layer7_2.22.patch b/target/linux/generic/patches-3.7/600-netfilter_layer7_2.22.patch
index 0c8c5e890b..dcec3791b2 100644
--- a/target/linux/generic/patches-3.7/600-netfilter_layer7_2.22.patch
+++ b/target/linux/generic/patches-3.7/600-netfilter_layer7_2.22.patch
@@ -30,7 +30,7 @@
depends on NETFILTER_ADVANCED
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
-@@ -131,6 +131,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
+@@ -131,6 +131,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
diff --git a/target/linux/generic/patches-3.7/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/patches-3.7/610-netfilter_match_bypass_default_checks.patch
index 0081da01df..ded6f5f153 100644
--- a/target/linux/generic/patches-3.7/610-netfilter_match_bypass_default_checks.patch
+++ b/target/linux/generic/patches-3.7/610-netfilter_match_bypass_default_checks.patch
@@ -76,11 +76,10 @@
counters = alloc_counters(table);
if (IS_ERR(counters))
-@@ -960,6 +989,14 @@ copy_entries_to_user(unsigned int total_
- ret = -EFAULT;
+@@ -961,6 +990,14 @@ copy_entries_to_user(unsigned int total_
goto free_counters;
}
-+
+
+ flags = e->ip.flags & IPT_F_MASK;
+ if (copy_to_user(userptr + off
+ + offsetof(struct ipt_entry, ip.flags),
@@ -88,6 +87,7 @@
+ ret = -EFAULT;
+ goto free_counters;
+ }
-
++
for (i = sizeof(struct ipt_entry);
i < e->target_offset;
+ i += m->u.match_size) {
diff --git a/target/linux/generic/patches-3.7/653-disable_netlink_trim.patch b/target/linux/generic/patches-3.7/653-disable_netlink_trim.patch
index 654d92e316..2a0a51a55f 100644
--- a/target/linux/generic/patches-3.7/653-disable_netlink_trim.patch
+++ b/target/linux/generic/patches-3.7/653-disable_netlink_trim.patch
@@ -1,6 +1,6 @@
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
-@@ -895,25 +895,7 @@ void netlink_detachskb(struct sock *sk,
+@@ -895,25 +895,7 @@ void netlink_detachskb(struct sock *sk,
static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
{
diff --git a/target/linux/generic/patches-3.7/750-hostap_txpower.patch b/target/linux/generic/patches-3.7/750-hostap_txpower.patch
index 814406df11..a111c8127b 100644
--- a/target/linux/generic/patches-3.7/750-hostap_txpower.patch
+++ b/target/linux/generic/patches-3.7/750-hostap_txpower.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/hostap/hostap_ap.c
+++ b/drivers/net/wireless/hostap/hostap_ap.c
-@@ -2340,13 +2340,13 @@ int prism2_ap_get_sta_qual(local_info_t
+@@ -2340,13 +2340,13 @@ int prism2_ap_get_sta_qual(local_info_t
addr[count].sa_family = ARPHRD_ETHER;
memcpy(addr[count].sa_data, sta->addr, ETH_ALEN);
if (sta->last_rx_silence == 0)
diff --git a/target/linux/generic/patches-3.7/901-debloat_sock_diag.patch b/target/linux/generic/patches-3.7/901-debloat_sock_diag.patch
index 4065f8aeae..119760648d 100644
--- a/target/linux/generic/patches-3.7/901-debloat_sock_diag.patch
+++ b/target/linux/generic/patches-3.7/901-debloat_sock_diag.patch
@@ -12,7 +12,7 @@
help
--- a/net/core/Makefile
+++ b/net/core/Makefile
-@@ -8,9 +8,9 @@ obj-y := sock.o request_sock.o skbuff.o
+@@ -8,9 +8,9 @@ obj-y := sock.o request_sock.o skbuff.o
obj-$(CONFIG_SYSCTL) += sysctl_net_core.o
obj-y += dev.o ethtool.o dev_addr_lists.o dst.o netevent.o \
diff --git a/target/linux/generic/patches-3.7/941-ocf_20120127.patch b/target/linux/generic/patches-3.7/941-ocf_20120127.patch
index 326471421c..1f3b581b72 100644
--- a/target/linux/generic/patches-3.7/941-ocf_20120127.patch
+++ b/target/linux/generic/patches-3.7/941-ocf_20120127.patch
@@ -24,7 +24,7 @@
* All of these routines try to estimate how many bits of randomness a
* particular randomness source. They do this by keeping track of the
* first and second order deltas of the event timings.
-@@ -799,6 +809,63 @@ void add_disk_randomness(struct gendisk
+@@ -799,6 +809,63 @@ void add_disk_randomness(struct gendisk
}
#endif
diff --git a/target/linux/generic/patches-3.7/992-mpcore_wdt_fix_watchdog_counter_loading.patch b/target/linux/generic/patches-3.7/992-mpcore_wdt_fix_watchdog_counter_loading.patch
index 26bb9b8b29..315d9ac101 100644
--- a/target/linux/generic/patches-3.7/992-mpcore_wdt_fix_watchdog_counter_loading.patch
+++ b/target/linux/generic/patches-3.7/992-mpcore_wdt_fix_watchdog_counter_loading.patch
@@ -55,7 +55,7 @@ Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
{ .compatible = "arm,cortex-a9-twd-timer", },
--- a/drivers/watchdog/mpcore_wdt.c
+++ b/drivers/watchdog/mpcore_wdt.c
-@@ -102,9 +102,7 @@ static void mpcore_wdt_keepalive(struct
+@@ -102,9 +102,7 @@ static void mpcore_wdt_keepalive(struct
spin_lock(&wdt_lock);
/* Assume prescale is set to 256 */
diff --git a/target/linux/generic/patches-3.8/100-overlayfs.patch b/target/linux/generic/patches-3.8/100-overlayfs.patch
index f6c9a3c166..04a058ff1f 100644
--- a/target/linux/generic/patches-3.8/100-overlayfs.patch
+++ b/target/linux/generic/patches-3.8/100-overlayfs.patch
@@ -279,8 +279,8 @@
source "fs/fuse/Kconfig"
+source "fs/overlayfs/Kconfig"
- config CUSE
- tristate "Character device in Userspace support"
+ config GENERIC_ACL
+ bool
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -107,6 +107,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
diff --git a/target/linux/generic/patches-3.8/102-ehci_hcd_ignore_oc.patch b/target/linux/generic/patches-3.8/102-ehci_hcd_ignore_oc.patch
index 1117223eb4..5bd661e124 100644
--- a/target/linux/generic/patches-3.8/102-ehci_hcd_ignore_oc.patch
+++ b/target/linux/generic/patches-3.8/102-ehci_hcd_ignore_oc.patch
@@ -1,6 +1,6 @@
--- a/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",
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
temp >> 8, temp & 0xff,
@@ -31,7 +31,7 @@
/*
--- a/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 has_synopsys_hc_bug:1; /* Synopsys HC */
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
diff --git a/target/linux/generic/patches-3.8/220-gc_sections.patch b/target/linux/generic/patches-3.8/220-gc_sections.patch
new file mode 100644
index 0000000000..19c0f15923
--- /dev/null
+++ b/target/linux/generic/patches-3.8/220-gc_sections.patch
@@ -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
diff --git a/target/linux/generic/patches-3.8/220-module_exports.patch b/target/linux/generic/patches-3.8/221-module_exports.patch
index fc382c16f9..da08de626a 100644
--- a/target/linux/generic/patches-3.8/220-module_exports.patch
+++ b/target/linux/generic/patches-3.8/221-module_exports.patch
@@ -1,29 +1,27 @@
--- a/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
#endif
-+#ifndef SYMTAB_KEEP_STR
-+#define SYMTAB_KEEP *(SORT(___ksymtab+*))
-+#define SYMTAB_KEEP_GPL *(SORT(___ksymtab_gpl+*))
-+#define SYMTAB_KEEP_STR *(__ksymtab_strings+*)
++#ifndef SYMTAB_KEEP
++#define SYMTAB_KEEP KEEP(*(SORT(___ksymtab+*)))
++#define SYMTAB_KEEP_GPL KEEP(*(SORT(___ksymtab_gpl+*)))
+#endif
+
+#ifndef SYMTAB_DISCARD
+#define SYMTAB_DISCARD
+#define SYMTAB_DISCARD_GPL
-+#define SYMTAB_DISCARD_STR
+#endif
+
#ifndef SYMBOL_PREFIX
#define VMLINUX_SYMBOL(sym) sym
#else
-@@ -276,14 +288,14 @@
+@@ -277,14 +287,14 @@
/* Kernel symbol table: Normal symbols */ \
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___ksymtab) = .; \
-- *(SORT(___ksymtab+*)) \
+- KEEP(*(SORT(___ksymtab+*))) \
+ SYMTAB_KEEP \
VMLINUX_SYMBOL(__stop___ksymtab) = .; \
} \
@@ -31,30 +29,40 @@
/* 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+*))) \
+ SYMTAB_KEEP_GPL \
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
} \
\
-@@ -345,7 +357,7 @@
+@@ -346,7 +356,7 @@
\
/* Kernel symbol table: strings */ \
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
- *(__ksymtab_strings) \
-+ SYMTAB_KEEP_STR \
++ *(__ksymtab_strings+*) \
} \
\
/* __*init sections */ \
-@@ -679,6 +691,9 @@
+@@ -680,6 +690,8 @@
EXIT_TEXT \
EXIT_DATA \
EXIT_CALL \
+ SYMTAB_DISCARD \
+ SYMTAB_DISCARD_GPL \
-+ SYMTAB_DISCARD_STR \
*(.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
+++ b/include/linux/export.h
@@ -45,12 +45,19 @@ extern struct module __this_module;
@@ -78,14 +86,3 @@
= MODULE_SYMBOL_PREFIX #sym; \
static const struct kernel_symbol __ksymtab_##sym \
__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
diff --git a/target/linux/generic/patches-3.8/230-openwrt_lzma_options.patch b/target/linux/generic/patches-3.8/230-openwrt_lzma_options.patch
index 55434c13ab..b6bb77023a 100644
--- a/target/linux/generic/patches-3.8/230-openwrt_lzma_options.patch
+++ b/target/linux/generic/patches-3.8/230-openwrt_lzma_options.patch
@@ -1,6 +1,6 @@
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
-@@ -299,7 +299,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
+@@ -299,7 +299,7 @@ cmd_bzip2 = (cat $(filter-out FORCE,$^)
quiet_cmd_lzma = LZMA $@
cmd_lzma = (cat $(filter-out FORCE,$^) | \
diff --git a/target/linux/generic/patches-3.8/302-mips_no_branch_likely.patch b/target/linux/generic/patches-3.8/302-mips_no_branch_likely.patch
index 1da9540050..44c6b04fcf 100644
--- a/target/linux/generic/patches-3.8/302-mips_no_branch_likely.patch
+++ b/target/linux/generic/patches-3.8/302-mips_no_branch_likely.patch
@@ -7,5 +7,5 @@
-cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
+cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
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
diff --git a/target/linux/generic/patches-3.8/305-mips_module_reloc.patch b/target/linux/generic/patches-3.8/305-mips_module_reloc.patch
index 3c51d14cf7..f0f513741d 100644
--- a/target/linux/generic/patches-3.8/305-mips_module_reloc.patch
+++ b/target/linux/generic/patches-3.8/305-mips_module_reloc.patch
@@ -3,7 +3,7 @@
@@ -90,8 +90,13 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlin
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe -mno-branch-likely
cflags-y += -msoft-float
- LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
+ LDFLAGS_vmlinux += -G 0 -static -n -nostdlib --gc-sections
+ifdef CONFIG_64BIT
KBUILD_AFLAGS_MODULE += -mlong-calls
KBUILD_CFLAGS_MODULE += -mlong-calls
@@ -12,7 +12,7 @@
+KBUILD_CFLAGS_MODULE += -mno-long-calls
+endif
- cflags-y += -ffreestanding
+ KBUILD_CFLAGS_KERNEL += -ffunction-sections -fdata-sections
--- a/arch/mips/include/asm/module.h
+++ b/arch/mips/include/asm/module.h
diff --git a/target/linux/generic/patches-3.8/306-mips_mem_functions_performance.patch b/target/linux/generic/patches-3.8/306-mips_mem_functions_performance.patch
index 9818677425..e6056fa5c4 100644
--- a/target/linux/generic/patches-3.8/306-mips_mem_functions_performance.patch
+++ b/target/linux/generic/patches-3.8/306-mips_mem_functions_performance.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/include/asm/string.h
+++ b/arch/mips/include/asm/string.h
-@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__
+@@ -133,11 +133,44 @@ strncmp(__const__ char *__cs, __const__
#define __HAVE_ARCH_MEMSET
extern void *memset(void *__s, int __c, size_t __count);
diff --git a/target/linux/generic/patches-3.8/470-mtd_m25p80_add_pm25lv_flash_support.patch b/target/linux/generic/patches-3.8/470-mtd_m25p80_add_pm25lv_flash_support.patch
index 36d9caac7b..7af5e4bd3f 100644
--- a/target/linux/generic/patches-3.8/470-mtd_m25p80_add_pm25lv_flash_support.patch
+++ b/target/linux/generic/patches-3.8/470-mtd_m25p80_add_pm25lv_flash_support.patch
@@ -27,7 +27,7 @@
/* Spansion -- single (large) sector size only, at least
* for the chips listed here (without boot sectors).
*/
-@@ -909,6 +915,9 @@ static int m25p_probe(struct spi_device
+@@ -909,6 +915,9 @@ static int m25p_probe(struct spi_device
if (info->flags & SECT_4K) {
flash->erase_opcode = OPCODE_BE_4K;
flash->mtd.erasesize = 4096;
diff --git a/target/linux/generic/patches-3.8/476-mtd-m25p80-allow-to-disable-small-sector-erase.patch b/target/linux/generic/patches-3.8/476-mtd-m25p80-allow-to-disable-small-sector-erase.patch
index ba1526ce52..83d6aa7e24 100644
--- a/target/linux/generic/patches-3.8/476-mtd-m25p80-allow-to-disable-small-sector-erase.patch
+++ b/target/linux/generic/patches-3.8/476-mtd-m25p80-allow-to-disable-small-sector-erase.patch
@@ -30,7 +30,7 @@
/****************************************************************************/
struct m25p {
-@@ -913,7 +919,7 @@ static int m25p_probe(struct spi_device
+@@ -913,7 +919,7 @@ static int m25p_probe(struct spi_device
flash->mtd._write = m25p80_write;
/* prefer "small sector" erase if possible */
diff --git a/target/linux/generic/patches-3.8/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch b/target/linux/generic/patches-3.8/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch
index 1b814e97fd..4767e769b6 100644
--- a/target/linux/generic/patches-3.8/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch
+++ b/target/linux/generic/patches-3.8/504-yaffs-Mods-for-Linux-3.0-and-fix-a-typo.patch
@@ -26,7 +26,7 @@ Signed-off-by: Charles Manning <cdhmanning@gmail.com>
#include <linux/pagemap.h>
#include <linux/mtd/mtd.h>
#include <linux/interrupt.h>
-@@ -236,7 +238,9 @@ static int yaffs_file_flush(struct file
+@@ -236,7 +238,9 @@ static int yaffs_file_flush(struct file
static int yaffs_file_flush(struct file *file);
#endif
diff --git a/target/linux/generic/patches-3.8/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch b/target/linux/generic/patches-3.8/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch
index 1ca189d2ee..7787d500a9 100644
--- a/target/linux/generic/patches-3.8/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch
+++ b/target/linux/generic/patches-3.8/512-yaffs-3.5-convert-to-use-kuid_t-kgid_t.patch
@@ -216,7 +216,7 @@
result = yaffs_rd_chunk_tags_nand(dev,nand_chunk,buffer,&tempTags);
if(memcmp(buffer,data,dev->data_bytes_per_chunk) ||
tempTags.obj_id != tags->obj_id ||
-@@ -424,7 +424,7 @@ static int yaffs_write_new_chunk(struct
+@@ -424,7 +424,7 @@ static int yaffs_write_new_chunk(struct
* lot of checks that are most likely not needed.
*
* Mods to the above
@@ -225,7 +225,7 @@
* rest of the block.
*/
-@@ -486,7 +486,7 @@ static int yaffs_write_new_chunk(struct
+@@ -486,7 +486,7 @@ static int yaffs_write_new_chunk(struct
}
@@ -279,7 +279,7 @@
/* Free chunks already includes softdeleted chunks.
* How ever this chunk is going to soon be really deleted
* which will increment free chunks.
-@@ -2752,7 +2752,7 @@ int yaffs_put_chunk_in_file(yaffs_obj_t
+@@ -2752,7 +2752,7 @@ int yaffs_put_chunk_in_file(yaffs_obj_t
NULL);
if (!tn)
return YAFFS_FAIL;
@@ -455,7 +455,7 @@
#ifdef CONFIG_YAFFS_SHORT_NAMES_IN_RAM
else if (obj->short_name[0]) {
yaffs_strcpy(name, obj->short_name);
-@@ -4861,9 +4861,9 @@ int yaffs_set_attribs(yaffs_obj_t *obj,
+@@ -4861,9 +4861,9 @@ int yaffs_set_attribs(yaffs_obj_t *obj,
if (valid & ATTR_MODE)
obj->yst_mode = attr->ia_mode;
if (valid & ATTR_UID)
@@ -467,7 +467,7 @@
if (valid & ATTR_ATIME)
obj->yst_atime = Y_TIME_CONVERT(attr->ia_atime);
-@@ -4886,9 +4886,9 @@ int yaffs_get_attribs(yaffs_obj_t *obj,
+@@ -4886,9 +4886,9 @@ int yaffs_get_attribs(yaffs_obj_t *obj,
attr->ia_mode = obj->yst_mode;
valid |= ATTR_MODE;
diff --git a/target/linux/generic/patches-3.8/531-debloat_lzma.patch b/target/linux/generic/patches-3.8/531-debloat_lzma.patch
index 1e41661ebb..18e4a51ee3 100644
--- a/target/linux/generic/patches-3.8/531-debloat_lzma.patch
+++ b/target/linux/generic/patches-3.8/531-debloat_lzma.patch
@@ -124,7 +124,7 @@
/* LzmaDecode
--- a/lib/lzma/LzmaDec.c
+++ b/lib/lzma/LzmaDec.c
-@@ -682,7 +682,7 @@ static void LzmaDec_InitRc(CLzmaDec *p,
+@@ -682,7 +682,7 @@ static void LzmaDec_InitRc(CLzmaDec *p,
p->needFlush = 0;
}
@@ -194,7 +194,7 @@
{
CLzmaProps propNew;
RINOK(LzmaProps_Decode(&propNew, props, propsSize));
-@@ -944,7 +944,7 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p,
+@@ -944,7 +944,7 @@ SRes LzmaDec_AllocateProbs(CLzmaDec *p,
return SZ_OK;
}
@@ -375,7 +375,7 @@
void MatchFinder_Construct(CMatchFinder *p);
/* Conditions:
-@@ -70,12 +65,6 @@ int MatchFinder_Create(CMatchFinder *p,
+@@ -70,12 +65,6 @@ int MatchFinder_Create(CMatchFinder *p,
UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter,
ISzAlloc *alloc);
void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc);
diff --git a/target/linux/generic/patches-3.8/600-netfilter_layer7_2.22.patch b/target/linux/generic/patches-3.8/600-netfilter_layer7_2.22.patch
index 08c012cdc7..66e9514684 100644
--- a/target/linux/generic/patches-3.8/600-netfilter_layer7_2.22.patch
+++ b/target/linux/generic/patches-3.8/600-netfilter_layer7_2.22.patch
@@ -30,7 +30,7 @@
depends on NETFILTER_ADVANCED
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
-@@ -131,6 +131,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
+@@ -131,6 +131,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
diff --git a/target/linux/generic/patches-3.8/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/patches-3.8/610-netfilter_match_bypass_default_checks.patch
index 0081da01df..ded6f5f153 100644
--- a/target/linux/generic/patches-3.8/610-netfilter_match_bypass_default_checks.patch
+++ b/target/linux/generic/patches-3.8/610-netfilter_match_bypass_default_checks.patch
@@ -76,11 +76,10 @@
counters = alloc_counters(table);
if (IS_ERR(counters))
-@@ -960,6 +989,14 @@ copy_entries_to_user(unsigned int total_
- ret = -EFAULT;
+@@ -961,6 +990,14 @@ copy_entries_to_user(unsigned int total_
goto free_counters;
}
-+
+
+ flags = e->ip.flags & IPT_F_MASK;
+ if (copy_to_user(userptr + off
+ + offsetof(struct ipt_entry, ip.flags),
@@ -88,6 +87,7 @@
+ ret = -EFAULT;
+ goto free_counters;
+ }
-
++
for (i = sizeof(struct ipt_entry);
i < e->target_offset;
+ i += m->u.match_size) {
diff --git a/target/linux/generic/patches-3.8/653-disable_netlink_trim.patch b/target/linux/generic/patches-3.8/653-disable_netlink_trim.patch
index 870ae944a1..c5c967d20b 100644
--- a/target/linux/generic/patches-3.8/653-disable_netlink_trim.patch
+++ b/target/linux/generic/patches-3.8/653-disable_netlink_trim.patch
@@ -1,6 +1,6 @@
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
-@@ -898,25 +898,7 @@ void netlink_detachskb(struct sock *sk,
+@@ -898,25 +898,7 @@ void netlink_detachskb(struct sock *sk,
static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
{
diff --git a/target/linux/generic/patches-3.8/750-hostap_txpower.patch b/target/linux/generic/patches-3.8/750-hostap_txpower.patch
index 814406df11..a111c8127b 100644
--- a/target/linux/generic/patches-3.8/750-hostap_txpower.patch
+++ b/target/linux/generic/patches-3.8/750-hostap_txpower.patch
@@ -1,6 +1,6 @@
--- a/drivers/net/wireless/hostap/hostap_ap.c
+++ b/drivers/net/wireless/hostap/hostap_ap.c
-@@ -2340,13 +2340,13 @@ int prism2_ap_get_sta_qual(local_info_t
+@@ -2340,13 +2340,13 @@ int prism2_ap_get_sta_qual(local_info_t
addr[count].sa_family = ARPHRD_ETHER;
memcpy(addr[count].sa_data, sta->addr, ETH_ALEN);
if (sta->last_rx_silence == 0)
diff --git a/target/linux/generic/patches-3.8/810-pci_disable_common_quirks.patch b/target/linux/generic/patches-3.8/810-pci_disable_common_quirks.patch
index cd8551bc74..02d97cc5bf 100644
--- a/target/linux/generic/patches-3.8/810-pci_disable_common_quirks.patch
+++ b/target/linux/generic/patches-3.8/810-pci_disable_common_quirks.patch
@@ -15,7 +15,7 @@
default y
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
-@@ -44,6 +44,7 @@ static void quirk_mmio_always_on(struct
+@@ -44,6 +44,7 @@ static void quirk_mmio_always_on(struct
DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);
diff --git a/target/linux/generic/patches-3.8/901-debloat_sock_diag.patch b/target/linux/generic/patches-3.8/901-debloat_sock_diag.patch
index 4065f8aeae..119760648d 100644
--- a/target/linux/generic/patches-3.8/901-debloat_sock_diag.patch
+++ b/target/linux/generic/patches-3.8/901-debloat_sock_diag.patch
@@ -12,7 +12,7 @@
help
--- a/net/core/Makefile
+++ b/net/core/Makefile
-@@ -8,9 +8,9 @@ obj-y := sock.o request_sock.o skbuff.o
+@@ -8,9 +8,9 @@ obj-y := sock.o request_sock.o skbuff.o
obj-$(CONFIG_SYSCTL) += sysctl_net_core.o
obj-y += dev.o ethtool.o dev_addr_lists.o dst.o netevent.o \
diff --git a/target/linux/generic/patches-3.8/920-unable_to_open_console.patch b/target/linux/generic/patches-3.8/920-unable_to_open_console.patch
index 5a1e2f4a65..6202aa5ec3 100644
--- a/target/linux/generic/patches-3.8/920-unable_to_open_console.patch
+++ b/target/linux/generic/patches-3.8/920-unable_to_open_console.patch
@@ -1,6 +1,6 @@
--- a/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 */
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
diff --git a/target/linux/generic/patches-3.8/941-ocf_20120127.patch b/target/linux/generic/patches-3.8/941-ocf_20120127.patch
index 3c2ba0d38d..dec3c28211 100644
--- a/target/linux/generic/patches-3.8/941-ocf_20120127.patch
+++ b/target/linux/generic/patches-3.8/941-ocf_20120127.patch
@@ -24,7 +24,7 @@
* All of these routines try to estimate how many bits of randomness a
* particular randomness source. They do this by keeping track of the
* first and second order deltas of the event timings.
-@@ -796,6 +806,63 @@ void add_disk_randomness(struct gendisk
+@@ -796,6 +806,63 @@ void add_disk_randomness(struct gendisk
}
#endif
diff --git a/target/linux/generic/patches-3.8/950-vm_exports.patch b/target/linux/generic/patches-3.8/950-vm_exports.patch
index c1819b1b88..aae62f2380 100644
--- a/target/linux/generic/patches-3.8/950-vm_exports.patch
+++ b/target/linux/generic/patches-3.8/950-vm_exports.patch
@@ -52,7 +52,7 @@
* When we die, we re-parent all our children, and try to:
--- a/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) ||
capable(CAP_SYS_NICE));
}
diff --git a/target/linux/generic/patches-3.8/992-mpcore_wdt_fix_watchdog_counter_loading.patch b/target/linux/generic/patches-3.8/992-mpcore_wdt_fix_watchdog_counter_loading.patch
index 8d7390ebda..611b858268 100644
--- a/target/linux/generic/patches-3.8/992-mpcore_wdt_fix_watchdog_counter_loading.patch
+++ b/target/linux/generic/patches-3.8/992-mpcore_wdt_fix_watchdog_counter_loading.patch
@@ -55,7 +55,7 @@ Signed-off-by: Vitaly Kuzmichev <vkuzmichev@mvista.com>
{ .compatible = "arm,cortex-a9-twd-timer", },
--- a/drivers/watchdog/mpcore_wdt.c
+++ b/drivers/watchdog/mpcore_wdt.c
-@@ -101,9 +101,7 @@ static void mpcore_wdt_keepalive(struct
+@@ -101,9 +101,7 @@ static void mpcore_wdt_keepalive(struct
spin_lock(&wdt_lock);
/* Assume prescale is set to 256 */