patches/gcc/4.3.0/200-libstdc++-pic.patch
author Zoltan Devai <zdevai@gmail.com>
Wed Oct 28 12:03:38 2009 +0100 (2009-10-28)
changeset 1602 1ba79f2126df
parent 746 b150d6f590fc
permissions -rw-r--r--
libc/uClibc: fix building on system with recent glibc

While trying to build a toolchain with ct-ng 1.5.0,
arm-unknown-linux-uclibcgnueabi target,
I get the following error:

[INFO ] Installing C library headers
[EXTRA] Copying sources to build dir
[EXTRA] Applying configuration
[EXTRA] Building headers
[EXTRA] Installing headers
[ERROR] extra/scripts/unifdef.c:209: error: conflicting types for 'getline'
[ERROR] make[2]: *** [extra/scripts/unifdef] Error 1
[ERROR] Build failed in step 'Installing C library headers'

The following patch solves the problem.
(It's a backport of this uClibc commit:
http://git.uclibc.org/uClibc/commit/?id=49e81cada73616864b9b31df0aeb6961c30f5a6e
)

[--SNIP from another mail--]
AFAIK this is a problem since glibc 2.10.
     1 Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.0/gentoo/54_all_300-libstdc++-pic.patch
     2 install libstdc++_pic.a if we have pic objs
     3 
     4 diff -durN gcc-4.3.0.orig/libstdc++-v3/src/Makefile.am gcc-4.3.0/libstdc++-v3/src/Makefile.am
     5 --- gcc-4.3.0.orig/libstdc++-v3/src/Makefile.am	2008-02-29 19:26:50.000000000 +0100
     6 +++ gcc-4.3.0/libstdc++-v3/src/Makefile.am	2008-06-10 14:44:51.000000000 +0200
     7 @@ -289,6 +289,13 @@
     8  	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
     9  
    10  
    11 +install-exec-local:
    12 +	pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \
    13 +	if [ x"$$pic_objs" != x ]; then \
    14 +		$(AR) cru libstdc++_pic.a $$pic_objs $(top_builddir)/libsupc++/*.o || exit 1; \
    15 +		$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || exit 1; \
    16 +	fi
    17 +
    18  # Added bits to build debug library.
    19  if GLIBCXX_BUILD_DEBUG
    20  all-local: build_debug
    21 diff -durN gcc-4.3.0.orig/libstdc++-v3/src/Makefile.in gcc-4.3.0/libstdc++-v3/src/Makefile.in
    22 --- gcc-4.3.0.orig/libstdc++-v3/src/Makefile.in	2008-02-29 19:26:50.000000000 +0100
    23 +++ gcc-4.3.0/libstdc++-v3/src/Makefile.in	2008-06-10 14:44:51.000000000 +0200
    24 @@ -693,7 +693,7 @@
    25  
    26  install-data-am: install-data-local
    27  
    28 -install-exec-am: install-toolexeclibLTLIBRARIES
    29 +install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
    30  
    31  install-info: install-info-am
    32  
    33 @@ -732,7 +732,7 @@
    34  	maintainer-clean-generic mostlyclean mostlyclean-compile \
    35  	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
    36  	tags uninstall uninstall-am uninstall-info-am \
    37 -	uninstall-toolexeclibLTLIBRARIES
    38 +	uninstall-toolexeclibLTLIBRARIES install-exec-local
    39  
    40  
    41  # Symbol versioning for shared libraries.
    42 @@ -858,6 +858,14 @@
    43  install_debug:
    44  	(cd ${debugdir} && $(MAKE) \
    45  	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
    46 +
    47 +install-exec-local:
    48 +	pic_objs=`sed -n "s:'::g;s:^pic_object=::p" *.lo | grep -v '^none$$'`; \
    49 +	if [ x"$$pic_objs" != x ]; then \
    50 +		$(AR) cru libstdc++_pic.a $$pic_objs $(top_builddir)/libsupc++/*.o || exit 1; \
    51 +		$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) || exit 1; \
    52 +	fi
    53 +
    54  # Tell versions [3.59,3.63) of GNU make to not export all variables.
    55  # Otherwise a system limit (for SysV at least) may be exceeded.
    56  .NOEXPORT: