Module Name:    src
Committed By:   ryo
Date:           Fri Nov 26 09:05:06 UTC 2021

Modified Files:
        src/sys/compat/linux/arch/aarch64: linux_exec.h
        src/sys/compat/linux/arch/arm: linux_exec.h
        src/sys/compat/linux/common: linux_exec_elf32.c

Log Message:
The internal architecture name of golang is "arm" or "arm64", which has
different naming conventions from netbsd's machine[] or machine_arch[]
("earmv7", "aarch64", etc.) and cannot be used as is.
Instead, use define LINUX_GO_RT0_SIGNATURE_ARCH{32,64}.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/compat/linux/arch/aarch64/linux_exec.h
cvs rdiff -u -r1.11 -r1.12 src/sys/compat/linux/arch/arm/linux_exec.h
cvs rdiff -u -r1.101 -r1.102 src/sys/compat/linux/common/linux_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.2 src/sys/compat/linux/arch/aarch64/linux_exec.h:1.3
--- src/sys/compat/linux/arch/aarch64/linux_exec.h:1.2	Fri Nov 26 08:56:28 2021
+++ src/sys/compat/linux/arch/aarch64/linux_exec.h	Fri Nov 26 09:05:05 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_exec.h,v 1.2 2021/11/26 08:56:28 ryo Exp $	*/
+/*	$NetBSD: linux_exec.h,v 1.3 2021/11/26 09:05:05 ryo Exp $	*/
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -35,5 +35,11 @@
 #define linux_exec_setup_stack	exec_setup_stack
 
 #define LINUX_GO_RT0_SIGNATURE
+/*
+ * linux/arm golang architecture name and netbsd machine_arch{,32}[] are
+ * different and cannot be used as is.
+ */
+#define LINUX_GO_RT0_SIGNATURE_ARCH32	"arm"
+#define LINUX_GO_RT0_SIGNATURE_ARCH64	"arm64"
 
 #endif /* !_AARCH64_LINUX_EXEC_H */

Index: src/sys/compat/linux/arch/arm/linux_exec.h
diff -u src/sys/compat/linux/arch/arm/linux_exec.h:1.11 src/sys/compat/linux/arch/arm/linux_exec.h:1.12
--- src/sys/compat/linux/arch/arm/linux_exec.h:1.11	Fri Nov 26 08:56:28 2021
+++ src/sys/compat/linux/arch/arm/linux_exec.h	Fri Nov 26 09:05:05 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_exec.h,v 1.11 2021/11/26 08:56:28 ryo Exp $	*/
+/*	$NetBSD: linux_exec.h,v 1.12 2021/11/26 09:05:05 ryo Exp $	*/
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -39,6 +39,11 @@
 	(LINUX_ELF_AUX_ENTRIES * sizeof(Aux32Info) + LINUX_RANDOM_BYTES)
 
 #define LINUX_GO_RT0_SIGNATURE
+/*
+ * linux/arm golang architecture name and netbsd machine_arch[] are
+ * different and cannot be used as is.
+ */
+#define LINUX_GO_RT0_SIGNATURE_ARCH32	"arm"
 
 #define linux_exec_setup_stack	exec_setup_stack
 

Index: src/sys/compat/linux/common/linux_exec_elf32.c
diff -u src/sys/compat/linux/common/linux_exec_elf32.c:1.101 src/sys/compat/linux/common/linux_exec_elf32.c:1.102
--- src/sys/compat/linux/common/linux_exec_elf32.c:1.101	Fri Nov 26 08:56:28 2021
+++ src/sys/compat/linux/common/linux_exec_elf32.c	Fri Nov 26 09:05:05 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: linux_exec_elf32.c,v 1.101 2021/11/26 08:56:28 ryo Exp $	*/
+/*	$NetBSD: linux_exec_elf32.c,v 1.102 2021/11/26 09:05:05 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.101 2021/11/26 08:56:28 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: linux_exec_elf32.c,v 1.102 2021/11/26 09:05:05 ryo Exp $");
 
 #ifndef ELFSIZE
 /* XXX should die */
@@ -337,11 +337,19 @@ ELFNAME2(linux,go_rt0_signature)(struct 
 		goto out;
 
 #if (ELFSIZE == 32)
+#ifdef LINUX_GO_RT0_SIGNATURE_ARCH32
+	m = LINUX_GO_RT0_SIGNATURE_ARCH32;
+#else
 	extern struct netbsd32_machine32_hook_t netbsd32_machine32_hook;
 	MODULE_HOOK_CALL(netbsd32_machine32_hook, (), machine, m);
+#endif
+#else /* (ELFSIZE == 32) */
+#ifdef LINUX_GO_RT0_SIGNATURE_ARCH64
+	m = LINUX_GO_RT0_SIGNATURE_ARCH64;
 #else
 	m = machine;
 #endif
+#endif /* (ELFSIZE == 32) */
 	mlen = snprintf(mbuf, sizeof(mbuf), "_rt0_%s_linux", m);
 	if (memmem(tmp, sh[i].sh_size, mbuf, mlen) == NULL)
 		error = ENOEXEC;

Reply via email to