]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.0-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 18 Oct 2022 06:48:18 +0000 (08:48 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 18 Oct 2022 06:48:18 +0000 (08:48 +0200)
added patches:
kconfig.debug-add-toolchain-checks-for-debug_info_dwarf_toolchain_default.patch
kconfig.debug-simplify-the-dependency-of-debug_info_dwarf4-5.patch
lib-kconfig.debug-add-check-for-non-constant-.-s-u-leb128-support-to-dwarf5.patch

queue-6.0/kconfig.debug-add-toolchain-checks-for-debug_info_dwarf_toolchain_default.patch [new file with mode: 0644]
queue-6.0/kconfig.debug-simplify-the-dependency-of-debug_info_dwarf4-5.patch [new file with mode: 0644]
queue-6.0/lib-kconfig.debug-add-check-for-non-constant-.-s-u-leb128-support-to-dwarf5.patch [new file with mode: 0644]
queue-6.0/series

diff --git a/queue-6.0/kconfig.debug-add-toolchain-checks-for-debug_info_dwarf_toolchain_default.patch b/queue-6.0/kconfig.debug-add-toolchain-checks-for-debug_info_dwarf_toolchain_default.patch
new file mode 100644 (file)
index 0000000..bf28d3a
--- /dev/null
@@ -0,0 +1,50 @@
+From bb1435f3f575b5213eaf27434efa3971f51c01de Mon Sep 17 00:00:00 2001
+From: Masahiro Yamada <masahiroy@kernel.org>
+Date: Wed, 5 Oct 2022 01:29:04 +0900
+Subject: Kconfig.debug: add toolchain checks for DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+commit bb1435f3f575b5213eaf27434efa3971f51c01de upstream.
+
+CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT does not give explicit
+-gdwarf-* flag. The actual DWARF version is up to the toolchain.
+
+The combination of GCC and GAS works fine, and Clang with the integrated
+assembler is good too.
+
+The combination of Clang and GAS is tricky, but at least, the -g flag
+works for Clang <=13, which defaults to DWARF v4.
+
+Clang 14 switched its default to DWARF v5.
+
+Now, CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT has the same issue as
+addressed by commit 98cd6f521f10 ("Kconfig: allow explicit opt in to
+DWARF v5").
+
+CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y for Clang >= 14 and
+GAS < 2.35 produces a ton of errors like follows:
+
+  /tmp/main-c2741c.s: Assembler messages:
+  /tmp/main-c2741c.s:109: Error: junk at end of line, first unrecognized character is `"'
+  /tmp/main-c2741c.s:109: Error: file number less than one
+
+Add 'depends on' to check toolchains.
+
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Reviewed-by: Nathan Chancellor <nathan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ lib/Kconfig.debug |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -253,6 +253,7 @@ config DEBUG_INFO_NONE
+ config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
+       bool "Rely on the toolchain's implicit default DWARF version"
+       select DEBUG_INFO
++      depends on !CC_IS_CLANG || AS_IS_LLVM || CLANG_VERSION < 140000 || (AS_IS_GNU && AS_VERSION >= 23502)
+       help
+         The implicit default version of DWARF debug info produced by a
+         toolchain changes over time.
diff --git a/queue-6.0/kconfig.debug-simplify-the-dependency-of-debug_info_dwarf4-5.patch b/queue-6.0/kconfig.debug-simplify-the-dependency-of-debug_info_dwarf4-5.patch
new file mode 100644 (file)
index 0000000..ed56ca3
--- /dev/null
@@ -0,0 +1,41 @@
+From 4f001a21080ff2e2f0e1c3692f5e119aedbb3bc1 Mon Sep 17 00:00:00 2001
+From: Masahiro Yamada <masahiroy@kernel.org>
+Date: Wed, 5 Oct 2022 01:29:03 +0900
+Subject: Kconfig.debug: simplify the dependency of DEBUG_INFO_DWARF4/5
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+commit 4f001a21080ff2e2f0e1c3692f5e119aedbb3bc1 upstream.
+
+Commit c0a5c81ca9be ("Kconfig.debug: drop GCC 5+ version check for
+DWARF5") could have cleaned up the code a bit more.
+
+"CC_IS_CLANG &&" is unneeded. No functional change is intended.
+
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Reviewed-by: Nathan Chancellor <nathan@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ lib/Kconfig.debug |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -264,7 +264,7 @@ config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAUL
+ config DEBUG_INFO_DWARF4
+       bool "Generate DWARF Version 4 debuginfo"
+       select DEBUG_INFO
+-      depends on !CC_IS_CLANG || (CC_IS_CLANG && (AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)))
++      depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)
+       help
+         Generate DWARF v4 debug info. This requires gcc 4.5+, binutils 2.35.2
+         if using clang without clang's integrated assembler, and gdb 7.0+.
+@@ -276,7 +276,7 @@ config DEBUG_INFO_DWARF4
+ config DEBUG_INFO_DWARF5
+       bool "Generate DWARF Version 5 debuginfo"
+       select DEBUG_INFO
+-      depends on !CC_IS_CLANG || (CC_IS_CLANG && (AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)))
++      depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)
+       help
+         Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc
+         5.0+ accepts the -gdwarf-5 flag but only had partial support for some
diff --git a/queue-6.0/lib-kconfig.debug-add-check-for-non-constant-.-s-u-leb128-support-to-dwarf5.patch b/queue-6.0/lib-kconfig.debug-add-check-for-non-constant-.-s-u-leb128-support-to-dwarf5.patch
new file mode 100644 (file)
index 0000000..64e480d
--- /dev/null
@@ -0,0 +1,86 @@
+From 0a6de78cff600cb991f2a1b7ed376935871796a0 Mon Sep 17 00:00:00 2001
+From: Nathan Chancellor <nathan@kernel.org>
+Date: Fri, 14 Oct 2022 13:42:11 -0700
+Subject: lib/Kconfig.debug: Add check for non-constant .{s,u}leb128 support to DWARF5
+
+From: Nathan Chancellor <nathan@kernel.org>
+
+commit 0a6de78cff600cb991f2a1b7ed376935871796a0 upstream.
+
+When building with a RISC-V kernel with DWARF5 debug info using clang
+and the GNU assembler, several instances of the following error appear:
+
+  /tmp/vgettimeofday-48aa35.s:2963: Error: non-constant .uleb128 is not supported
+
+Dumping the .s file reveals these .uleb128 directives come from
+.debug_loc and .debug_ranges:
+
+  .Ldebug_loc0:
+          .byte   4                               # DW_LLE_offset_pair
+          .uleb128 .Lfunc_begin0-.Lfunc_begin0    #   starting offset
+          .uleb128 .Ltmp1-.Lfunc_begin0           #   ending offset
+          .byte   1                               # Loc expr size
+          .byte   90                              # DW_OP_reg10
+          .byte   0                               # DW_LLE_end_of_list
+
+  .Ldebug_ranges0:
+          .byte   4                               # DW_RLE_offset_pair
+          .uleb128 .Ltmp6-.Lfunc_begin0           #   starting offset
+          .uleb128 .Ltmp27-.Lfunc_begin0          #   ending offset
+          .byte   4                               # DW_RLE_offset_pair
+          .uleb128 .Ltmp28-.Lfunc_begin0          #   starting offset
+          .uleb128 .Ltmp30-.Lfunc_begin0          #   ending offset
+          .byte   0                               # DW_RLE_end_of_list
+
+There is an outstanding binutils issue to support a non-constant operand
+to .sleb128 and .uleb128 in GAS for RISC-V but there does not appear to
+be any movement on it, due to concerns over how it would work with
+linker relaxation.
+
+To avoid these build errors, prevent DWARF5 from being selected when
+using clang and an assembler that does not have support for these symbol
+deltas, which can be easily checked in Kconfig with as-instr plus the
+small test program from the dwz test suite from the binutils issue.
+
+Link: https://sourceware.org/bugzilla/show_bug.cgi?id=27215
+Link: https://github.com/ClangBuiltLinux/linux/issues/1719
+Signed-off-by: Nathan Chancellor <nathan@kernel.org>
+Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ lib/Kconfig.debug |    9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -231,6 +231,11 @@ config DEBUG_INFO
+         in the "Debug information" choice below, indicating that debug
+         information will be generated for build targets.
++# Clang is known to generate .{s,u}leb128 with symbol deltas with DWARF5, which
++# some targets may not support: https://sourceware.org/bugzilla/show_bug.cgi?id=27215
++config AS_HAS_NON_CONST_LEB128
++      def_bool $(as-instr,.uleb128 .Lexpr_end4 - .Lexpr_start3\n.Lexpr_start3:\n.Lexpr_end4:)
++
+ choice
+       prompt "Debug information"
+       depends on DEBUG_KERNEL
+@@ -253,7 +258,7 @@ config DEBUG_INFO_NONE
+ config DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT
+       bool "Rely on the toolchain's implicit default DWARF version"
+       select DEBUG_INFO
+-      depends on !CC_IS_CLANG || AS_IS_LLVM || CLANG_VERSION < 140000 || (AS_IS_GNU && AS_VERSION >= 23502)
++      depends on !CC_IS_CLANG || AS_IS_LLVM || CLANG_VERSION < 140000 || (AS_IS_GNU && AS_VERSION >= 23502 && AS_HAS_NON_CONST_LEB128)
+       help
+         The implicit default version of DWARF debug info produced by a
+         toolchain changes over time.
+@@ -277,7 +282,7 @@ config DEBUG_INFO_DWARF4
+ config DEBUG_INFO_DWARF5
+       bool "Generate DWARF Version 5 debuginfo"
+       select DEBUG_INFO
+-      depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502)
++      depends on !CC_IS_CLANG || AS_IS_LLVM || (AS_IS_GNU && AS_VERSION >= 23502 && AS_HAS_NON_CONST_LEB128)
+       help
+         Generate DWARF v5 debug info. Requires binutils 2.35.2, gcc 5.0+ (gcc
+         5.0+ accepts the -gdwarf-5 flag but only had partial support for some
index b7e9bacd197d781f412cef28a50b7f270f0fc3f2..7a9ff2273c1f843738e08c02c6f81036a188772d 100644 (file)
@@ -946,3 +946,6 @@ powerpc-64s-interrupt-fix-lost-interrupts-when-returning-to-soft-masked-context.
 drm-amd-display-fix-build-breakage-with-config_debug_fs-n.patch
 io_uring-fix-fdinfo-sqe-offsets-calculation.patch
 io_uring-rw-ensure-kiocb_end_write-is-always-called.patch
+kconfig.debug-simplify-the-dependency-of-debug_info_dwarf4-5.patch
+kconfig.debug-add-toolchain-checks-for-debug_info_dwarf_toolchain_default.patch
+lib-kconfig.debug-add-check-for-non-constant-.-s-u-leb128-support-to-dwarf5.patch