--- /dev/null
+From stable-owner@vger.kernel.org Thu Mar 2 03:07:31 2023
+From: Tom Saeger <tom.saeger@oracle.com>
+Date: Wed, 1 Mar 2023 19:07:00 -0700
+Subject: arch: fix broken BuildID for arm64 and riscv
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Sasha Levin <sashal@kernel.org>, Tom Saeger <tom.saeger@oracle.com>, stable@vger.kernel.org, Masahiro Yamada <masahiroy@kernel.org>, Dennis Gilmore <dennis@ausil.us>, Ard Biesheuvel <ardb@kernel.org>, Palmer Dabbelt <palmer@rivosinc.com>
+Message-ID: <20230210-tsaeger-upstream-linux-stable-5-4-v3-2-122fc5440d4c@oracle.com>
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+commit 99cb0d917ffa1ab628bb67364ca9b162c07699b1 upstream.
+
+Dennis Gilmore reports that the BuildID is missing in the arm64 vmlinux
+since commit 994b7ac1697b ("arm64: remove special treatment for the
+link order of head.o").
+
+The issue is that the type of .notes section, which contains the BuildID,
+changed from NOTES to PROGBITS.
+
+Ard Biesheuvel figured out that whichever object gets linked first gets
+to decide the type of a section. The PROGBITS type is the result of the
+compiler emitting .note.GNU-stack as PROGBITS rather than NOTE.
+
+While Ard provided a fix for arm64, I want to fix this globally because
+the same issue is happening on riscv since commit 2348e6bf4421 ("riscv:
+remove special treatment for the link order of head.o"). This problem
+will happen in general for other architectures if they start to drop
+unneeded entries from scripts/head-object-list.txt.
+
+Discard .note.GNU-stack in include/asm-generic/vmlinux.lds.h.
+
+Link: https://lore.kernel.org/lkml/CAABkxwuQoz1CTbyb57n0ZX65eSYiTonFCU8-LCQc=74D=xE=rA@mail.gmail.com/
+Fixes: 994b7ac1697b ("arm64: remove special treatment for the link order of head.o")
+Fixes: 2348e6bf4421 ("riscv: remove special treatment for the link order of head.o")
+Reported-by: Dennis Gilmore <dennis@ausil.us>
+Suggested-by: Ard Biesheuvel <ardb@kernel.org>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
+[Tom: stable backport 5.15.y, 5.10.y, 5.4.y]
+
+Though the above "Fixes:" commits are not in this kernel, the conditions
+which lead to a missing Build ID in arm64 vmlinux are similar.
+
+Evidence points to these conditions:
+1. ld version > 2.36 (exact binutils commit documented in a494398bde27)
+2. first object which gets linked (head.o) has a PROGBITS .note.GNU-stack segment
+
+These conditions can be observed when:
+- 5.15.60+ OR 5.10.136+ OR 5.4.210+
+- AND ld version > 2.36
+- AND arch=arm64
+- AND CONFIG_MODVERSIONS=y
+
+There are notable differences in the vmlinux elf files produced
+before(bad) and after(good) applying this series.
+
+Good: p_type:PT_NOTE segment exists.
+ Bad: p_type:PT_NOTE segment is missing.
+
+Good: sh_name_str:.notes section has sh_type:SHT_NOTE
+ Bad: sh_name_str:.notes section has sh_type:SHT_PROGBITS
+
+`readelf -n` (as of v2.40) searches for Build Id
+by processing only the very first note in sh_type:SHT_NOTE sections.
+
+This was previously bisected to the stable backport of 0d362be5b142.
+Follow-up experiments were discussed here: https://lore.kernel.org/all/20221221235413.xaisboqmr7dkqwn6@oracle.com/
+which strongly hints at condition 2.
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ include/asm-generic/vmlinux.lds.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/include/asm-generic/vmlinux.lds.h
++++ b/include/asm-generic/vmlinux.lds.h
+@@ -825,7 +825,12 @@
+ #define TRACEDATA
+ #endif
+
++/*
++ * Discard .note.GNU-stack, which is emitted as PROGBITS by the compiler.
++ * Otherwise, the type of .notes section would become PROGBITS instead of NOTES.
++ */
+ #define NOTES \
++ /DISCARD/ : { *(.note.GNU-stack) } \
+ .notes : AT(ADDR(.notes) - LOAD_OFFSET) { \
+ __start_notes = .; \
+ KEEP(*(.note.*)) \
--- /dev/null
+From stable-owner@vger.kernel.org Thu Mar 2 03:07:33 2023
+From: Tom Saeger <tom.saeger@oracle.com>
+Date: Wed, 1 Mar 2023 19:07:01 -0700
+Subject: powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Sasha Levin <sashal@kernel.org>, Tom Saeger <tom.saeger@oracle.com>, stable@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>
+Message-ID: <20230210-tsaeger-upstream-linux-stable-5-4-v3-3-122fc5440d4c@oracle.com>
+
+From: Michael Ellerman <mpe@ellerman.id.au>
+
+commit 4b9880dbf3bdba3a7c56445137c3d0e30aaa0a40 upstream.
+
+The powerpc linker script explicitly includes .exit.text, because
+otherwise the link fails due to references from __bug_table and
+__ex_table. The code is freed (discarded) at runtime along with
+.init.text and data.
+
+That has worked in the past despite powerpc not defining
+RUNTIME_DISCARD_EXIT because DISCARDS appears late in the powerpc linker
+script (line 410), and the explicit inclusion of .exit.text
+earlier (line 280) supersedes the discard.
+
+However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and
+riscv") introduced an earlier use of DISCARD as part of the RO_DATA
+macro (line 136). With binutils < 2.36 that causes the DISCARD
+directives later in the script to be applied earlier [1], causing
+.exit.text to actually be discarded at link time, leading to build
+errors:
+
+ '.exit.text' referenced in section '__bug_table' of crypto/algboss.o: defined in
+ discarded section '.exit.text' of crypto/algboss.o
+ '.exit.text' referenced in section '__ex_table' of drivers/nvdimm/core.o: defined in
+ discarded section '.exit.text' of drivers/nvdimm/core.o
+
+Fix it by defining RUNTIME_DISCARD_EXIT, which causes the generic
+DISCARDS macro to not include .exit.text at all.
+
+1: https://lore.kernel.org/lkml/87fscp2v7k.fsf@igel.home/
+
+Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Link: https://lore.kernel.org/r/20230105132349.384666-1-mpe@ellerman.id.au
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/kernel/vmlinux.lds.S | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/powerpc/kernel/vmlinux.lds.S
++++ b/arch/powerpc/kernel/vmlinux.lds.S
+@@ -6,6 +6,7 @@
+ #endif
+
+ #define BSS_FIRST_SECTIONS *(.bss.prominit)
++#define RUNTIME_DISCARD_EXIT
+
+ #include <asm/page.h>
+ #include <asm-generic/vmlinux.lds.h>
--- /dev/null
+From stable-owner@vger.kernel.org Thu Mar 2 03:07:36 2023
+From: Tom Saeger <tom.saeger@oracle.com>
+Date: Wed, 1 Mar 2023 19:07:02 -0700
+Subject: powerpc/vmlinux.lds: Don't discard .rela* for relocatable builds
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Sasha Levin <sashal@kernel.org>, Tom Saeger <tom.saeger@oracle.com>, stable@vger.kernel.org, Michael Ellerman <mpe@ellerman.id.au>
+Message-ID: <20230210-tsaeger-upstream-linux-stable-5-4-v3-4-122fc5440d4c@oracle.com>
+
+From: Michael Ellerman <mpe@ellerman.id.au>
+
+commit 07b050f9290ee012a407a0f64151db902a1520f5 upstream.
+
+Relocatable kernels must not discard relocations, they need to be
+processed at runtime. As such they are included for CONFIG_RELOCATABLE
+builds in the powerpc linker script (line 340).
+
+However they are also unconditionally discarded later in the
+script (line 414). Previously that worked because the earlier inclusion
+superseded the discard.
+
+However commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and
+riscv") introduced an earlier use of DISCARD as part of the RO_DATA
+macro (line 137). With binutils < 2.36 that causes the DISCARD
+directives later in the script to be applied earlier, causing .rela* to
+actually be discarded at link time, leading to build warnings and a
+kernel that doesn't boot:
+
+ ld: warning: discarding dynamic section .rela.init.rodata
+
+Fix it by conditionally discarding .rela* only when CONFIG_RELOCATABLE
+is disabled.
+
+Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+
+Link: https://lore.kernel.org/r/20230105132349.384666-2-mpe@ellerman.id.au
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/powerpc/kernel/vmlinux.lds.S | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/arch/powerpc/kernel/vmlinux.lds.S
++++ b/arch/powerpc/kernel/vmlinux.lds.S
+@@ -395,9 +395,12 @@ SECTIONS
+ DISCARDS
+ /DISCARD/ : {
+ *(*.EMB.apuinfo)
+- *(.glink .iplt .plt .rela* .comment)
++ *(.glink .iplt .plt .comment)
+ *(.gnu.version*)
+ *(.gnu.attributes)
+ *(.eh_frame)
++#ifndef CONFIG_RELOCATABLE
++ *(.rela*)
++#endif
+ }
+ }
--- /dev/null
+From stable-owner@vger.kernel.org Thu Mar 2 03:07:38 2023
+From: Tom Saeger <tom.saeger@oracle.com>
+Date: Wed, 1 Mar 2023 19:07:03 -0700
+Subject: s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Sasha Levin <sashal@kernel.org>, Tom Saeger <tom.saeger@oracle.com>, stable@vger.kernel.org, Masahiro Yamada <masahiroy@kernel.org>, Nathan Chancellor <nathan@kernel.org>, Heiko Carstens <hca@linux.ibm.com>
+Message-ID: <20230210-tsaeger-upstream-linux-stable-5-4-v3-5-122fc5440d4c@oracle.com>
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+commit a494398bde273143c2352dd373cad8211f7d94b2 upstream.
+
+Nathan Chancellor reports that the s390 vmlinux fails to link with
+GNU ld < 2.36 since commit 99cb0d917ffa ("arch: fix broken BuildID
+for arm64 and riscv").
+
+It happens for defconfig, or more specifically for CONFIG_EXPOLINE=y.
+
+ $ s390x-linux-gnu-ld --version | head -n1
+ GNU ld (GNU Binutils for Debian) 2.35.2
+ $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- allnoconfig
+ $ ./scripts/config -e CONFIG_EXPOLINE
+ $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- olddefconfig
+ $ make -s ARCH=s390 CROSS_COMPILE=s390x-linux-gnu-
+ `.exit.text' referenced in section `.s390_return_reg' of drivers/base/dd.o: defined in discarded section `.exit.text' of drivers/base/dd.o
+ make[1]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1
+ make: *** [Makefile:1252: vmlinux] Error 2
+
+arch/s390/kernel/vmlinux.lds.S wants to keep EXIT_TEXT:
+
+ .exit.text : {
+ EXIT_TEXT
+ }
+
+But, at the same time, EXIT_TEXT is thrown away by DISCARD because
+s390 does not define RUNTIME_DISCARD_EXIT.
+
+I still do not understand why the latter wins after 99cb0d917ffa,
+but defining RUNTIME_DISCARD_EXIT seems correct because the comment
+line in arch/s390/kernel/vmlinux.lds.S says:
+
+ /*
+ * .exit.text is discarded at runtime, not link time,
+ * to deal with references from __bug_table
+ */
+
+Nathan also found that binutils commit 21401fc7bf67 ("Duplicate output
+sections in scripts") cured this issue, so we cannot reproduce it with
+binutils 2.36+, but it is better to not rely on it.
+
+Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")
+Link: https://lore.kernel.org/all/Y7Jal56f6UBh1abE@dev-arch.thelio-3990X/
+Reported-by: Nathan Chancellor <nathan@kernel.org>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Link: https://lore.kernel.org/r/20230105031306.1455409-1-masahiroy@kernel.org
+Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/s390/kernel/vmlinux.lds.S | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/s390/kernel/vmlinux.lds.S
++++ b/arch/s390/kernel/vmlinux.lds.S
+@@ -15,6 +15,8 @@
+ /* Handle ro_after_init data on our own. */
+ #define RO_AFTER_INIT_DATA
+
++#define RUNTIME_DISCARD_EXIT
++
+ #include <asm-generic/vmlinux.lds.h>
+ #include <asm/vmlinux.lds.h>
+
ipmi-watchdog-replace-atomic_add-and-atomic_sub.patch
ipmi-watchdog-set-panic-count-to-proper-value-on-a-panic.patch
drm-i915-don-t-use-bar-mappings-for-ring-buffers-with-llc.patch
-skbuff-fix-nfct-leak-on-napi-stolen.patch
+x86-vmlinux.lds-add-runtime_discard_exit-to-generic-discards.patch
+arch-fix-broken-buildid-for-arm64-and-riscv.patch
+powerpc-vmlinux.lds-define-runtime_discard_exit.patch
+powerpc-vmlinux.lds-don-t-discard-.rela-for-relocatable-builds.patch
+s390-define-runtime_discard_exit-to-fix-link-error-with-gnu-ld-2.36.patch
+sh-define-runtime_discard_exit.patch
--- /dev/null
+From stable-owner@vger.kernel.org Thu Mar 2 03:08:24 2023
+From: Tom Saeger <tom.saeger@oracle.com>
+Date: Wed, 1 Mar 2023 19:07:04 -0700
+Subject: sh: define RUNTIME_DISCARD_EXIT
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Sasha Levin <sashal@kernel.org>, Tom Saeger <tom.saeger@oracle.com>, stable@vger.kernel.org, John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>, Ard Biesheuvel <ardb@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Christoph Hellwig <hch@lst.de>, Dennis Gilmore <dennis@ausil.us>, Masahiro Yamada <masahiroy@kernel.org>, Naresh Kamboju <naresh.kamboju@linaro.org>, Nathan Chancellor <nathan@kernel.org>, Palmer Dabbelt <palmer@rivosinc.com>, Rich Felker <dalias@libc.org>, Yoshinori Sato <ysato@users.sourceforge.jp>, Andrew Morton <akpm@linux-foundation.org>
+Message-ID: <20230210-tsaeger-upstream-linux-stable-5-4-v3-6-122fc5440d4c@oracle.com>
+
+From: Tom Saeger <tom.saeger@oracle.com>
+
+commit c1c551bebf928889e7a8fef7415b44f9a64975f4 upstream.
+
+sh vmlinux fails to link with GNU ld < 2.40 (likely < 2.36) since
+commit 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv").
+
+This is similar to fixes for powerpc and s390:
+commit 4b9880dbf3bd ("powerpc/vmlinux.lds: Define RUNTIME_DISCARD_EXIT").
+commit a494398bde27 ("s390: define RUNTIME_DISCARD_EXIT to fix link error
+with GNU ld < 2.36").
+
+ $ sh4-linux-gnu-ld --version | head -n1
+ GNU ld (GNU Binutils for Debian) 2.35.2
+
+ $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu- microdev_defconfig
+ $ make ARCH=sh CROSS_COMPILE=sh4-linux-gnu-
+
+ `.exit.text' referenced in section `__bug_table' of crypto/algboss.o:
+ defined in discarded section `.exit.text' of crypto/algboss.o
+ `.exit.text' referenced in section `__bug_table' of
+ drivers/char/hw_random/core.o: defined in discarded section
+ `.exit.text' of drivers/char/hw_random/core.o
+ make[2]: *** [scripts/Makefile.vmlinux:34: vmlinux] Error 1
+ make[1]: *** [Makefile:1252: vmlinux] Error 2
+
+arch/sh/kernel/vmlinux.lds.S keeps EXIT_TEXT:
+
+ /*
+ * .exit.text is discarded at runtime, not link time, to deal with
+ * references from __bug_table
+ */
+ .exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT }
+
+However, EXIT_TEXT is thrown away by
+DISCARD(include/asm-generic/vmlinux.lds.h) because
+sh does not define RUNTIME_DISCARD_EXIT.
+
+GNU ld 2.40 does not have this issue and builds fine.
+This corresponds with Masahiro's comments in a494398bde27:
+"Nathan [Chancellor] also found that binutils
+commit 21401fc7bf67 ("Duplicate output sections in scripts") cured this
+issue, so we cannot reproduce it with binutils 2.36+, but it is better
+to not rely on it."
+
+Link: https://lkml.kernel.org/r/9166a8abdc0f979e50377e61780a4bba1dfa2f52.1674518464.git.tom.saeger@oracle.com
+Fixes: 99cb0d917ffa ("arch: fix broken BuildID for arm64 and riscv")
+Link: https://lore.kernel.org/all/Y7Jal56f6UBh1abE@dev-arch.thelio-3990X/
+Link: https://lore.kernel.org/all/20230123194218.47ssfzhrpnv3xfez@oracle.com/
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+Cc: Ard Biesheuvel <ardb@kernel.org>
+Cc: Arnd Bergmann <arnd@arndb.de>
+Cc: Christoph Hellwig <hch@lst.de>
+Cc: Dennis Gilmore <dennis@ausil.us>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Masahiro Yamada <masahiroy@kernel.org>
+Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
+Cc: Nathan Chancellor <nathan@kernel.org>
+Cc: Palmer Dabbelt <palmer@rivosinc.com>
+Cc: Rich Felker <dalias@libc.org>
+Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/sh/kernel/vmlinux.lds.S | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/arch/sh/kernel/vmlinux.lds.S
++++ b/arch/sh/kernel/vmlinux.lds.S
+@@ -10,6 +10,7 @@ OUTPUT_ARCH(sh:sh5)
+ #define LOAD_OFFSET 0
+ OUTPUT_ARCH(sh)
+ #endif
++#define RUNTIME_DISCARD_EXIT
+
+ #include <asm/thread_info.h>
+ #include <asm/cache.h>
--- /dev/null
+From stable-owner@vger.kernel.org Thu Mar 2 03:07:26 2023
+From: Tom Saeger <tom.saeger@oracle.com>
+Date: Wed, 1 Mar 2023 19:06:59 -0700
+Subject: x86, vmlinux.lds: Add RUNTIME_DISCARD_EXIT to generic DISCARDS
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Sasha Levin <sashal@kernel.org>, Tom Saeger <tom.saeger@oracle.com>, stable@vger.kernel.org, "H.J. Lu" <hjl.tools@gmail.com>, Kees Cook <keescook@chromium.org>
+Message-ID: <20230210-tsaeger-upstream-linux-stable-5-4-v3-1-122fc5440d4c@oracle.com>
+
+From: "H.J. Lu" <hjl.tools@gmail.com>
+
+commit 84d5f77fc2ee4e010c2c037750e32f06e55224b0 upstream.
+
+In the x86 kernel, .exit.text and .exit.data sections are discarded at
+runtime, not by the linker. Add RUNTIME_DISCARD_EXIT to generic DISCARDS
+and define it in the x86 kernel linker script to keep them.
+
+The sections are added before the DISCARD directive so document here
+only the situation explicitly as this change doesn't have any effect on
+the generated kernel. Also, other architectures like ARM64 will use it
+too so generalize the approach with the RUNTIME_DISCARD_EXIT define.
+
+ [ bp: Massage and extend commit message. ]
+
+Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Reviewed-by: Kees Cook <keescook@chromium.org>
+Link: https://lkml.kernel.org/r/20200326193021.255002-1-hjl.tools@gmail.com
+Signed-off-by: Tom Saeger <tom.saeger@oracle.com>
+---
+ arch/x86/kernel/vmlinux.lds.S | 2 ++
+ include/asm-generic/vmlinux.lds.h | 11 +++++++++--
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/kernel/vmlinux.lds.S
++++ b/arch/x86/kernel/vmlinux.lds.S
+@@ -21,6 +21,8 @@
+ #define LOAD_OFFSET __START_KERNEL_map
+ #endif
+
++#define RUNTIME_DISCARD_EXIT
++
+ #include <asm-generic/vmlinux.lds.h>
+ #include <asm/asm-offsets.h>
+ #include <asm/thread_info.h>
+--- a/include/asm-generic/vmlinux.lds.h
++++ b/include/asm-generic/vmlinux.lds.h
+@@ -900,10 +900,17 @@
+ * section definitions so that such archs put those in earlier section
+ * definitions.
+ */
++#ifdef RUNTIME_DISCARD_EXIT
++#define EXIT_DISCARDS
++#else
++#define EXIT_DISCARDS \
++ EXIT_TEXT \
++ EXIT_DATA
++#endif
++
+ #define DISCARDS \
+ /DISCARD/ : { \
+- EXIT_TEXT \
+- EXIT_DATA \
++ EXIT_DISCARDS \
+ EXIT_CALL \
+ *(.discard) \
+ *(.discard.*) \