summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gnu/usr.bin/binutils/libbfd/Makefile.arm24
1 files changed, 24 insertions, 0 deletions
diff --git a/gnu/usr.bin/binutils/libbfd/Makefile.arm b/gnu/usr.bin/binutils/libbfd/Makefile.arm
index 4178b29..cccec42 100644
--- a/gnu/usr.bin/binutils/libbfd/Makefile.arm
+++ b/gnu/usr.bin/binutils/libbfd/Makefile.arm
@@ -19,3 +19,27 @@ VECS+= bfd_elf32_littlearm_vec
.else
VECS+= bfd_elf32_bigarm_vec
.end
+
+CLEANFILES+= elf32-arm-fbsd.c
+
+# XXX: We should really add the FreeBSD case in elf32_arm_nabi_grok_prstatus
+# instead of defining our own elf32_fbsd_arm_grok_prstatus.
+#
+elf32-arm-fbsd.c: elfarm-nabi.c
+ cat ${.ALLSRC} | sed \
+ -e s/ELFOSABI_ARM/ELFOSABI_FREEBSD/g \
+ -e "s/\(.*#define.*\)elf32_arm_nabi_grok_prstatus/\1elf32_fbsd_arm_grok_prstatus/"
+ -e s/"#include.*elf32-arm.h.*//" >${.TARGET}
+ echo '\
+ static bfd_boolean \
+ elf32_fbsd_arm_grok_prstatus(bfd *abfd, Elf_Internal_Note *note) \
+ { size_t raw_size =68 ; int offset = 28; \
+ if (note->descsz != 96) return (FALSE); \
+ if (elf_tdata(abfd)->core_signal == 0) \
+ elf_tdata (abfd)->core_signal = ((int *)(note->descdata))[5]; \
+ elf_tdata (abfd)->core_pid = ((int *)(note->descdata))[6]; \
+ /* Make a ".reg/999" section. */ \
+ return _bfd_elfcore_make_pseudosection (abfd, ".reg",raw_size, \
+ note->descpos + offset); \
+ }' >> ${.TARGET}
+ echo '#include "elf32-arm.h"' >> ${.TARGET}
OpenPOWER on IntegriCloud