diff mbox series

kernel/generic: fix the 5.10 arm gc-sections patch

Message ID 20210723123449.1969865-1-rsalvaterra@gmail.com
State Accepted
Delegated to: Hauke Mehrtens
Headers show
Series kernel/generic: fix the 5.10 arm gc-sections patch | expand

Commit Message

Rui Salvaterra July 23, 2021, 12:34 p.m. UTC
Latest binutils (2.37) exposed a long-standing bug. The kernel linking stage
would break at the SORTTAB step, due to the exception table having been
previously purged from vmlinux, as its section wasn't marked as unconditionally
kept. Fix thusly.

Additionally, the "#define ARM_MMU_DISCARD(x) KEEP(x)" change is bogus. It
would only apply to !CONFIG_MMU devices (which we don't support in OpenWrt), and
it would even break the build if referenced. Drop it.

While at it, rename the patch in order to make it obvious that it's
arm-specific.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
---
 ...ections.patch => 220-arm-gc_sections.patch} | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)
 rename target/linux/generic/hack-5.10/{220-gc_sections.patch => 220-arm-gc_sections.patch} (93%)
diff mbox series

Patch

diff --git a/target/linux/generic/hack-5.10/220-gc_sections.patch b/target/linux/generic/hack-5.10/220-arm-gc_sections.patch
similarity index 93%
rename from target/linux/generic/hack-5.10/220-gc_sections.patch
rename to target/linux/generic/hack-5.10/220-arm-gc_sections.patch
index 810c5aecf5..3b67eea250 100644
--- a/target/linux/generic/hack-5.10/220-gc_sections.patch
+++ b/target/linux/generic/hack-5.10/220-arm-gc_sections.patch
@@ -32,6 +32,15 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  		 lib1funcs.o ashldi3.o bswapsdi2.o \
 --- a/arch/arm/kernel/vmlinux.lds.S
 +++ b/arch/arm/kernel/vmlinux.lds.S
+@@ -75,7 +75,7 @@ SECTIONS
+ 	. = ALIGN(4);
+ 	__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
+ 		__start___ex_table = .;
+-		ARM_MMU_KEEP(*(__ex_table))
++		KEEP(*(__ex_table))
+ 		__stop___ex_table = .;
+ 	}
+ 
 @@ -100,24 +100,24 @@ SECTIONS
  	}
  	.init.arch.info : {
@@ -63,14 +72,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  
 --- a/arch/arm/include/asm/vmlinux.lds.h
 +++ b/arch/arm/include/asm/vmlinux.lds.h
-@@ -23,19 +23,19 @@
- #define ARM_MMU_DISCARD(x)
- #else
- #define ARM_MMU_KEEP(x)
--#define ARM_MMU_DISCARD(x)	x
-+#define ARM_MMU_DISCARD(x)	KEEP(x)
- #endif
- 
+@@ -29,13 +29,13 @@
  #define PROC_INFO							\
  		. = ALIGN(4);						\
  		__proc_info_begin = .;					\