fix: Add toolchain fixes to linux-cip 4.4 kernel on Noble

Message ID 20260923120346.3256438-1-alaur@ilbers.de
State Under Review
Headers show
Series fix: Add toolchain fixes to linux-cip 4.4 kernel on Noble | expand

Commit Message

Aleksey Laurynovich Sept. 23, 2026, 12:03 p.m. UTC
Older kernel (4.4.x) has three toolchain issues on Ubuntu Noble:
- dtc yylloc multiple definition (fixed by HOSTCFLAGS+=-fcommon)
- ld rejects -Wl,-Bsymbolic-functions (fixed by clearing LDFLAGS)
- arm64 proc.S uses deprecated .section syntax rejected by binutils 2.42
  (fixed by patching to use modern 'ax' flags)

The issue can be reproduced with the command:
$ bitbake mc:qemuarm64-noble:linux-cip-arm64

Signed-off-by: Aleksey Laurynovich <alaur@ilbers.de>
---
 ...rm64-proc.S-fix-binutils-2.42-section-syntax.patch | 11 +++++++++++
 .../recipes-kernel/linux/linux-cip_4.4.166-cip29.bb   |  6 ++++++
 2 files changed, 17 insertions(+)
 create mode 100644 meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch

Comments

MOESSBAUER, Felix Sept. 23, 2026, 1:49 p.m. UTC | #1
On Wed, 2026-09-23 at 14:03 +0200, Aleksey Laurynovich wrote:
> Older kernel (4.4.x) has three toolchain issues on Ubuntu Noble:
> - dtc yylloc multiple definition (fixed by HOSTCFLAGS+=-fcommon)
> - ld rejects -Wl,-Bsymbolic-functions (fixed by clearing LDFLAGS)
> - arm64 proc.S uses deprecated .section syntax rejected by binutils 2.42
>   (fixed by patching to use modern 'ax' flags)
> 
> The issue can be reproduced with the command:
> $ bitbake mc:qemuarm64-noble:linux-cip-arm64
> 
> Signed-off-by: Aleksey Laurynovich <alaur@ilbers.de>
> ---
>  ...rm64-proc.S-fix-binutils-2.42-section-syntax.patch | 11 +++++++++++
>  .../recipes-kernel/linux/linux-cip_4.4.166-cip29.bb   |  6 ++++++
>  2 files changed, 17 insertions(+)
>  create mode 100644 meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch
> 
> diff --git a/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch b/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch
> new file mode 100644
> index 00000000..f464ac40
> --- /dev/null
> +++ b/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch
> @@ -0,0 +1,11 @@
> +--- a/arch/arm64/mm/proc.S
> ++++ b/arch/arm64/mm/proc.S
> +@@ -152,7 +152,7 @@
> + alternative_endif
> + ENDPROC(cpu_do_switch_mm)
> + 
> +-	.section ".text.init", #alloc, #execinstr
> ++	.section ".text.init", "ax"
> + 
> + /*
> +  *	__cpu_setup
> diff --git a/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb b/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb

This kernel patch release is quite old. Did you check if v4.4.302-cip99
is also affected?

Felix

> index e2e51304..4b606dee 100644
> --- a/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb
> +++ b/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb
> @@ -9,8 +9,14 @@ PN .= "-${DISTRO_ARCH}"
>  
>  inherit linux-kernel
>  
> +# Older kernel dtc has yylloc multiple definition, fixed by -fcommon
> +KERNEL_EXTRA_BUILDARGS += "HOSTCFLAGS+=-fcommon"
> +# Older kernel passes -Wl,-Bsymbolic-functions to cross-linker which rejects it
> +KERNEL_EXTRA_BUILDARGS += "LDFLAGS="
> +
>  SRC_URI += " \
>      git://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git;protocol=https;branch=linux-4.4.y-cip;destsuffix=${P} \
> +    file://0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch \
>  "
>  
>  SRCREV = "af3adf9f9c633ac0e1d68487d7fad22285dda8a3"
> -- 
> 2.43.0
> 
> -- 
> You received this message because you are subscribed to the Google Groups "isar-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260923120346.3256438-1-alaur%40ilbers.de.
Jan Kiszka Sept. 23, 2026, 4:21 p.m. UTC | #2
On 23.09.26 15:49, Moessbauer, Felix (FT RPD CED OES-DE) wrote:
> On Wed, 2026-09-23 at 14:03 +0200, Aleksey Laurynovich wrote:
>> Older kernel (4.4.x) has three toolchain issues on Ubuntu Noble:
>> - dtc yylloc multiple definition (fixed by HOSTCFLAGS+=-fcommon)
>> - ld rejects -Wl,-Bsymbolic-functions (fixed by clearing LDFLAGS)
>> - arm64 proc.S uses deprecated .section syntax rejected by binutils 2.42
>>   (fixed by patching to use modern 'ax' flags)
>>
>> The issue can be reproduced with the command:
>> $ bitbake mc:qemuarm64-noble:linux-cip-arm64
>>
>> Signed-off-by: Aleksey Laurynovich <alaur@ilbers.de>
>> ---
>>  ...rm64-proc.S-fix-binutils-2.42-section-syntax.patch | 11 +++++++++++
>>  .../recipes-kernel/linux/linux-cip_4.4.166-cip29.bb   |  6 ++++++
>>  2 files changed, 17 insertions(+)
>>  create mode 100644 meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch
>>
>> diff --git a/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch b/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch
>> new file mode 100644
>> index 00000000..f464ac40
>> --- /dev/null
>> +++ b/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch
>> @@ -0,0 +1,11 @@
>> +--- a/arch/arm64/mm/proc.S
>> ++++ b/arch/arm64/mm/proc.S
>> +@@ -152,7 +152,7 @@
>> + alternative_endif
>> + ENDPROC(cpu_do_switch_mm)
>> + 
>> +-	.section ".text.init", #alloc, #execinstr
>> ++	.section ".text.init", "ax"
>> + 
>> + /*
>> +  *	__cpu_setup
>> diff --git a/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb b/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb
> 
> This kernel patch release is quite old. Did you check if v4.4.302-cip99
> is also affected?
> 

https://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git/commit/?id=09490469cfb3b0855cf56badc62c512684d59570

And that although this is an unsupported configuration (arm64 support
got added to CIP with 4.19 only).

So, don't do that.

Jan

Patch

diff --git a/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch b/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch
new file mode 100644
index 00000000..f464ac40
--- /dev/null
+++ b/meta-isar/recipes-kernel/linux/files/0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch
@@ -0,0 +1,11 @@ 
+--- a/arch/arm64/mm/proc.S
++++ b/arch/arm64/mm/proc.S
+@@ -152,7 +152,7 @@
+ alternative_endif
+ ENDPROC(cpu_do_switch_mm)
+ 
+-	.section ".text.init", #alloc, #execinstr
++	.section ".text.init", "ax"
+ 
+ /*
+  *	__cpu_setup
diff --git a/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb b/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb
index e2e51304..4b606dee 100644
--- a/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb
+++ b/meta-isar/recipes-kernel/linux/linux-cip_4.4.166-cip29.bb
@@ -9,8 +9,14 @@  PN .= "-${DISTRO_ARCH}"
 
 inherit linux-kernel
 
+# Older kernel dtc has yylloc multiple definition, fixed by -fcommon
+KERNEL_EXTRA_BUILDARGS += "HOSTCFLAGS+=-fcommon"
+# Older kernel passes -Wl,-Bsymbolic-functions to cross-linker which rejects it
+KERNEL_EXTRA_BUILDARGS += "LDFLAGS="
+
 SRC_URI += " \
     git://git.kernel.org/pub/scm/linux/kernel/git/cip/linux-cip.git;protocol=https;branch=linux-4.4.y-cip;destsuffix=${P} \
+    file://0001-arm64-proc.S-fix-binutils-2.42-section-syntax.patch \
 "
 
 SRCREV = "af3adf9f9c633ac0e1d68487d7fad22285dda8a3"