svn commit: r286030 - in head: gnu/usr.bin/binutils share/mk tools/build/mk tools/build/options usr.bin/elfcopy

Ed Maste emaste at FreeBSD.org
Wed Jul 29 18:45:41 UTC 2015


Author: emaste
Date: Wed Jul 29 18:45:38 2015
New Revision: 286030
URL: https://svnweb.freebsd.org/changeset/base/286030

Log:
  Allow ELF Tool Chain elfcopy to be installed as objcopy
  
  ELF Tool Chain elfcopy is nearly a drop-in replacement for GNU objcopy,
  but does not currently support PE output which is needed for building
  x86 UEFI bits.
  
  Add a src.conf knob to allow installing it as objcopy and set it by
  default for aarch64 only, where we don't have a native binutils.
  
  Reviewed by:	bapt
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D2887

Added:
  head/tools/build/options/WITHOUT_ELFCOPY_AS_OBJCOPY   (contents, props changed)
  head/tools/build/options/WITH_ELFCOPY_AS_OBJCOPY   (contents, props changed)
Modified:
  head/gnu/usr.bin/binutils/Makefile
  head/share/mk/src.opts.mk
  head/tools/build/mk/OptionalObsoleteFiles.inc
  head/usr.bin/elfcopy/Makefile

Modified: head/gnu/usr.bin/binutils/Makefile
==============================================================================
--- head/gnu/usr.bin/binutils/Makefile	Wed Jul 29 18:33:11 2015	(r286029)
+++ head/gnu/usr.bin/binutils/Makefile	Wed Jul 29 18:45:38 2015	(r286030)
@@ -11,7 +11,7 @@ SUBDIR=	doc\
 	as \
 	ld \
 	${_nm} \
-	objcopy \
+	${_objcopy} \
 	objdump \
 	${_readelf} \
 	${_size} \
@@ -26,5 +26,8 @@ _size=		size
 _strings=	strings
 _strip=		strip
 .endif
+.if ${MK_ELFTOOLCHAIN_TOOLS} == "no" || ${MK_ELFCOPY_AS_OBJCOPY} == "no"
+_objcopy=	objcopy
+.endif
 
 .include <bsd.subdir.mk>

Modified: head/share/mk/src.opts.mk
==============================================================================
--- head/share/mk/src.opts.mk	Wed Jul 29 18:33:11 2015	(r286029)
+++ head/share/mk/src.opts.mk	Wed Jul 29 18:45:38 2015	(r286030)
@@ -234,6 +234,9 @@ __DEFAULT_NO_OPTIONS+=CLANG CLANG_BOOTST
 .endif
 .if ${__T} == "aarch64"
 BROKEN_OPTIONS+=BINUTILS BINUTILS_BOOTSTRAP GCC GCC_BOOTSTRAP GDB
+__DEFAULT_YES_OPTIONS+=ELFCOPY_AS_OBJCOPY
+.else
+__DEFAULT_NO_OPTIONS+=ELFCOPY_AS_OBJCOPY
 .endif
 # LLVM lacks support for FreeBSD 64-bit atomic operations for ARMv4/ARMv5
 .if ${__T} == "arm" || ${__T} == "armeb"

Modified: head/tools/build/mk/OptionalObsoleteFiles.inc
==============================================================================
--- head/tools/build/mk/OptionalObsoleteFiles.inc	Wed Jul 29 18:33:11 2015	(r286029)
+++ head/tools/build/mk/OptionalObsoleteFiles.inc	Wed Jul 29 18:45:38 2015	(r286030)
@@ -184,7 +184,9 @@ OLD_DIRS+=usr/share/examples/bhyve
 .if ${MK_BINUTILS} == no
 OLD_FILES+=usr/bin/as
 OLD_FILES+=usr/bin/ld
+.if ${MK_ELFTOOLCHAIN_TOOLS} != no && ${MK_ELFCOPY_AS_OBJCOPY} == no
 OLD_FILES+=usr/bin/objcopy
+.endif
 OLD_FILES+=usr/bin/objdump
 OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.x
 OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xbn
@@ -201,7 +203,9 @@ OLD_FILES+=usr/libdata/ldscripts/elf_x86
 OLD_FILES+=usr/libdata/ldscripts/elf_x86_64_fbsd.xw
 OLD_FILES+=usr/share/man/man1/as.1.gz
 OLD_FILES+=usr/share/man/man1/ld.1.gz
+.if ${MK_ELFTOOLCHAIN_TOOLS} != no && ${MK_ELFCOPY_AS_OBJCOPY} == no
 OLD_FILES+=usr/share/man/man1/objcopy.1.gz
+.endif
 OLD_FILES+=usr/share/man/man1/objdump.1.gz
 OLD_FILES+=usr/share/man/man7/as.7.gz
 OLD_FILES+=usr/share/man/man7/ld.7.gz
@@ -1646,7 +1650,8 @@ OLD_FILES+=usr/share/nls/ru_RU.KOI8-R/ee
 OLD_FILES+=usr/share/nls/uk_UA.KOI8-U/ee.cat
 .endif
 
-.if ${MK_ELFTOOLCHAIN_TOOLS} == no
+.if ${MK_ELFTOOLCHAIN_TOOLS} == no || \
+    (${MK_ELFTOOLCHAIN_TOOLS} != no && MK_ELFCOPY_AS_OBJCOPY != no)
 OLD_FILES+=usr/bin/elfcopy
 OLD_FILES+=usr/share/man/man1/elfcopy.1.gz
 .endif

Added: head/tools/build/options/WITHOUT_ELFCOPY_AS_OBJCOPY
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/tools/build/options/WITHOUT_ELFCOPY_AS_OBJCOPY	Wed Jul 29 18:45:38 2015	(r286030)
@@ -0,0 +1,4 @@
+.\" $FreeBSD$
+Set to build and install
+.Xr objcopy 1
+from GNU Binutils, instead of the one from ELF Tool Chain.

Added: head/tools/build/options/WITH_ELFCOPY_AS_OBJCOPY
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/tools/build/options/WITH_ELFCOPY_AS_OBJCOPY	Wed Jul 29 18:45:38 2015	(r286030)
@@ -0,0 +1,4 @@
+.\" $FreeBSD$
+Set to build and install ELF Tool Chain's elfcopy as
+.Xr objcopy 1 ,
+instead of the one from GNU Binutils.

Modified: head/usr.bin/elfcopy/Makefile
==============================================================================
--- head/usr.bin/elfcopy/Makefile	Wed Jul 29 18:33:11 2015	(r286029)
+++ head/usr.bin/elfcopy/Makefile	Wed Jul 29 18:45:38 2015	(r286030)
@@ -7,7 +7,15 @@ ELFCOPYDIR=	${ELFTCDIR}/elfcopy
 
 .PATH: ${ELFCOPYDIR}
 
+.if ${MK_ELFCOPY_AS_OBJCOPY} != "no"
+PROG=	objcopy
+objcopy.1: elfcopy.1
+	sed -e 's/\.Dt ELFCOPY 1/.Dt OBJCOPY 1/' \
+	    -e 's/\.Nm elfcopy/.Nm objcopy/' < ${.ALLSRC} > ${.TARGET}
+CLEANFILES+= objcopy.1
+.else
 PROG=	elfcopy
+.endif
 
 SRCS=	archive.c ascii.c binary.c main.c sections.c segments.c symbols.c
 
@@ -17,8 +25,8 @@ LIBADD=	archive elftc elf
 
 CFLAGS+=-I${ELFTCDIR}/libelftc -I${ELFTCDIR}/common
 
-MAN=	elfcopy.1 strip.1
+MAN=	${PROG}.1 strip.1
 
-LINKS=	${BINDIR}/elfcopy ${BINDIR}/strip
+LINKS=	${BINDIR}/${PROG} ${BINDIR}/strip
 
 .include <bsd.prog.mk>


More information about the svn-src-head mailing list