Bug 176406

Summary: [PATCH] devel/binutils: installs a file that conflict with devel/gnulibiberty
Product: Ports & Packages Reporter: Craig Leres <leres>
Component: Individual Port(s)Assignee: Niclas Zeising <zeising>
Status: Closed FIXED    
Severity: Affects Only Me CC: leres
Priority: Normal    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
patch.txt
none
ports.binutils.2.24.diff none

Description Craig Leres freebsd_committer freebsd_triage 2013-02-25 02:50:00 UTC
	The devel/binutils port includes a version of libiberty and
	installs /usr/local/lib/libiberty.a which conflicts with
	the devel/gnulibiberty port.

Fix: 

I believe the simplest fix is for devel/binutils to not
	install the libiberty files it builds with; patch attached.
How-To-Repeat: 	# Build/install both ports:
	cd /usr/ports/devel/gnulibiberty && make install
	cd /usr/ports/devel/binutils && make install

	# Then ask pkg_info who owns /usr/local/lib/libiberty.a:
	pkg_info -W /usr/local/lib/libiberty.a
	pkg_info: both binutils-2.23.1 and gnulibiberty-2.19.1_2 claim to have installed /usr/local/lib/libiberty.a

	/usr/local/lib/libiberty.a was installed by package binutils-2.23.1
Comment 1 Edwin Groothuis freebsd_committer freebsd_triage 2013-02-25 02:50:09 UTC
Responsible Changed
From-To: freebsd-ports-bugs->zeising

Over to maintainer (via the GNATS Auto Assign Tool)
Comment 2 Craig Leres freebsd_committer freebsd_triage 2013-02-25 03:52:18 UTC
(I really hate send-pr)
Comment 3 Niclas Zeising freebsd_committer freebsd_triage 2013-12-13 17:09:58 UTC
Sorry for taking so long to get to this.  Can you please test the
attached patch, which updates binutils to 2.24 and should fix this issue.
Regards!
-- 
Niclas Zeising
Comment 4 Craig Leres freebsd_committer freebsd_triage 2013-12-13 23:08:29 UTC
On 12/13/13 09:09, Niclas Zeising wrote:
> Sorry for taking so long to get to this.  Can you please test the
> attached patch, which updates binutils to 2.24 and should fix this issue.

It fails to build on my system:

    c++ -W -Wall    -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
-frandom-seed=dwp -O2 -pipe -I/usr/local/include -fno-strict-aliasing
-L/usr/local/lib -o dwp dwp.o libgold.a ../libiberty/libiberty.a
/usr/local/lib/libintl.so /usr/local/lib/libiconv.so -Wl,-rpath
-Wl,/usr/local/lib  "" -lz
    c++: : No such file or directory

Which is due to:

    --- gold/Makefile.in.orig   2013-11-04 07:33:39.000000000 -0800
    +++ gold/Makefile.in        2013-12-13 15:00:14.000000000 -0800
    @@ -419,7 +419,7 @@
            -DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@

     LIBIBERTY = ../libiberty/libiberty.a
    -@PLUGINS_TRUE@LIBDL = @DLOPEN_LIBS@
    +@PLUGINS_TRUE@LIBDL = ""
     @THREADS_TRUE@THREADSLIB = -lpthread
     AM_YFLAGS = -d

It builds ok if I edit gold/Makefile and remove the "" from the end of
that line.

		Craig
Comment 5 Niclas Zeising freebsd_committer freebsd_triage 2013-12-13 23:11:26 UTC
On 12/14/13 00:08, Craig Leres wrote:
> On 12/13/13 09:09, Niclas Zeising wrote:
>> Sorry for taking so long to get to this.  Can you please test the
>> attached patch, which updates binutils to 2.24 and should fix this issue.
> 
> It fails to build on my system:
> 
>     c++ -W -Wall    -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
> -frandom-seed=dwp -O2 -pipe -I/usr/local/include -fno-strict-aliasing
> -L/usr/local/lib -o dwp dwp.o libgold.a ../libiberty/libiberty.a
> /usr/local/lib/libintl.so /usr/local/lib/libiconv.so -Wl,-rpath
> -Wl,/usr/local/lib  "" -lz
>     c++: : No such file or directory
> 
> Which is due to:
> 
>     --- gold/Makefile.in.orig   2013-11-04 07:33:39.000000000 -0800
>     +++ gold/Makefile.in        2013-12-13 15:00:14.000000000 -0800
>     @@ -419,7 +419,7 @@
>             -DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@
> 
>      LIBIBERTY = ../libiberty/libiberty.a
>     -@PLUGINS_TRUE@LIBDL = @DLOPEN_LIBS@
>     +@PLUGINS_TRUE@LIBDL = ""
>      @THREADS_TRUE@THREADSLIB = -lpthread
>      AM_YFLAGS = -d
> 
> It builds ok if I edit gold/Makefile and remove the "" from the end of
> that line.
> 

Strange, that line worked for me.  Anyway, I will fix this before
comitting.  Does it work in connection with gnulibiberty?
Regards!
-- 
Niclas Zeising
Comment 6 Craig Leres freebsd_committer freebsd_triage 2013-12-13 23:20:17 UTC
On 12/13/13 15:11, Niclas Zeising wrote:
> Strange, that line worked for me.  Anyway, I will fix this before
> comitting.  Does it work in connection with gnulibiberty?

Yes!

		Craig
Comment 7 dfilter service freebsd_committer freebsd_triage 2013-12-16 14:52:36 UTC
Author: zeising
Date: Mon Dec 16 14:52:26 2013
New Revision: 336642
URL: http://svnweb.freebsd.org/changeset/ports/336642

Log:
  Update to 2.24
  
  Do not install libiberty.a to aviod conflicts with devel/gnulibiberty [0]
  Do not install include/ansidecl.h, to avoid conflicts with gcc49 [1]
  Fix gold usage when linking c++ code, related to ctors [2]
  
  Thanks to dim for help with getting gold to build with libc++!
  
  PR:		ports/176406 [0], ports/184327 [1]
  Submitted by:	Craig Leres <leres@ee.lbl.gov> [0]
  		Gerald Pfeifer <gerald@pfeifer.com> [1]
  Requested by:	rdivacky [2]

Added:
  head/devel/binutils/files/patch-gold_config.in   (contents, props changed)
  head/devel/binutils/files/patch-gold_configure   (contents, props changed)
  head/devel/binutils/files/patch-gold_options.h   (contents, props changed)
  head/devel/binutils/files/patch-gold_stringpool.cc   (contents, props changed)
  head/devel/binutils/files/patch-gold_system.h   (contents, props changed)
Deleted:
  head/devel/binutils/files/patch-bfd_Makefile.in
  head/devel/binutils/files/patch-gold_gold.h
  head/devel/binutils/files/patch-src_gas_config_tc-sparc.h
Modified:
  head/devel/binutils/Makefile
  head/devel/binutils/distinfo
  head/devel/binutils/files/patch-gold_Makefile.in   (contents, props changed)
  head/devel/binutils/files/patch-gold_script.cc   (contents, props changed)
  head/devel/binutils/pkg-plist

Modified: head/devel/binutils/Makefile
==============================================================================
--- head/devel/binutils/Makefile	Mon Dec 16 14:45:39 2013	(r336641)
+++ head/devel/binutils/Makefile	Mon Dec 16 14:52:26 2013	(r336642)
@@ -2,7 +2,7 @@
 # $FreeBSD$
 
 PORTNAME=	binutils
-PORTVERSION=	2.23.2
+PORTVERSION=	2.24
 CATEGORIES=	devel
 MASTER_SITES=	${MASTER_SITE_SOURCEWARE}
 MASTER_SITE_SUBDIR=	binutils/releases
@@ -36,26 +36,6 @@ CONFIGURE_ARGS+=	--with-system-zlib \
 			--with-gmp=${LOCALBASE} \
 			--with-mpfr=${LOCALBASE}
 
-MAN1=		addr2line.1 \
-		ar.1 \
-		as.1 \
-		c++filt.1 \
-		gprof.1 \
-		dlltool.1 \
-		elfedit.1 \
-		ld.1 \
-		nlmconv.1 \
-		nm.1 \
-		objcopy.1 \
-		objdump.1 \
-		ranlib.1 \
-		readelf.1 \
-		size.1 \
-		strings.1 \
-		strip.1 \
-		windmc.1 \
-		windres.1
-
 INFO=		as \
 		binutils \
 		standards \
@@ -64,7 +44,6 @@ INFO=		as \
 		configure \
 		ld
 
-NO_STAGE=	yes
 .include <bsd.port.options.mk>
 
 # Actual earliest version may differ slightly
@@ -91,11 +70,11 @@ CONFIGURE_TARGET=	${ARCH}-portbld-freebs
 
 post-install:
 .if ${OSVERSION} >= 900044
-	${INSTALL_DATA} ${WRKSRC}/include/plugin-api.h ${PREFIX}/include/
+	${INSTALL_DATA} ${WRKSRC}/include/plugin-api.h ${STAGEDIR}${PREFIX}/include/
 .endif
-	@${FIND} -ds ${PREFIX}/${CONFIGURE_TARGET} ! -type d | \
-		${SED} -e 's,^${PREFIX}/,,' >> ${TMPPLIST}
-	@${FIND} -ds ${PREFIX}/${CONFIGURE_TARGET} -type d | \
-		${SED} -e 's,^${PREFIX}/,@dirrm ,' >> ${TMPPLIST}
+	@${FIND} -ds ${STAGEDIR}${PREFIX}/${CONFIGURE_TARGET} ! -type d | \
+		${SED} -e 's,^${STAGEDIR}${PREFIX}/,,' >> ${TMPPLIST}
+	@${FIND} -ds ${STAGEDIR}${PREFIX}/${CONFIGURE_TARGET} -type d | \
+		${SED} -e 's,^${STAGEDIR}${PREFIX}/,@dirrm ,' >> ${TMPPLIST}
 
 .include <bsd.port.mk>

Modified: head/devel/binutils/distinfo
==============================================================================
--- head/devel/binutils/distinfo	Mon Dec 16 14:45:39 2013	(r336641)
+++ head/devel/binutils/distinfo	Mon Dec 16 14:52:26 2013	(r336642)
@@ -1,2 +1,2 @@
-SHA256 (binutils-2.23.2.tar.bz2) = fe914e56fed7a9ec2eb45274b1f2e14b0d8b4f41906a5194eac6883cfe5c1097
-SIZE (binutils-2.23.2.tar.bz2) = 21440347
+SHA256 (binutils-2.24.tar.bz2) = e5e8c5be9664e7f7f96e0d09919110ab5ad597794f5b1809871177a0f0f14137
+SIZE (binutils-2.24.tar.bz2) = 22716802

Modified: head/devel/binutils/files/patch-gold_Makefile.in
==============================================================================
--- head/devel/binutils/files/patch-gold_Makefile.in	Mon Dec 16 14:45:39 2013	(r336641)
+++ head/devel/binutils/files/patch-gold_Makefile.in	Mon Dec 16 14:52:26 2013	(r336642)
@@ -1,12 +1,11 @@
-
-$FreeBSD$
-
---- gold/Makefile.in.orig
-+++ gold/Makefile.in
-@@ -368,7 +368,6 @@
- 	@INCINTL@
+--- gold/Makefile.in.orig	2013-11-04 16:33:39.000000000 +0100
++++ gold/Makefile.in	2013-12-13 17:15:03.279391312 +0100
+@@ -419,7 +419,7 @@
+ 	-DTOOLLIBDIR="\"$(tooldir)/lib\"" @INCINTL@
  
  LIBIBERTY = ../libiberty/libiberty.a
--@PLUGINS_TRUE@LIBDL = -ldl
+-@PLUGINS_TRUE@LIBDL = @DLOPEN_LIBS@
++@PLUGINS_TRUE@LIBDL = 
  @THREADS_TRUE@THREADSLIB = -lpthread
  AM_YFLAGS = -d
+ 

Added: head/devel/binutils/files/patch-gold_config.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/binutils/files/patch-gold_config.in	Mon Dec 16 14:52:26 2013	(r336642)
@@ -0,0 +1,15 @@
+--- gold/config.in.orig	2012-09-11 11:20:40.000000000 +0200
++++ gold/config.in	2013-06-22 20:44:46.000000000 +0200
+@@ -190,6 +190,12 @@
+ /* Define to 1 if you have the <windows.h> header file. */
+ #undef HAVE_WINDOWS_H
+ 
++/* Define to 1 if you have the <unordered_map> header file. */
++#undef HAVE_UNORDERED_MAP
++
++/* Define to 1 if you have the <unordered_set> header file. */
++#undef HAVE_UNORDERED_SET
++
+ /* Define to 1 if you have the <zlib.h> header file. */
+ #undef HAVE_ZLIB_H
+ 

Added: head/devel/binutils/files/patch-gold_configure
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/binutils/files/patch-gold_configure	Mon Dec 16 14:52:26 2013	(r336642)
@@ -0,0 +1,23 @@
+--- gold/configure.orig	2013-11-08 11:13:48.000000000 +0100
++++ gold/configure	2013-12-14 13:03:48.000000000 +0100
+@@ -7133,6 +7133,20 @@
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ 
+ 
++for ac_header in unordered_set unordered_map
++do :
++  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
++ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
++eval as_val=\$$as_ac_Header
++   if test "x$as_val" = x""yes; then :
++  cat >>confdefs.h <<_ACEOF
++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
+ for ac_header in tr1/unordered_set tr1/unordered_map
+ do :
+   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`

Added: head/devel/binutils/files/patch-gold_options.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/binutils/files/patch-gold_options.h	Mon Dec 16 14:52:26 2013	(r336642)
@@ -0,0 +1,15 @@
+--- gold/options.h.orig	2013-12-13 18:39:11.252052912 +0100
++++ gold/options.h	2013-12-13 18:41:04.363051429 +0100
+@@ -716,9 +716,9 @@
+ 	      N_("Output cross reference table"),
+ 	      N_("Do not output cross reference table"));
+ 
+-  DEFINE_bool(ctors_in_init_array, options::TWO_DASHES, '\0', true,
+-	      N_("Use DT_INIT_ARRAY for all constructors (default)"),
+-	      N_("Handle constructors as directed by compiler"));
++  DEFINE_bool(ctors_in_init_array, options::TWO_DASHES, '\0', false,
++	      N_("Use DT_INIT_ARRAY for all constructors"),
++	      N_("Handle constructors as directed by compiler (default)"));
+ 
+   DEFINE_bool(define_common, options::TWO_DASHES, 'd', false,
+ 	      N_("Define common symbols"),

Modified: head/devel/binutils/files/patch-gold_script.cc
==============================================================================
--- head/devel/binutils/files/patch-gold_script.cc	Mon Dec 16 14:45:39 2013	(r336641)
+++ head/devel/binutils/files/patch-gold_script.cc	Mon Dec 16 14:52:26 2013	(r336642)
@@ -1,6 +1,3 @@
-
-$FreeBSD$
-
 --- gold/script.cc.dist	2012-09-01 19:52:34.000000000 -0500
 +++ gold/script.cc	2012-09-01 19:53:22.000000000 -0500
 @@ -2534,8 +2534,6 @@

Added: head/devel/binutils/files/patch-gold_stringpool.cc
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/binutils/files/patch-gold_stringpool.cc	Mon Dec 16 14:52:26 2013	(r336642)
@@ -0,0 +1,23 @@
+--- gold/stringpool.cc.orig	2010-08-25 10:36:54.000000000 +0200
++++ gold/stringpool.cc	2013-06-22 21:09:24.000000000 +0200
+@@ -73,7 +73,10 @@ Stringpool_template<Stringpool_char>::re
+ {
+   this->key_to_offset_.reserve(n);
+ 
+-#if defined(HAVE_TR1_UNORDERED_MAP)
++#if defined(HAVE_UNORDERED_MAP)
++  this->string_set_.rehash(this->string_set_.size() + n);
++  return;
++#elif defined(HAVE_TR1_UNORDERED_MAP)
+   // rehash() implementation is broken in gcc 4.0.3's stl
+   //this->string_set_.rehash(this->string_set_.size() + n);
+   //return;
+@@ -503,7 +506,7 @@ template<typename Stringpool_char>
+ void
+ Stringpool_template<Stringpool_char>::print_stats(const char* name) const
+ {
+-#if defined(HAVE_TR1_UNORDERED_MAP) || defined(HAVE_EXT_HASH_MAP)
++#if defined(HAVE_UNORDERED_MAP) || defined(HAVE_TR1_UNORDERED_MAP) || defined(HAVE_EXT_HASH_MAP)
+   fprintf(stderr, _("%s: %s entries: %zu; buckets: %zu\n"),
+ 	  program_name, name, this->string_set_.size(),
+ 	  this->string_set_.bucket_count());

Added: head/devel/binutils/files/patch-gold_system.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/binutils/files/patch-gold_system.h	Mon Dec 16 14:52:26 2013	(r336642)
@@ -0,0 +1,24 @@
+--- gold/system.h.orig	2013-11-04 16:33:39.000000000 +0100
++++ gold/system.h	2013-12-14 12:51:17.000000000 +0100
+@@ -57,7 +57,20 @@
+ 
+ // Figure out how to get a hash set and a hash map.
+ 
+-#if defined(HAVE_TR1_UNORDERED_SET) && defined(HAVE_TR1_UNORDERED_MAP) \
++#if defined(HAVE_UNORDERED_SET) && defined(HAVE_UNORDERED_MAP)
++
++#include <unordered_set>
++#include <unordered_map>
++
++// We need a template typedef here.
++
++#define Unordered_set std::unordered_set
++#define Unordered_map std::unordered_map
++#define Unordered_multimap std::unordered_multimap
++
++#define reserve_unordered_map(map, n) ((map)->rehash(n))
++
++#elif defined(HAVE_TR1_UNORDERED_SET) && defined(HAVE_TR1_UNORDERED_MAP) \
+     && defined(HAVE_TR1_UNORDERED_MAP_REHASH)
+ 
+ #include <tr1/unordered_set>

Modified: head/devel/binutils/pkg-plist
==============================================================================
--- head/devel/binutils/pkg-plist	Mon Dec 16 14:45:39 2013	(r336641)
+++ head/devel/binutils/pkg-plist	Mon Dec 16 14:52:26 2013	(r336642)
@@ -2,6 +2,7 @@ bin/addr2line
 bin/ar
 bin/as
 bin/c++filt
+%%GOLD%%bin/dwp
 bin/elfedit
 bin/gprof
 bin/ld
@@ -15,7 +16,6 @@ bin/readelf
 bin/size
 bin/strings
 bin/strip
-include/ansidecl.h
 include/bfd.h
 include/bfdlink.h
 include/dis-asm.h
@@ -23,9 +23,27 @@ include/dis-asm.h
 include/symcat.h
 lib/libbfd.a
 lib/libbfd.la
-lib/libiberty.a
 lib/libopcodes.a
 lib/libopcodes.la
+man/man1/addr2line.1.gz
+man/man1/ar.1.gz
+man/man1/as.1.gz
+man/man1/c++filt.1.gz
+man/man1/gprof.1.gz
+man/man1/dlltool.1.gz
+man/man1/elfedit.1.gz
+man/man1/ld.1.gz
+man/man1/nlmconv.1.gz
+man/man1/nm.1.gz
+man/man1/objcopy.1.gz
+man/man1/objdump.1.gz
+man/man1/ranlib.1.gz
+man/man1/readelf.1.gz
+man/man1/size.1.gz
+man/man1/strings.1.gz
+man/man1/strip.1.gz
+man/man1/windmc.1.gz
+man/man1/windres.1.gz
 %%NLS%%share/locale/bg/LC_MESSAGES/binutils.mo
 %%NLS%%share/locale/bg/LC_MESSAGES/gprof.mo
 %%NLS%%share/locale/bg/LC_MESSAGES/ld.mo
@@ -60,6 +78,7 @@ lib/libopcodes.la
 %%NLS%%share/locale/ga/LC_MESSAGES/gprof.mo
 %%NLS%%share/locale/ga/LC_MESSAGES/ld.mo
 %%NLS%%share/locale/ga/LC_MESSAGES/opcodes.mo
+%%NLS%%share/locale/hr/LC_MESSAGES/binutils.mo
 %%NLS%%share/locale/id/LC_MESSAGES/gprof.mo
 %%NLS%%share/locale/id/LC_MESSAGES/opcodes.mo
 %%NLS%%share/locale/id/LC_MESSAGES/bfd.mo
_______________________________________________
svn-ports-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-ports-all
To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"
Comment 8 Niclas Zeising freebsd_committer freebsd_triage 2013-12-16 14:53:44 UTC
State Changed
From-To: open->closed

Fixed in the binutils update, thanks for the report!