1# $FreeBSD$
2
3.if defined(TARGET_BIG_ENDIAN)
4DEFAULT_VECTOR=	bfd_elf32_bigarm_vec
5.else
6DEFAULT_VECTOR=	bfd_elf32_littlearm_vec
7.endif
8
9SRCS+=	cpu-arm.c \
10	elf32.c \
11	elf32-arm-fbsd.c \
12	elf32-gen.c \
13	elf32-target.h \
14	elflink.c
15
16VECS+=	${DEFAULT_VECTOR}
17.if defined(TARGET_BIG_ENDIAN)
18VECS+=	bfd_elf32_littlearm_vec
19.else
20VECS+=	bfd_elf32_bigarm_vec
21.endif
22
23CLEANFILES+=	elf32-arm-fbsd.c
24
25# XXX: We should really add the FreeBSD case in elf32_arm_nabi_grok_prstatus
26# instead of defining our own elf32_fbsd_arm_grok_prstatus.
27#
28elf32-arm-fbsd.c: elfarm-nabi.c
29	cat ${.ALLSRC} | sed \
30	    -e s/ELFOSABI_ARM/ELFOSABI_FREEBSD/g \
31	    -e "s/\(.*#define.*\)elf32_arm_nabi_grok_prstatus/\1elf32_fbsd_arm_grok_prstatus/" \
32	    -e s/"#include.*elf32-arm.h.*//" >${.TARGET}
33	echo ' \
34	    static bfd_boolean \
35	    elf32_fbsd_arm_grok_prstatus(bfd *abfd, Elf_Internal_Note *note) \
36	    { size_t raw_size =68 ; int offset = 28; \
37	    if (note->descsz != 96) return (FALSE); \
38	    if (elf_tdata(abfd)->core_signal == 0) \
39		elf_tdata (abfd)->core_signal = ((int *)(note->descdata))[5]; \
40	    elf_tdata (abfd)->core_pid = ((int *)(note->descdata))[6]; \
41	    /* Make a ".reg/999" section.  */ \
42	    return _bfd_elfcore_make_pseudosection (abfd, ".reg",raw_size, \
43		note->descpos + offset); \
44	    }' >> ${.TARGET}
45	echo '#include "elf32-arm.h"' >> ${.TARGET}
46