This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Fix RISC-V vfork build with Linux 5.3 kernel headers
- From: Joseph Myers <joseph at codesourcery dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Tue, 17 Sep 2019 22:15:09 +0000
- Subject: Fix RISC-V vfork build with Linux 5.3 kernel headers
- Ironport-sdr: jflS1NYX41c2OrA3uRpa/YQQ3gKpeWC1SDJm1Q2Gdh/ldnf0QDVrOS3J48PvHa8X0b2MwzARaD dxNZX4EifgWgs3cG9XCrZqqcYuJjKrOS0mxQCHZ53j5+qg23bU69YjDvPPaOw+KYBTsoI6BLdQ WIXxPPRlQptz36DE1SgAzOrNtHg34L9QdumJJJDKrQG/5XWCXjR45Cd7DMxcjpkts86ULmJGBc LfxiLnAZQBR71RbFHBDpPuDcMnIDyEBcO0rKdo9SRxthWZ4t2STHj3RjVF2FxoeNGK5fvdSNKW 9UM=
- Ironport-sdr: 7laBVEcafPFGniK71zgQetLG78qHKVG1znhvYgUgE2lJU99EWeS4G655hMh8gnWtXTJFP8RnsD DY0um27hhZZ6P+BupENkW8Jea/kvbtWtCcRLHLStwNe3lRNUidnQ9PXb6HUqwk1Lh6Dvbz+czm EIa7Ne5uH/RL0/hMQRyHPAudA/p86LH8bwbeuFsErmI7yWJ/+g0rGWTCc0v1wi/aKXw732gabw Mrlh7/hqAhqpEuwFljBF8hcP8tde09bt00AVAfHxZ6Th114hkf7zeWqqTPegRy2r524kp4Toky D+k=
Building glibc for RISC-V with Linux 5.3 kernel headers fails because
<linux/sched.h>, included in vfork.S for CLONE_* constants, contains a
structure definition not safe for inclusion in assembly code.
All other architectures already avoid use of that header in vfork.S,
either defining the CLONE_* constants locally or embedding the
required values directly in the relevant instruction, where they
implement vfork using the clone syscall (see the implementations for
aarch64, ia64, mips and nios2). This patch makes the RISC-V version
define the constants locally like the other architectures.
Tested build for all three RISC-V configurations in
build-many-glibcs.py with Linux 5.3 headers.
2019-09-17 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/riscv/vfork.S: Do not include
<linux/sched.h>.
(CLONE_VM): New macro.
(CLONE_VFORK): Likewise.
diff --git a/sysdeps/unix/sysv/linux/riscv/vfork.S b/sysdeps/unix/sysv/linux/riscv/vfork.S
index e68dbc7d5d..062a562e72 100644
--- a/sysdeps/unix/sysv/linux/riscv/vfork.S
+++ b/sysdeps/unix/sysv/linux/riscv/vfork.S
@@ -21,9 +21,12 @@
#include <sys/asm.h>
#include <sysdep.h>
#define __ASSEMBLY__
-#include <linux/sched.h>
#include <asm/signal.h>
+#define CLONE_VM 0x00000100 /* Set if VM shared between processes. */
+#define CLONE_VFORK 0x00004000 /* Set if the parent wants the child to
+ wake it up on mm_release. */
+
.text
LEAF (__libc_vfork)
--
Joseph S. Myers
joseph@codesourcery.com