On Tue, 10 Sep 2013 22:29:38 -0500
Nathan Whitehorn <nwhiteh...@freebsd.org> wrote:
> On 09/10/13 15:56, Baptiste Daroussin wrote:
> > Author: bapt
> > Date: Tue Sep 10 20:56:01 2013
> > New Revision: 255457
> > URL: http://svnweb.freebsd.org/changeset/base/255457
> >
> > Log:
> > Add support to detect arm vs armv6
> >
> > There are two different versions of the ARM ABI depending on the
> > TARGET_ARCH. As these are sligntly different a package built for
> > one may not work on another. We need to detect which one we are
> > on by parsing the .ARM.attributes section.
> >
> > This will only work on the ARM EABI as this section is part of
> > the ABI definition. As armv6 only supports the ARM EABI this is not
> > a problem for the oabi.
> >
> > Older versions of libelf in FreeBSD fail to read the
> > .ARM.attributes section needed. As armv6 is unsupported on these
> > versions we can assume we are running on arm.
> >
>
> Picking a random commit: I don't suppose we can just use MACHINE_ARCH
> for these identifiers? It encapsulates everything needed for
> compatibility. -Nathan
>
>
I have the attached patch to add a MACHINE_ARCH elf note. It would
remove the need to parse the .ARM.attributes section. NetBSD is doing
something similar to the patch where it appears they have
a .note.netbsd.march section.
Andrew
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
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"