summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--contrib/binutils/binutils/readelf.c2
-rw-r--r--contrib/binutils/include/elf/common.h1
-rw-r--r--lib/csu/arm/crt1.c14
-rw-r--r--lib/csu/common/notes.h1
4 files changed, 18 insertions, 0 deletions
diff --git a/contrib/binutils/binutils/readelf.c b/contrib/binutils/binutils/readelf.c
index a4adb78..d2e2aef 100644
--- a/contrib/binutils/binutils/readelf.c
+++ b/contrib/binutils/binutils/readelf.c
@@ -9169,6 +9169,8 @@ get_freebsd_note_type (unsigned e_type)
return _("NT_FREEBSD_ABI_TAG");
case NT_FREEBSD_NOINIT_TAG:
return _("NT_FREEBSD_NOINIT_TAG");
+ case NT_FREEBSD_ARCH_TAG:
+ return _("NT_FREEBSD_ARCH_TAG");
default:
break;
}
diff --git a/contrib/binutils/include/elf/common.h b/contrib/binutils/include/elf/common.h
index 17ca0d5..d4d9d7b 100644
--- a/contrib/binutils/include/elf/common.h
+++ b/contrib/binutils/include/elf/common.h
@@ -456,6 +456,7 @@
#define NT_FREEBSD_TAG 1
#define NT_FREEBSD_NOINIT_TAG 2
+#define NT_FREEBSD_ARCH_TAG 3
/* These three macros disassemble and assemble a symbol table st_info field,
which contains the symbol binding and symbol type. The STB_ and STT_
diff --git a/lib/csu/arm/crt1.c b/lib/csu/arm/crt1.c
index e3529b8..d9f8a2d 100644
--- a/lib/csu/arm/crt1.c
+++ b/lib/csu/arm/crt1.c
@@ -115,6 +115,20 @@ __start(int argc, char **argv, char **env, struct ps_strings *ps_strings,
exit(main(argc, argv, env));
}
+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(int32_t),
+ .type = ARCH_NOTETYPE,
+ .name = NOTE_FREEBSD_VENDOR,
+ .desc = MACHINE_ARCH
+};
+
#ifdef GCRT
__asm__(".text");
__asm__("eprol:");
diff --git a/lib/csu/common/notes.h b/lib/csu/common/notes.h
index fcc2b66..b2c53bf 100644
--- a/lib/csu/common/notes.h
+++ b/lib/csu/common/notes.h
@@ -34,5 +34,6 @@
#define ABI_NOTETYPE 1
#define CRT_NOINIT_NOTETYPE 2
+#define ARCH_NOTETYPE 3
#endif
OpenPOWER on IntegriCloud