Module Name: src Committed By: ryo Date: Fri Nov 26 08:56:29 UTC 2021
Modified Files: src/sys/compat/linux/arch/aarch64: linux_exec.h src/sys/compat/linux/arch/amd64: linux_exec.h src/sys/compat/linux/arch/arm: linux_exec.h src/sys/compat/linux/arch/i386: linux_exec.h src/sys/compat/linux/arch/mips: linux_exec.h src/sys/compat/linux/arch/powerpc: linux_exec.h src/sys/compat/linux/common: linux_exec.h linux_exec_elf32.c src/sys/compat/linux32/arch/aarch64: linux32_exec.h src/sys/compat/linux32/arch/amd64: linux32_exec.h src/sys/compat/linux32/common: linux32_exec.h linux32_exec_elf32.c Log Message: - LINUX_GO_RT0_SIGNATURE for compat_linux is no longer enabled by default. it is now defined in each arch same as the other *_SIGNATURE definitions. - add new LINUX32_GO_RT0_SIGNATURE for compat_linux32, and is defined in amd64 and aarch64. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/compat/linux/arch/aarch64/linux_exec.h cvs rdiff -u -r1.5 -r1.6 src/sys/compat/linux/arch/amd64/linux_exec.h cvs rdiff -u -r1.10 -r1.11 src/sys/compat/linux/arch/arm/linux_exec.h cvs rdiff -u -r1.13 -r1.14 src/sys/compat/linux/arch/i386/linux_exec.h cvs rdiff -u -r1.16 -r1.17 src/sys/compat/linux/arch/mips/linux_exec.h cvs rdiff -u -r1.24 -r1.25 src/sys/compat/linux/arch/powerpc/linux_exec.h cvs rdiff -u -r1.54 -r1.55 src/sys/compat/linux/common/linux_exec.h cvs rdiff -u -r1.100 -r1.101 src/sys/compat/linux/common/linux_exec_elf32.c cvs rdiff -u -r1.1 -r1.2 src/sys/compat/linux32/arch/aarch64/linux32_exec.h cvs rdiff -u -r1.9 -r1.10 src/sys/compat/linux32/arch/amd64/linux32_exec.h cvs rdiff -u -r1.8 -r1.9 src/sys/compat/linux32/common/linux32_exec.h cvs rdiff -u -r1.22 -r1.23 src/sys/compat/linux32/common/linux32_exec_elf32.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/linux/arch/aarch64/linux_exec.h diff -u src/sys/compat/linux/arch/aarch64/linux_exec.h:1.1 src/sys/compat/linux/arch/aarch64/linux_exec.h:1.2 --- src/sys/compat/linux/arch/aarch64/linux_exec.h:1.1 Thu Sep 23 06:56:27 2021 +++ src/sys/compat/linux/arch/aarch64/linux_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec.h,v 1.1 2021/09/23 06:56:27 ryo Exp $ */ +/* $NetBSD: linux_exec.h,v 1.2 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 2021 The NetBSD Foundation, Inc. @@ -34,4 +34,6 @@ #define linux_exec_setup_stack exec_setup_stack +#define LINUX_GO_RT0_SIGNATURE + #endif /* !_AARCH64_LINUX_EXEC_H */ Index: src/sys/compat/linux/arch/amd64/linux_exec.h diff -u src/sys/compat/linux/arch/amd64/linux_exec.h:1.5 src/sys/compat/linux/arch/amd64/linux_exec.h:1.6 --- src/sys/compat/linux/arch/amd64/linux_exec.h:1.5 Mon Nov 18 01:32:22 2013 +++ src/sys/compat/linux/arch/amd64/linux_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec.h,v 1.5 2013/11/18 01:32:22 chs Exp $ */ +/* $NetBSD: linux_exec.h,v 1.6 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 2005 Emmanuel Dreyfus, all rights reserved. @@ -65,6 +65,7 @@ struct linux_extra_stack_data64 { #define LINUX_MACHDEP_ELF_COPYARGS #define LINUX_DEBUGLINK_SIGNATURE +#define LINUX_GO_RT0_SIGNATURE int linux_exec_setup_stack(struct lwp *, struct exec_package *); Index: src/sys/compat/linux/arch/arm/linux_exec.h diff -u src/sys/compat/linux/arch/arm/linux_exec.h:1.10 src/sys/compat/linux/arch/arm/linux_exec.h:1.11 --- src/sys/compat/linux/arch/arm/linux_exec.h:1.10 Sun Feb 12 21:02:19 2017 +++ src/sys/compat/linux/arch/arm/linux_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec.h,v 1.10 2017/02/12 21:02:19 chs Exp $ */ +/* $NetBSD: linux_exec.h,v 1.11 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -38,6 +38,8 @@ #define LINUX_ELF_AUX_ARGSIZ \ (LINUX_ELF_AUX_ENTRIES * sizeof(Aux32Info) + LINUX_RANDOM_BYTES) +#define LINUX_GO_RT0_SIGNATURE + #define linux_exec_setup_stack exec_setup_stack #endif /* !_I386_LINUX_EXEC_H */ Index: src/sys/compat/linux/arch/i386/linux_exec.h diff -u src/sys/compat/linux/arch/i386/linux_exec.h:1.13 src/sys/compat/linux/arch/i386/linux_exec.h:1.14 --- src/sys/compat/linux/arch/i386/linux_exec.h:1.13 Sun Feb 12 21:02:19 2017 +++ src/sys/compat/linux/arch/i386/linux_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec.h,v 1.13 2017/02/12 21:02:19 chs Exp $ */ +/* $NetBSD: linux_exec.h,v 1.14 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -40,6 +40,7 @@ (LINUX_ELF_AUX_ENTRIES * sizeof(Aux32Info) + LINUX_RANDOM_BYTES) #define LINUX_DEBUGLINK_SIGNATURE +#define LINUX_GO_RT0_SIGNATURE #ifdef _KERNEL int linux_exec_setup_stack(struct lwp *, struct exec_package *); Index: src/sys/compat/linux/arch/mips/linux_exec.h diff -u src/sys/compat/linux/arch/mips/linux_exec.h:1.16 src/sys/compat/linux/arch/mips/linux_exec.h:1.17 --- src/sys/compat/linux/arch/mips/linux_exec.h:1.16 Sun Feb 12 21:02:19 2017 +++ src/sys/compat/linux/arch/mips/linux_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec.h,v 1.16 2017/02/12 21:02:19 chs Exp $ */ +/* $NetBSD: linux_exec.h,v 1.17 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -57,6 +57,7 @@ #define LINUX_ATEXIT_SIGNATURE 1 #define LINUX_GCC_SIGNATURE 1 +#define LINUX_GO_RT0_SIGNATURE 1 #define LINUX_ELF_AUX_ARGSIZ \ (LINUX_ELF_AUX_ENTRIES * sizeof(Aux32Info) + LINUX_RANDOM_BYTES) Index: src/sys/compat/linux/arch/powerpc/linux_exec.h diff -u src/sys/compat/linux/arch/powerpc/linux_exec.h:1.24 src/sys/compat/linux/arch/powerpc/linux_exec.h:1.25 --- src/sys/compat/linux/arch/powerpc/linux_exec.h:1.24 Sun Feb 12 21:02:19 2017 +++ src/sys/compat/linux/arch/powerpc/linux_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec.h,v 1.24 2017/02/12 21:02:19 chs Exp $ */ +/* $NetBSD: linux_exec.h,v 1.25 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -57,6 +57,7 @@ */ #define LINUX_GCC_SIGNATURE 1 +#define LINUX_GO_RT0_SIGNATURE 1 /* * LINUX_ATEXIT_SIGNATURE enable the atexit_signature test. See * sys/compat/linux/common/linux_exec_elf32.c:linux_atexit_signature() Index: src/sys/compat/linux/common/linux_exec.h diff -u src/sys/compat/linux/common/linux_exec.h:1.54 src/sys/compat/linux/common/linux_exec.h:1.55 --- src/sys/compat/linux/common/linux_exec.h:1.54 Thu Sep 23 06:56:27 2021 +++ src/sys/compat/linux/common/linux_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec.h,v 1.54 2021/09/23 06:56:27 ryo Exp $ */ +/* $NetBSD: linux_exec.h,v 1.55 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 1995, 1998 The NetBSD Foundation, Inc. @@ -155,6 +155,10 @@ int linux_elf32_debuglink_signature(stru int linux_elf32_atexit_signature(struct lwp *l, struct exec_package *, Elf32_Ehdr *); #endif +#ifdef LINUX_GO_RT0_SIGNATURE +int linux_elf32_go_rt0_signature(struct lwp *l, + struct exec_package *, Elf32_Ehdr *); +#endif #endif #ifdef EXEC_ELF64 int linux_elf64_probe(struct lwp *, struct exec_package *, void *, @@ -175,6 +179,10 @@ int linux_elf64_debuglink_signature(stru int linux_elf64_atexit_signature(struct lwp *l, struct exec_package *, Elf64_Ehdr *); #endif +#ifdef LINUX_GO_RT0_SIGNATURE +int linux_elf64_go_rt0_signature(struct lwp *l, + struct exec_package *, Elf64_Ehdr *); +#endif #endif __END_DECLS #endif /* !_KERNEL */ Index: src/sys/compat/linux/common/linux_exec_elf32.c diff -u src/sys/compat/linux/common/linux_exec_elf32.c:1.100 src/sys/compat/linux/common/linux_exec_elf32.c:1.101 --- src/sys/compat/linux/common/linux_exec_elf32.c:1.100 Sun Jan 12 18:30:58 2020 +++ src/sys/compat/linux/common/linux_exec_elf32.c Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_exec_elf32.c,v 1.100 2020/01/12 18:30:58 ad Exp $ */ +/* $NetBSD: linux_exec_elf32.c,v 1.101 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 1995, 1998, 2000, 2001 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_exec_elf32.c,v 1.100 2020/01/12 18:30:58 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_exec_elf32.c,v 1.101 2021/11/26 08:56:28 ryo Exp $"); #ifndef ELFSIZE /* XXX should die */ @@ -74,8 +74,6 @@ __KERNEL_RCSID(0, "$NetBSD: linux_exec_e #include <compat/linux/linux_syscallargs.h> #include <compat/linux/linux_syscall.h> -#define LINUX_GO_RT0_SIGNATURE - #ifdef DEBUG_LINUX #define DPRINTF(a) uprintf a #else @@ -275,7 +273,7 @@ out: * Look for a .gopclntab, specific to go binaries * in it look for a symbol called _rt0_<cpu>_linux */ -static int +int ELFNAME2(linux,go_rt0_signature)(struct lwp *l, struct exec_package *epp, Elf_Ehdr *eh) { Elf_Shdr *sh; Index: src/sys/compat/linux32/arch/aarch64/linux32_exec.h diff -u src/sys/compat/linux32/arch/aarch64/linux32_exec.h:1.1 src/sys/compat/linux32/arch/aarch64/linux32_exec.h:1.2 --- src/sys/compat/linux32/arch/aarch64/linux32_exec.h:1.1 Thu Nov 25 03:08:04 2021 +++ src/sys/compat/linux32/arch/aarch64/linux32_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_exec.h,v 1.1 2021/11/25 03:08:04 ryo Exp $ */ +/* $NetBSD: linux32_exec.h,v 1.2 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 2021 The NetBSD Foundation, Inc. @@ -54,4 +54,6 @@ struct linux32_extra_stack_data { int linux32_exec_setup_stack(struct lwp *, struct exec_package *); +#define LINUX32_GO_RT0_SIGNATURE + #endif /* _AARCH64_LINUX32_EXEC_H_ */ Index: src/sys/compat/linux32/arch/amd64/linux32_exec.h diff -u src/sys/compat/linux32/arch/amd64/linux32_exec.h:1.9 src/sys/compat/linux32/arch/amd64/linux32_exec.h:1.10 --- src/sys/compat/linux32/arch/amd64/linux32_exec.h:1.9 Thu Nov 25 02:48:00 2021 +++ src/sys/compat/linux32/arch/amd64/linux32_exec.h Fri Nov 26 08:56:28 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_exec.h,v 1.9 2021/11/25 02:48:00 ryo Exp $ */ +/* $NetBSD: linux32_exec.h,v 1.10 2021/11/26 08:56:28 ryo Exp $ */ /*- * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved. @@ -40,6 +40,7 @@ #define LINUX32_USRSTACK 0xC0000000 #define LINUX32_DEBUGLINK_SIGNATURE 1 +#define LINUX32_GO_RT0_SIGNATURE 1 /* Counted from common/linux32_exec_elf32.c */ #define LINUX32_ELF_AUX_ENTRIES 20 Index: src/sys/compat/linux32/common/linux32_exec.h diff -u src/sys/compat/linux32/common/linux32_exec.h:1.8 src/sys/compat/linux32/common/linux32_exec.h:1.9 --- src/sys/compat/linux32/common/linux32_exec.h:1.8 Thu Nov 25 03:08:04 2021 +++ src/sys/compat/linux32/common/linux32_exec.h Fri Nov 26 08:56:29 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_exec.h,v 1.8 2021/11/25 03:08:04 ryo Exp $ */ +/* $NetBSD: linux32_exec.h,v 1.9 2021/11/26 08:56:29 ryo Exp $ */ /*- * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved. @@ -67,6 +67,10 @@ int linux_elf32_debuglink_signature(stru int linux_elf32_atexit_signature(struct lwp *l, struct exec_package *, Elf32_Ehdr *); #endif +#ifdef LINUX32_GO_RT0_SIGNATURE +int linux_elf32_go_rt0_signature(struct lwp *l, + struct exec_package *, Elf32_Ehdr *); +#endif #endif /* EXEC_ELF32 */ Index: src/sys/compat/linux32/common/linux32_exec_elf32.c diff -u src/sys/compat/linux32/common/linux32_exec_elf32.c:1.22 src/sys/compat/linux32/common/linux32_exec_elf32.c:1.23 --- src/sys/compat/linux32/common/linux32_exec_elf32.c:1.22 Thu Nov 25 03:08:04 2021 +++ src/sys/compat/linux32/common/linux32_exec_elf32.c Fri Nov 26 08:56:29 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_exec_elf32.c,v 1.22 2021/11/25 03:08:04 ryo Exp $ */ +/* $NetBSD: linux32_exec_elf32.c,v 1.23 2021/11/26 08:56:29 ryo Exp $ */ /*- * Copyright (c) 1995, 1998, 2000, 2001,2006 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux32_exec_elf32.c,v 1.22 2021/11/25 03:08:04 ryo Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux32_exec_elf32.c,v 1.23 2021/11/26 08:56:29 ryo Exp $"); #define ELFSIZE 32 @@ -83,6 +83,9 @@ ELFNAME2(linux32,probe)(struct lwp *l, s #ifdef LINUX32_DEBUGLINK_SIGNATURE ((error = ELFNAME2(linux,debuglink_signature)(l, epp, eh)) != 0) && #endif +#ifdef LINUX32_GO_RT0_SIGNATURE + ((error = ELFNAME2(linux,go_rt0_signature)(l, epp, eh)) != 0) && +#endif 1) return error;