Module Name: src
Committed By: matt
Date: Tue Sep 10 16:45:33 UTC 2013
Modified Files:
src/lib/csu: Makefile
src/lib/csu/arch/earm: Makefile.inc
src/lib/csu/common: Makefile.inc sysident.S sysident_assym.cf
Log Message:
Add support for a NetBSD MARCH elf note to record the MACHINE_ARCH for
which a program was compiled.
To generate a diff of this commit:
cvs rdiff -u -r1.32 -r1.33 src/lib/csu/Makefile
cvs rdiff -u -r1.2 -r1.3 src/lib/csu/arch/earm/Makefile.inc
cvs rdiff -u -r1.16 -r1.17 src/lib/csu/common/Makefile.inc
cvs rdiff -u -r1.1 -r1.2 src/lib/csu/common/sysident.S \
src/lib/csu/common/sysident_assym.cf
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/csu/Makefile
diff -u src/lib/csu/Makefile:1.32 src/lib/csu/Makefile:1.33
--- src/lib/csu/Makefile:1.32 Sun Apr 28 06:09:52 2013
+++ src/lib/csu/Makefile Tue Sep 10 16:45:33 2013
@@ -1,24 +1,21 @@
-# $NetBSD: Makefile,v 1.32 2013/04/28 06:09:52 matt Exp $
+# $NetBSD: Makefile,v 1.33 2013/09/10 16:45:33 matt Exp $
.include <bsd.own.mk>
.if ${USE_COMPILERCRTSTUFF} != "yes"
-.if defined(CSU_MACHINE_ARCH)
-. if !exists(${.CURDIR}/arch/${CSU_MACHINE_ARCH}/Makefile.inc)
-. error CSU_MACHINE_ARCH (${CSU_MACHINE_ARCH}) is unsupported
-. endif
-.elif !empty(MACHINE_ARCH:Mearm*)
-CSU_MACHINE_ARCH= earm
-.elif exists(${.CURDIR}/arch/${MACHINE_ARCH}/Makefile.inc)
-CSU_MACHINE_ARCH= ${MACHINE_ARCH}
+CSU_MACHINE_ARCH?= ${MACHINE_ARCH}
+
+.if !empty(CSU_MACHINE_ARCH:Mearm*)
+ARCHDIR:= ${.CURDIR}/arch/earm
+.elif exists(${.CURDIR}/arch/${CSU_MACHINE_ARCH}/Makefile.inc)
+ARCHDIR:= ${.CURDIR}/arch/${CSU_MACHINE_ARCH}
.elif exists(${.CURDIR}/arch/${MACHINE_CPU}/Makefile.inc)
-CSU_MACHINE_ARCH= ${MACHINE_CPU}
+ARCHDIR:= ${.CURDIR}/arch/${MACHINE_CPU}
.else
-.error Architecture (${MACHINE_ARCH} or ${MACHINE_CPU}) unsupported
+.error Architecture (${CSU_MACHINE_ARCH} or ${MACHINE_CPU}) unsupported
.endif
-ARCHDIR:= ${.CURDIR}/arch/${CSU_MACHINE_ARCH}
.PATH: ${ARCHDIR}
. include "${ARCHDIR}/Makefile.inc"
Index: src/lib/csu/arch/earm/Makefile.inc
diff -u src/lib/csu/arch/earm/Makefile.inc:1.2 src/lib/csu/arch/earm/Makefile.inc:1.3
--- src/lib/csu/arch/earm/Makefile.inc:1.2 Thu Jun 27 21:24:39 2013
+++ src/lib/csu/arch/earm/Makefile.inc Tue Sep 10 16:45:33 2013
@@ -1,5 +1,5 @@
-# $NetBSD: Makefile.inc,v 1.2 2013/06/27 21:24:39 matt Exp $
+# $NetBSD: Makefile.inc,v 1.3 2013/09/10 16:45:33 matt Exp $
CPPFLAGS+= -I${ARCHDIR}
CPPFLAGS+= -DHAVE_INITFINI_ARRAY
-
+CPPFLAGS+= -DELF_NOTE_MARCH_DESC=\"${CSU_MACHINE_ARCH}\"
Index: src/lib/csu/common/Makefile.inc
diff -u src/lib/csu/common/Makefile.inc:1.16 src/lib/csu/common/Makefile.inc:1.17
--- src/lib/csu/common/Makefile.inc:1.16 Mon Aug 5 13:38:35 2013
+++ src/lib/csu/common/Makefile.inc Tue Sep 10 16:45:33 2013
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.inc,v 1.16 2013/08/05 13:38:35 matt Exp $
+# $NetBSD: Makefile.inc,v 1.17 2013/09/10 16:45:33 matt Exp $
.include <bsd.own.mk>
@@ -94,6 +94,7 @@ crtfm.o: crtfm.c
rm -f ${.TARGET}.o
.endif
+GENASSYM_CONF= ${COMMON_DIR}/sysident_assym.cf
sysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS}
${_MKTARGET_CREATE}
cat ${COMMON_DIR}/sysident_assym.cf | \
@@ -103,7 +104,7 @@ sysident_assym.h: ${GENASSYM_CONF} ${GEN
CLEANFILES+= sysident_assym.h
-crti.o: crti.S sysident_assym.h
+crti.o: crti.S sysident_assym.h sysident.S
crtn.o: crtn.S
FILES=${OBJS}
Index: src/lib/csu/common/sysident.S
diff -u src/lib/csu/common/sysident.S:1.1 src/lib/csu/common/sysident.S:1.2
--- src/lib/csu/common/sysident.S:1.1 Sat Aug 7 18:01:33 2010
+++ src/lib/csu/common/sysident.S Tue Sep 10 16:45:33 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: sysident.S,v 1.1 2010/08/07 18:01:33 joerg Exp $ */
+/* $NetBSD: sysident.S,v 1.2 2013/09/10 16:45:33 matt Exp $ */
/*
* Copyright (c) 1997 Christopher G. Demetriou
@@ -59,7 +59,7 @@
#include "sysident_assym.h"
.section ".note.netbsd.ident", "a"
- .align 4
+ .p2align 2
.long ELF_NOTE_NETBSD_NAMESZ
.long ELF_NOTE_NETBSD_DESCSZ
@@ -68,10 +68,21 @@
.long __NetBSD_Version__
.section ".note.netbsd.pax", "a"
- .align 4
+ .p2align 2
.long ELF_NOTE_PAX_NAMESZ
.long ELF_NOTE_PAX_DESCSZ
.long ELF_NOTE_TYPE_PAX_TAG
.ascii "PaX\0" /* ELF_NOTE_PAX_NAME */
.long 0
+
+#ifdef ELF_NOTE_MARCH_DESC
+ .section ".note.netbsd.march", "a"
+ .p2align 2
+
+ .long ELF_NOTE_MARCH_NAMESZ
+ .long ELF_NOTE_MARCH_DESCSZ
+ .long ELF_NOTE_TYPE_MARCH_TAG
+ .ascii "NetBSD\0\0"
+ .asciz ELF_NOTE_MARCH_DESC
+#endif
Index: src/lib/csu/common/sysident_assym.cf
diff -u src/lib/csu/common/sysident_assym.cf:1.1 src/lib/csu/common/sysident_assym.cf:1.2
--- src/lib/csu/common/sysident_assym.cf:1.1 Sat Aug 7 18:01:33 2010
+++ src/lib/csu/common/sysident_assym.cf Tue Sep 10 16:45:33 2013
@@ -10,3 +10,9 @@ define ELF_NOTE_PAX_NAMESZ ELF_NOTE_PAX
define ELF_NOTE_PAX_DESCSZ ELF_NOTE_PAX_DESCSZ
define ELF_NOTE_TYPE_PAX_TAG ELF_NOTE_TYPE_PAX_TAG
#define ELF_NOTE_PAX_NAME ELF_NOTE_PAX_NAME
+
+define ELF_NOTE_MARCH_NAMESZ ELF_NOTE_MARCH_NAMESZ
+define ELF_NOTE_MARCH_DESCSZ sizeof(ELF_NOTE_MARCH_DESC)
+define ELF_NOTE_TYPE_MARCH_TAG ELF_NOTE_TYPE_MARCH_TAG
+#define ELF_NOTE_MARCH_NAME ELF_NOTE_MARCH_NAME
+#define ELF_NOTE_MARCH_DESC ELF_NOTE_MARCH_DESC