Skip to content

Commit

Permalink
Build infrastructure for elftoolchain tools
Browse files Browse the repository at this point in the history
Set WITH_ELFTOOLCHAIN_TOOLS in src.conf to use the elftoolchain version
of the following tools:

 * addr2line
 * elfcopy (strip / mcs)
 * nm
 * size
 * strings

Reviewed by:	bapt (earlier version)
Sponsored by:	The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D1224
  • Loading branch information
emaste committed Dec 1, 2014
1 parent 1941346 commit c79f653
Show file tree
Hide file tree
Showing 14 changed files with 188 additions and 6 deletions.
12 changes: 12 additions & 0 deletions Makefile.inc1
Original file line number Diff line number Diff line change
Expand Up @@ -1415,6 +1415,14 @@ _kgzip= usr.sbin/kgzip
# If we're given an XAS, don't build binutils.
.if ${XAS:M/*} == "" && ${MK_BINUTILS_BOOTSTRAP} != "no"
_binutils= gnu/usr.bin/binutils
.if ${MK_ELFTOOLCHAIN_TOOLS} != "no"
_elftctools= lib/libelftc \
usr.bin/addr2line \
usr.bin/elfcopy \
usr.bin/nm \
usr.bin/size \
usr.bin/strings
.endif
.endif

# If an full path to an external cross compiler is given, don't build
Expand All @@ -1434,6 +1442,7 @@ cross-tools: .MAKE
${_clang_libs} \
${_clang} \
${_binutils} \
${_elftctools} \
${_cc} \
usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \
${_btxld} \
Expand Down Expand Up @@ -1491,6 +1500,7 @@ native-xtools: .MAKE
${_clang_tblgen} \
usr.bin/ar \
${_binutils} \
${_elftctools} \
${_cc} \
${_gcc_tools} \
${_clang_libs} \
Expand Down Expand Up @@ -2045,6 +2055,7 @@ _xb-build-tools:
_xb-cross-tools:
.for _tool in \
${_binutils} \
${_elftctools} \
usr.bin/ar \
${_clang_libs} \
${_clang} \
Expand Down Expand Up @@ -2077,6 +2088,7 @@ _xi-cross-tools:
@echo "_xi-cross-tools"
.for _tool in \
${_binutils} \
${_elftctools} \
usr.bin/ar \
${_clang_libs} \
${_clang} \
Expand Down
20 changes: 15 additions & 5 deletions gnu/usr.bin/binutils/Makefile
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
# $FreeBSD$

.include <src.opts.mk>

SUBDIR= libiberty \
libbfd \
libopcodes \
libbinutils \
addr2line \
${_addr2line} \
as \
ld \
nm \
${_nm} \
objcopy \
objdump \
readelf \
size \
strings \
strip \
${_size} \
${_strings} \
${_strip} \
doc

.if ${MK_ELFTOOLCHAIN_TOOLS} == "no"
_addr2line= addr2line
_nm= nm
_size= size
_strings= strings
_strip= strip
.endif

.include <bsd.subdir.mk>
5 changes: 5 additions & 0 deletions lib/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ SUBDIR= ${SUBDIR_ORDERED} \
libdpv \
libdwarf \
libedit \
${_libelftc} \
${_libevent} \
libexecinfo \
libexpat \
Expand Down Expand Up @@ -190,6 +191,10 @@ _clang= clang
_cuse= libcuse
.endif

.if ${MK_ELFTOOLCHAIN_TOOLS} != "no"
_libelftc= libelftc
.endif

.if ${MK_GPIB} != "no"
_libgpib= libgpib
.endif
Expand Down
30 changes: 30 additions & 0 deletions lib/libelftc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# $FreeBSD$
.include <bsd.own.mk>

INTERNALLIB=

ELFTCDIR= ${.CURDIR}/../../contrib/elftoolchain

.PATH: ${ELFTCDIR}/libelftc

LIB= elftc

SRCS= elftc_bfdtarget.c \
elftc_copyfile.c \
elftc_demangle.c \
elftc_set_timestamps.c \
elftc_string_table.c \
elftc_version.c \
libelftc_bfdtarget.c \
libelftc_dem_arm.c \
libelftc_dem_gnu2.c \
libelftc_dem_gnu3.c \
libelftc_hash.c \
libelftc_vstr.c

INCS= libelftc.h
CFLAGS+=-I${ELFTCDIR}/libelftc -I${ELFTCDIR}/common

NO_MAN= yes

.include <bsd.lib.mk>
10 changes: 10 additions & 0 deletions lib/libelftc/elftc_version.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/* $FreeBSD$ */

#include <sys/types.h>
#include <libelftc.h>

const char *
elftc_version(void)
{
return "libelftc r2974";
}
5 changes: 5 additions & 0 deletions share/mk/src.libnames.mk
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ _INTERNALIBS= \
amu \
bsnmptools \
cron \
elftc \
event \
fifolog \
ipf \
Expand Down Expand Up @@ -286,6 +287,10 @@ LIBATF_CXX?= ${LIBATF_CXXDIR}/libatf-c++.a
LIBBSDSTATDIR= ${ROOTOBJDIR}/lib/libbsdstat
LIBBSDSTAT?= ${LIBBSDSTATDIR}/libbsdstat.a

LIBELFTCDIR= ${ROOTOBJDIR}/lib/libelftc
LDELFTC?= ${LIBELFTCDIR}/libelftc.a
LIBELFTC?= ${LIBELFTCDIR}/libelftc.a

LIBEVENTDIR= ${ROOTOBJDIR}/lib/libevent
LIBEVENT?= ${LIBEVENTDIR}/libevent.a

Expand Down
1 change: 1 addition & 0 deletions share/mk/src.opts.mk
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ __DEFAULT_NO_OPTIONS = \
BSD_GREP \
CLANG_EXTRAS \
EISA \
ELFTOOLCHAIN_TOOLS \
FMAKE \
HESIOD \
LLDB \
Expand Down
9 changes: 9 additions & 0 deletions tools/build/options/WITH_ELFTOOLCHAIN_TOOLS
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.\" $FreeBSD$
Set to use
.Xr addr2line 1 ,
.Xr nm 1 ,
.Xr size 1 ,
.Xr strings 1 ,
and
.Xr strip 1
from the elftoolchain project instead of GNU binutils.
15 changes: 14 additions & 1 deletion usr.bin/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
# Moved to secure: bdes
#

SUBDIR= alias \
SUBDIR= ${_addr2line} \
alias \
apply \
asa \
awk \
Expand Down Expand Up @@ -41,6 +42,7 @@ SUBDIR= alias \
du \
ee \
elf2aout \
${_elfcopy} \
elfdump \
enigma \
env \
Expand Down Expand Up @@ -119,6 +121,7 @@ SUBDIR= alias \
nfsstat \
nice \
nl \
${_nm} \
nohup \
opieinfo \
opiekey \
Expand Down Expand Up @@ -150,12 +153,14 @@ SUBDIR= alias \
seq \
shar \
showmount \
${_size} \
sockstat \
soeliminate \
sort \
split \
stat \
stdbuf \
${_strings} \
su \
systat \
tabs \
Expand Down Expand Up @@ -236,6 +241,14 @@ SUBDIR+= calendar
_clang= clang
.endif

.if ${MK_ELFTOOLCHAIN_TOOLS} != "no"
_addr2line= addr2line
_elfcopy= elfcopy
_nm= nm
_size= size
_strings= strings
.endif

.if ${MK_FMAKE} != "no"
SUBDIR+= make
.endif
Expand Down
16 changes: 16 additions & 0 deletions usr.bin/addr2line/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# $FreeBSD$

.include <src.opts.mk>

ELFTCDIR= ${.CURDIR}/../../contrib/elftoolchain
ADDR2LINEDIR= ${ELFTCDIR}/addr2line

.PATH: ${ADDR2LINEDIR}

PROG= addr2line

LIBADD= elftc dwarf elf

CFLAGS+=-I${ELFTCDIR}/libelftc -I${ELFTCDIR}/common

.include <bsd.prog.mk>
24 changes: 24 additions & 0 deletions usr.bin/elfcopy/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# $FreeBSD$

.include <src.opts.mk>

ELFTCDIR= ${.CURDIR}/../../contrib/elftoolchain
ELFCOPYDIR= ${ELFTCDIR}/elfcopy

.PATH: ${ELFCOPYDIR}

PROG= elfcopy

SRCS= archive.c ascii.c binary.c main.c sections.c segments.c symbols.c

WARNS?= 5

LIBADD= archive elftc elf

CFLAGS+=-I${ELFTCDIR}/libelftc -I${ELFTCDIR}/common

MAN= elfcopy.1 strip.1

LINKS= ${BINDIR}/elfcopy ${BINDIR}/strip

.include <bsd.prog.mk>
16 changes: 16 additions & 0 deletions usr.bin/nm/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# $FreeBSD$

.include <src.opts.mk>

ELFTCDIR= ${.CURDIR}/../../contrib/elftoolchain
NMDIR= ${ELFTCDIR}/nm

.PATH: ${NMDIR}

PROG= nm

LIBADD= dwarf elftc elf

CFLAGS+=-I${ELFTCDIR}/libelftc -I${ELFTCDIR}/common

.include <bsd.prog.mk>
16 changes: 16 additions & 0 deletions usr.bin/size/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# $FreeBSD$

.include <src.opts.mk>

ELFTCDIR= ${.CURDIR}/../../contrib/elftoolchain
SIZEDIR= ${ELFTCDIR}/size

.PATH: ${SIZEDIR}

PROG= size

LIBADD= elftc elf

CFLAGS+=-I${ELFTCDIR}/libelftc -I${ELFTCDIR}/common

.include <bsd.prog.mk>
15 changes: 15 additions & 0 deletions usr.bin/strings/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# $FreeBSD$

.include <src.opts.mk>

ELFTCDIR= ${.CURDIR}/../../contrib/elftoolchain

.PATH: ${ELFTCDIR}/strings

PROG= strings

LIBADD= elftc elf

CFLAGS+=-I${ELFTCDIR}/libelftc -I${ELFTCDIR}/common

.include <bsd.prog.mk>

0 comments on commit c79f653

Please sign in to comment.