Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Jul 2013 09:07:44 +0100
From:      Andrew Turner <andrew@fubar.geek.nz>
To:        freebsd-arch@freebsd.org
Subject:   Adding a MACHINE_ARCH note
Message-ID:  <20130709090744.0e497e7e@bender.Home>

next in thread | raw e-mail | index | archive | help
--MP_/cV0SucBe+552YM4Rrf/l/zD
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

I have been looking into an issue where it would be useful to know the
value of MACHINE_ARCH a binary was built with, for example on ARM it
could be arm or armv6 (or the big endian variants).

The reason for this is to teach pkg which arch the package is built for
as there are a few differences between arm and armv6 that mean
an executable built for one may not run on the other.

The attached patch stores the value of MACHINE_ARCH in a note so it can
be read later to get this value. Does anyone have any objections to
this patch, e.g. there is a better way of doing this?

Andrew

--MP_/cV0SucBe+552YM4Rrf/l/zD
Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=machine_arch_note.diff

Index: lib/csu/common/crtbrand.c
===================================================================
--- lib/csu/common/crtbrand.c	(revision 252514)
+++ lib/csu/common/crtbrand.c	(working copy)
@@ -64,3 +64,17 @@
 	.name = NOTE_FREEBSD_VENDOR,
 	.desc = __FreeBSD_version
 };
+
+static const struct {
+	int32_t	namesz;
+	int32_t	descsz;
+	int32_t	type;
+	char	name[sizeof(NOTE_FREEBSD_VENDOR)];
+	char	desc[sizeof(MACHINE_ARCH)];
+} archtag __attribute__ ((section (NOTE_SECTION), aligned(4))) __used = {
+	.namesz = sizeof(NOTE_FREEBSD_VENDOR),
+	.descsz = sizeof(MACHINE_ARCH),
+	.type = ARCH_NOTETYPE,
+	.name = NOTE_FREEBSD_VENDOR,
+	.desc = MACHINE_ARCH
+};
Index: lib/csu/common/notes.h
===================================================================
--- lib/csu/common/notes.h	(revision 252514)
+++ lib/csu/common/notes.h	(working copy)
@@ -34,5 +34,6 @@
 
 #define ABI_NOTETYPE		1
 #define	CRT_NOINIT_NOTETYPE	2
+#define	ARCH_NOTETYPE		3
 
 #endif

--MP_/cV0SucBe+552YM4Rrf/l/zD--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130709090744.0e497e7e>