diff options
author | Joseph Myers <joseph@codesourcery.com> | 2019-09-18 13:22:24 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2019-09-18 13:22:24 +0000 |
commit | 8cacbcf4a984ccac24efedb795d9c8a7f149d17b (patch) | |
tree | 36729a49ec4537d5bc07c926b27101703e068360 | |
parent | 2f9046fb059e94fe254c9a4ff5bcd52182069e44 (diff) | |
download | glibc-8cacbcf4a984ccac24efedb795d9c8a7f149d17b.tar.gz glibc-8cacbcf4a984ccac24efedb795d9c8a7f149d17b.tar.xz glibc-8cacbcf4a984ccac24efedb795d9c8a7f149d17b.zip |
Fix RISC-V vfork build with Linux 5.3 kernel headers.
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. * sysdeps/unix/sysv/linux/riscv/vfork.S: Do not include <linux/sched.h>. (CLONE_VM): New macro. (CLONE_VFORK): Likewise.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/riscv/vfork.S | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index adc93a794a..2258e1cbb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2019-09-18 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. + 2019-09-18 Stefan Liebler <stli@linux.ibm.com> * elf/tst-pldd.c (do_test): Add UNSUPPORTED check. 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) |