Module Name: src Committed By: matt Date: Sun Aug 5 01:43:59 UTC 2012
Modified Files: src/sys/arch/arm/arm: cpu_exec.c src/sys/kern: exec_elf.c src/sys/sys: exec.h exec_elf.h Log Message: back out elf note changes and use EF_ARM_ABIVERS to determine EABI usage. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/arm/cpu_exec.c cvs rdiff -u -r1.42 -r1.43 src/sys/kern/exec_elf.c cvs rdiff -u -r1.138 -r1.139 src/sys/sys/exec.h cvs rdiff -u -r1.125 -r1.126 src/sys/sys/exec_elf.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/arm/cpu_exec.c diff -u src/sys/arch/arm/arm/cpu_exec.c:1.1 src/sys/arch/arm/arm/cpu_exec.c:1.2 --- src/sys/arch/arm/arm/cpu_exec.c:1.1 Fri Aug 3 07:59:22 2012 +++ src/sys/arch/arm/arm/cpu_exec.c Sun Aug 5 01:43:59 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu_exec.c,v 1.1 2012/08/03 07:59:22 matt Exp $ */ +/* $NetBSD: cpu_exec.c,v 1.2 2012/08/05 01:43:59 matt Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cpu_exec.c,v 1.1 2012/08/03 07:59:22 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cpu_exec.c,v 1.2 2012/08/05 01:43:59 matt Exp $"); #include "opt_compat_netbsd.h" #include "opt_compat_netbsd32.h" @@ -55,7 +55,9 @@ arm_netbsd_elf32_probe(struct lwp *l, st char *itp, vaddr_t *start_p) { const char *itp_suffix = NULL; - const bool elf_aapcs_p = (epp->ep_flags & EXEC_ARM_AAPCS) != 0; + const Elf_Ehdr * const eh = eh0; + const bool elf_aapcs_p = + (eh->e_flags & EF_ARM_EABIMASK) >= EF_ARM_EABI_VER4; #ifdef COMPAT_NETBSD32 const bool netbsd32_p = (epp->ep_esch->es_emul == &emul_netbsd32); #else Index: src/sys/kern/exec_elf.c diff -u src/sys/kern/exec_elf.c:1.42 src/sys/kern/exec_elf.c:1.43 --- src/sys/kern/exec_elf.c:1.42 Fri Aug 3 07:54:14 2012 +++ src/sys/kern/exec_elf.c Sun Aug 5 01:43:58 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: exec_elf.c,v 1.42 2012/08/03 07:54:14 matt Exp $ */ +/* $NetBSD: exec_elf.c,v 1.43 2012/08/05 01:43:58 matt Exp $ */ /*- * Copyright (c) 1994, 2000, 2005 The NetBSD Foundation, Inc. @@ -57,7 +57,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: exec_elf.c,v 1.42 2012/08/03 07:54:14 matt Exp $"); +__KERNEL_RCSID(1, "$NetBSD: exec_elf.c,v 1.43 2012/08/05 01:43:58 matt Exp $"); #ifdef _KERNEL_OPT #include "opt_pax.h" @@ -948,23 +948,6 @@ bad: sizeof(epp->ep_pax_flags)); break; -#ifdef __arm__ - case ELF_NOTE_TYPE_ARMEABI_TAG: - if (np->n_namesz != ELF_NOTE_NETBSD_NAMESZ || - np->n_descsz != ELF_NOTE_ARMEABI_DESCSZ || - memcmp(ndata, ELF_NOTE_NETBSD_NAME, - ELF_NOTE_NETBSD_NAMESZ)) - goto bad; - { - int tmp = *(int *)(ndata + - roundup(ELF_NOTE_NETBSD_NAMESZ, - sizeof(int))); - if (tmp == ELF_NOTE_ARMEABI_AAPCS) - epp->ep_flags |= EXEC_ARM_AAPCS; - } - break; -#endif - case ELF_NOTE_TYPE_SUSE_VERSION_TAG: break; Index: src/sys/sys/exec.h diff -u src/sys/sys/exec.h:1.138 src/sys/sys/exec.h:1.139 --- src/sys/sys/exec.h:1.138 Fri Aug 3 07:54:14 2012 +++ src/sys/sys/exec.h Sun Aug 5 01:43:59 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: exec.h,v 1.138 2012/08/03 07:54:14 matt Exp $ */ +/* $NetBSD: exec.h,v 1.139 2012/08/05 01:43:59 matt Exp $ */ /*- * Copyright (c) 1992, 1993 @@ -225,8 +225,6 @@ struct exec_package { #define EXEC_32 0x0020 /* 32-bit binary emulation */ #define EXEC_FORCEAUX 0x0040 /* always use ELF AUX vector */ -#define EXEC_ARM_AAPCS 0x8000 /* ARM MD flag: uses AAPCS ABI */ - struct exec_vmcmd { int (*ev_proc)(struct lwp *, struct exec_vmcmd *); /* procedure to run for region of vmspace */ Index: src/sys/sys/exec_elf.h diff -u src/sys/sys/exec_elf.h:1.125 src/sys/sys/exec_elf.h:1.126 --- src/sys/sys/exec_elf.h:1.125 Sat Aug 4 09:24:19 2012 +++ src/sys/sys/exec_elf.h Sun Aug 5 01:43:59 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: exec_elf.h,v 1.125 2012/08/04 09:24:19 skrll Exp $ */ +/* $NetBSD: exec_elf.h,v 1.126 2012/08/05 01:43:59 matt Exp $ */ /*- * Copyright (c) 1994 The NetBSD Foundation, Inc. @@ -895,19 +895,6 @@ typedef struct { #define ELF_NOTE_PAX_DESCSZ 4 /* - * NetBSD-specific note type: aeabi. - * There should be 1 NOTE per executable. - * name: NetBSD\0 - * namesz: 6 - * desc: - * word[0]: ABI bitmask - * descsz: 4 - */ -#define ELF_NOTE_TYPE_ARMEABI_TAG 4 -#define ELF_NOTE_ARMEABI_DESCSZ 4 -#define ELF_NOTE_ARMEABI_AAPCS 0x01 - -/* * NetBSD-specific core file information. * * NetBSD ELF core files use notes to provide information about