aboutsummaryrefslogtreecommitdiff
path: root/gnu/usr.bin/binutils/libbfd/Makefile.arm
blob: 2d2c74eb760897660dfa04d9ce767ba00d10a64c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# $FreeBSD: src/gnu/usr.bin/binutils/libbfd/Makefile.arm,v 1.8.16.1 2010/12/21 17:10:29 kensmith Exp $

.if defined(TARGET_BIG_ENDIAN)
DEFAULT_VECTOR=	bfd_elf32_bigarm_vec
.else
DEFAULT_VECTOR=	bfd_elf32_littlearm_vec
.endif

SRCS+=	cpu-arm.c \
	elf32.c \
	elf32-arm-fbsd.c \
	elf32-gen.c \
	elf32-target.h \
	elflink.c

VECS+=	${DEFAULT_VECTOR}
.if defined(TARGET_BIG_ENDIAN)
VECS+=	bfd_elf32_littlearm_vec
.else
VECS+=	bfd_elf32_bigarm_vec
.endif

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}