mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-25 10:49:06 +08:00
71 lines
2.6 KiB
Diff
71 lines
2.6 KiB
Diff
From 6fba14e2ed9d159f76b23fa5c16f3ea99acbc003 Mon Sep 17 00:00:00 2001
|
|
From: Masahiro Yamada <masahiroy@kernel.org>
|
|
Date: Thu, 5 Jan 2023 12:13:06 +0900
|
|
Subject: [PATCH] s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU
|
|
ld < 2.36
|
|
|
|
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>
|
|
---
|
|
arch/s390/kernel/vmlinux.lds.S | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/arch/s390/kernel/vmlinux.lds.S b/arch/s390/kernel/vmlinux.lds.S
|
|
index 5ea3830af0cc..6e101e6f499d 100644
|
|
--- a/arch/s390/kernel/vmlinux.lds.S
|
|
+++ b/arch/s390/kernel/vmlinux.lds.S
|
|
@@ -17,6 +17,8 @@
|
|
/* Handle ro_after_init data on our own. */
|
|
#define RO_AFTER_INIT_DATA
|
|
|
|
+#define RUNTIME_DISCARD_EXIT
|
|
+
|
|
#define EMITS_PT_NOTE
|
|
|
|
#include <asm-generic/vmlinux.lds.h>
|
|
--
|
|
2.30.2
|
|
|