Message ID | alpine.DEB.2.21.1909172214410.3323@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
Series | Fix RISC-V vfork build with Linux 5.3 kernel headers | expand |
On Tue, Sep 17, 2019 at 3:15 PM Joseph Myers <joseph@codesourcery.com> wrote: > > 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. LGTM. I was confused why I haven't seen this, but I'm using the 5.2 headers which is why I haven't hit this. Alistair > > 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
On Tue, 17 Sep 2019 15:15:09 PDT (-0700), joseph@codesourcery.com wrote: > 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) Reviewed-by: Palmer Dabbelt <palmer@sifive.com> I'm assuming you're going to commit this. Thanks!
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)