public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/35942]  New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler
@ 2008-04-15  8:10 earthengine at gmail dot com
  2008-04-24 17:05 ` [Bug libstdc++/35942] Self Reference In Dynamic " bkoz at gcc dot gnu dot org
                   ` (18 more replies)
  0 siblings, 19 replies; 20+ messages in thread
From: earthengine at gmail dot com @ 2008-04-15  8:10 UTC (permalink / raw)
  To: gcc-bugs

While building a cross-compiler, the the libstdc++-v3 includes a copy of
Libtool script, which includes a reference to libstdc++ itself. This prevent
the user to build a new compiler without existing libstdc++ for the target
triplet.

The following is a patch that tested to be working for this problem, but I
think it should be done in a better way.
#######BEGIN OF PATCH CODE######

diff -Naur gcc-4.3-20080410.orig/libstdc++-v3/src/Makefile.in
gcc-4.3-20080410/libstdc++-v3/src/Makefile.in
--- gcc-4.3-20080410.orig/libstdc++-v3/src/Makefile.in  2008-03-01
05:26:50.000000000 +1100
+++ gcc-4.3-20080410/libstdc++-v3/src/Makefile.in       2008-04-14
23:16:35.000000000 +1000
@@ -212,6 +212,7 @@
 LIBS = @LIBS@
 LIBSUPCXX_PICFLAGS = @LIBSUPCXX_PICFLAGS@
 LIBTOOL = @LIBTOOL@
+LIBTOOLLINK = @LIBTOOL@-link
 LN_S = @LN_S@
 LTLIBICONV = @LTLIBICONV@
 LTLIBOBJS = @LTLIBOBJS@
@@ -472,7 +473,7 @@
 # course is problematic at this point.  So, we get the top-level
 # directory to configure libstdc++-v3 to use gcc as the C++
 # compilation driver.
-CXXLINK = $(LIBTOOL) --tag CXX --mode=link $(CXX) \
+CXXLINK = $(LIBTOOLLINK) --tag CXX --mode=link $(CXX) \
          $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@

 debugdir = debug
@@ -536,7 +537,8 @@
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
-libstdc++.la: $(libstdc___la_OBJECTS) $(libstdc___la_DEPENDENCIES) 
+libstdc++.la: $(libstdc___la_OBJECTS) $(libstdc___la_DEPENDENCIES)
+       sed '/postdeps=/s@\-.*\-lm@\-lm@' `echo $(LIBTOOL) | cut -d\  -f2` >
`echo $(LIBTOOLLINK) | cut -d\  -f2` 
        $(CXXLINK) -rpath $(toolexeclibdir) $(libstdc___la_LDFLAGS)
$(libstdc___la_OBJECTS) $(libstdc___la_LIBADD) $(LIBS)

 mostlyclean-compile:
#######END OF PATCH CODE######


-- 
           Summary: Self Reference In Dinamic Linked Library builds for
                    building Cross-Compiler
           Product: gcc
           Version: 4.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: earthengine at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
@ 2008-04-24 17:05 ` bkoz at gcc dot gnu dot org
  2008-04-24 21:28 ` bkoz at gcc dot gnu dot org
                   ` (17 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2008-04-24 17:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from bkoz at gcc dot gnu dot org  2008-04-24 17:04 -------

Since there is no 4.3.1 release, only 4.3.0, can I assume you mean 4.3.0 for
the "Reported Against" field?

libtool issues should be fixed in libtool if possible, and not hacked around in
src/Makefile.am. Editing src/Makefile.in is incorrect, as this is a generated
file.


-- 

bkoz at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Self Reference In Dinamic   |Self Reference In Dynamic
                   |Linked Library builds for   |Linked Library builds for
                   |building Cross-Compiler     |building Cross-Compiler


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
  2008-04-24 17:05 ` [Bug libstdc++/35942] Self Reference In Dynamic " bkoz at gcc dot gnu dot org
@ 2008-04-24 21:28 ` bkoz at gcc dot gnu dot org
  2008-04-25 11:54 ` earthengine at gmail dot com
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2008-04-24 21:28 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from bkoz at gcc dot gnu dot org  2008-04-24 21:28 -------
instead of 

AC_LIBTOOL_DLOPEN
AM_PROG_LIBTOOL
AC_SUBST(enable_shared)
AC_SUBST(enable_static)

libgomp/acinclude.m4 has

sinclude(../libtool.m4)
dnl The lines below arrange for aclocal not to bring an installed
dnl libtool.m4 into aclocal.m4, while still arranging for automake to
dnl add a definition of LIBTOOL to Makefile.in.
ifelse(,,,[AC_SUBST(LIBTOOL)
AC_DEFUN([AM_PROG_LIBTOOL])
AC_DEFUN([AC_LIBTOOL_DLOPEN])
AC_DEFUN([AC_PROG_LD])
])


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
  2008-04-24 17:05 ` [Bug libstdc++/35942] Self Reference In Dynamic " bkoz at gcc dot gnu dot org
  2008-04-24 21:28 ` bkoz at gcc dot gnu dot org
@ 2008-04-25 11:54 ` earthengine at gmail dot com
  2008-04-25 12:05 ` Ralf dot Wildenhues at gmx dot de
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: earthengine at gmail dot com @ 2008-04-25 11:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from earthengine at gmail dot com  2008-04-25 11:53 -------
(In reply to comment #1)
> Since there is no 4.3.1 release, only 4.3.0, can I assume you mean 4.3.0 for
> the "Reported Against" field?
> 
> libtool issues should be fixed in libtool if possible, and not hacked around in
> src/Makefile.am. Editing src/Makefile.in is incorrect, as this is a generated
> file.
> 
I tested with a snapshot gcc-4.3-20080410, and the internal version is 4.3.1
This is why I reported this issue with 4.3.1

I post the hacked code is only for you to find out what happen I meet. I also
know that the files are generated, but I am new to gcc source code and I need
time to find out which file should be update.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (2 preceding siblings ...)
  2008-04-25 11:54 ` earthengine at gmail dot com
@ 2008-04-25 12:05 ` Ralf dot Wildenhues at gmx dot de
  2008-04-25 14:13 ` earthengine at gmail dot com
                   ` (14 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Ralf dot Wildenhues at gmx dot de @ 2008-04-25 12:05 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from Ralf dot Wildenhues at gmx dot de  2008-04-25 12:05 -------
Please post the link commands that expose the self reference
(the libtool --mode=link stuff and whatever it generates).
Also how exactly you configure GCC.  Also please post
  cd $host/libstdc++-v3 && ./libtool --tag=CXX --config

Thanks.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (3 preceding siblings ...)
  2008-04-25 12:05 ` Ralf dot Wildenhues at gmx dot de
@ 2008-04-25 14:13 ` earthengine at gmail dot com
  2008-10-03 23:07 ` paolo dot carlini at oracle dot com
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: earthengine at gmail dot com @ 2008-04-25 14:13 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from earthengine at gmail dot com  2008-04-25 14:12 -------
(In reply to comment #4)
> Please post the link commands that expose the self reference
> (the libtool --mode=link stuff and whatever it generates).
> Also how exactly you configure GCC.  Also please post
>   cd $host/libstdc++-v3 && ./libtool --tag=CXX --config
> 
> Thanks.
> 
------------Error Report-------------
libtool: link:  x86_64-unknown-linux-gnu-g++  -shared -nostdlib
/mnt/clfs/usr/lib/../lib64/crti.o
/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/crtbeginS.o 
.libs/bitmap_allocator.o .libs/pool_allocator.o .libs/mt_allocator.o
.libs/codecvt.o .libs/compatibility.o .libs/complex_io.o .libs/ctype.o
.libs/debug.o .libs/functexcept.o .libs/hash.o .libs/hash_c++0x.o
.libs/globals_io.o .libs/hashtable.o .libs/hashtable_c++0x.o .libs/ios.o
.libs/ios_failure.o .libs/ios_init.o .libs/ios_locale.o .libs/limits.o
.libs/list.o .libs/debug_list.o .libs/locale.o .libs/locale_init.o
.libs/locale_facets.o .libs/localename.o .libs/stdexcept.o .libs/strstream.o
.libs/tree.o .libs/allocator-inst.o .libs/concept-inst.o .libs/fstream-inst.o
.libs/ext-inst.o .libs/ios-inst.o .libs/iostream-inst.o .libs/istream-inst.o
.libs/istream.o .libs/locale-inst.o .libs/misc-inst.o .libs/ostream-inst.o
.libs/sstream-inst.o .libs/streambuf-inst.o .libs/streambuf.o
.libs/string-inst.o .libs/valarray-inst.o .libs/wlocale-inst.o
.libs/wstring-inst.o .libs/atomicity.o .libs/codecvt_members.o
.libs/collate_members.o .libs/ctype_members.o .libs/messages_members.o
.libs/monetary_members.o .libs/numeric_members.o .libs/time_members.o
.libs/basic_file.o .libs/c++locale.o .libs/parallel_list.o
.libs/parallel_settings.o  -Wl,--whole-archive ../libmath/.libs/libmath.a
../libsupc++/.libs/libsupc++convenience.a -Wl,--no-whole-archive 
-L/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1
-L/cross-tools/bin/../lib/gcc
-L/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/lib/../lib64
-L/mnt/clfs/lib/../lib64 -L/mnt/clfs/usr/lib/../lib64
-L/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/lib
-L/mnt/clfs/lib -L/mnt/clfs/usr/lib -lstdc++ -lm -lc -lgcc_s
/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/crtendS.o
/mnt/clfs/usr/lib/../lib64/crtn.o  -Wl,-O1 -Wl,-z -Wl,relro -Wl,--gc-sections
-Wl,--version-script=libstdc++-symbols.ver     -Wl,-soname -Wl,libstdc++.so.6
-o .libs/libstdc++.so.6.0.10
/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/ld:
cannot find -lstdc++

--------------Configure & build script-------------
CLFS_TAEGET=x86_64-unknown-linux-gnu
CLFS_HOST=x86_64-cross-linux-gnu
CLFS=/mnt/clfs
AR=ar CXX_FOR_TARGET="$CLFS_TARGET-g++" CC_FOR_TARGET="$CLFS_TARGET-gcc"
../gcc-4.3-20080417/configure --prefix=${CLFS}/cross-tools \
--host=${CLFS_HOST} --target=${CLFS_TARGET} \
--with-sysroot=${CLFS} --disable-nls --enable-shared \
--enable-languages=c,c++ --enable-__cxa_atexit \
--enable-c99 --enable-long-long --enable-threads=posix \
--with-gmp=$CLFS/cross-tools --with-mpfr=$CLFS/cross-tools &&

#I have only a static built gcc and if use it to build libgcc will fail
make all-gcc && make install-gcc &&
#I do not have the share library installed, which is needed to built libstdc++
make all-target-libgcc && make install-target-libgcc &&
#the error is on the make command
make && make install

----------------------Output of Libtool config----------------

# Which release of libtool.m4 was used?
macro_version=2.1a
macro_revision=1.2435

# Whether or not to build shared libraries.
build_libtool_libs=yes

# Whether or not to build static libraries.
build_old_libs=yes

# What type of objects to build.
pic_mode=default

# Whether or not to optimize for fast installation.
fast_install=yes

# The host system.
host_alias=x86_64-unknown-linux-gnu
host=x86_64-unknown-linux-gnu
host_os=linux-gnu

# The build system.
build_alias=x86_64-unknown-linux-gnu
build=x86_64-unknown-linux-gnu
build_os=linux-gnu

# A sed program that does not truncate output.
SED="/bin/sed"

# Sed that helps us avoid accidentally triggering echo(1) options like -n.
Xsed="$SED -e 1s/^X//"

# A grep program that handles long lines.
GREP="grep"

# An ERE matcher.
EGREP="grep -E"

# A literal string matcher.
FGREP="grep -F"

# A BSD- or MS-compatible name lister.
NM="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/nm"

# Whether we need soft or hard links.
LN_S="ln -s"

# What is the maximum length of a command?
max_cmd_len=98304

# Object file suffix (normally "o").
objext=o

# Executable file suffix (normally "").
exeext=

# whether the shell understands "unset".
lt_unset=unset

# turn spaces into newlines.
SP2NL="tr \\040 \\012"

# turn newlines into spaces.
NL2SP="tr \\015\\012 \\040\\040"

# How to create reloadable object files.
reload_flag=" -r"
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"

# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"

# Command to use when deplibs_check_method == "file_magic".
file_magic_cmd="\$MAGIC_CMD"

# The archiver.
AR="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/ar"
AR_FLAGS="rc"

# A symbol stripping program.
STRIP="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/strip"

# Commands used to install an old-style archive.
RANLIB="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/ranlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""

# A C compiler.
LTCC="x86_64-unknown-linux-gnu-gcc "

# LTCC compiler flags.
LTCFLAGS="-O2 -g -g -O2  "

# Take the output of nm and produce a listing of raw symbols and C names.
global_symbol_pipe="sed -n -e 's/^.*[    ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[     
 ][      ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"

# Transform the output of nm in a proper C declaration.
global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e
's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"

# Transform the output of nm in a C name address pair.
global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\",
(void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\",
(void *) \\&\\2},/p'"

# The name of the directory that contains temporary libtool files.
objdir=.libs

# Shell to use when invoking shell scripts.
SHELL="/bin/bash"

# An echo program that does not interpret backslashes.
ECHO="echo"

# Used to examine libraries when file_magic_cmd begins with "file".
MAGIC_CMD=file

# Must we lock files when doing compilation?
need_locks="no"

# Old archive suffix (normally "a").
libext=a

# Shared library suffix (normally ".so").
shrext_cmds=".so"

# The commands to extract the exported symbol list from a shared archive.
extract_expsyms_cmds=""

# Variables whose values should be saved in libtool wrapper scripts and
# restored at link time.
variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX
COMPILER_PATH LIBRARY_PATH"

# Do we need the "lib" prefix for modules?
need_lib_prefix=no

# Do we need a version for libraries?
need_version=no

# Library versioning type.
version_type=linux

# Shared library runtime path variable.
runpath_var=LD_RUN_PATH

# Shared library path variable.
shlibpath_var=LD_LIBRARY_PATH

# Is shlibpath searched before the hard-coded library search path?
shlibpath_overrides_runpath=no

# Format of library name prefix.
libname_spec="lib\$name"

# List of archive names.  First name is the real one, the rest are links.
# The last name is the one that the linker finds with -lNAME
library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix
\${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"

# The coded name of the library, if different from the real name.
soname_spec="\${libname}\${release}\${shared_ext}\$major"

# Command to use after installation of a shared archive.
postinstall_cmds=""

# Command to use after uninstallation of a shared archive.
postuninstall_cmds=""

# Commands used to finish a libtool library installation in a directory.
finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"

# As "finish_cmds", except a single script fragment to be evaled but
# not shown.
finish_eval=""

# Whether we should hardcode library paths into libraries.
hardcode_into_libs=yes

# Compile-time system search path for libraries.
sys_lib_search_path_spec="/cross-tools/lib/gcc/x86_64-unknown-linux-gnu/4.3.1
/cross-tools/lib/gcc /cross-tools/x86_64-unknown-linux-gnu/lib64
/mnt/clfs/lib64 /mnt/clfs/usr/lib64"

# Run-time system search path for libraries.
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib "

# Whether dlopen is supported.
dlopen_support=yes

# Whether dlopen of programs is supported.
dlopen_self=yes

# Whether dlopen of statically linked programs is supported.
dlopen_self_static=no

# Commands to strip libraries.
old_striplib="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/strip
--strip-debug"
striplib="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/strip
--strip-unneeded"


# The linker used to build libraries.
LD="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/ld"

# Commands used to build an old-style archive.
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB
\$oldlib"

# A language specific compiler.
CC="x86_64-unknown-linux-gnu-gcc "

# Is the compiler the GNU compiler?
with_gcc=yes

# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"

# How to pass a linker flag through the compiler.
wl="-Wl,"

# Additional compiler flags for building library objects.
pic_flag=" -fPIC -DPIC"

# Compiler flag to prevent dynamic linking.
link_static_flag="-static"

# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"

# Whether or not to add -lc for building shared libraries.
build_libtool_need_lc=no

# Whether or not to disallow shared libs when runtime libs are static.
allow_libtool_libs_with_static_runtimes=no

# Compiler flag to allow reflexive dlopens.
export_dynamic_flag_spec="\${wl}--export-dynamic"

# Compiler flag to generate shared objects directly from archives.
whole_archive_flag_spec="\${wl}--whole-archive\$convenience
\${wl}--no-whole-archive"

# Whether the compiler copes with passing no objects directly.
compiler_needs_object="no"

# Create an old-style archive from a shared archive.
old_archive_from_new_cmds=""

# Create a temporary old-style archive to link instead of a shared archive.
old_archive_from_expsyms_cmds=""

# Commands used to build a shared archive.
archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname
\$wl\$soname -o \$lib"
archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
            cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >>
\$output_objdir/\$libname.ver~
            echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
            \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname
\$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o
\$lib"

# Commands used to build a loadable module if different from building
# a shared archive.
module_cmds=""
module_expsym_cmds=""

# Whether we are building with GNU ld or not.
with_gnu_ld="yes"

# Flag that allows shared libraries with undefined symbols to be built.
allow_undefined_flag=""

# Flag that enforces no undefined symbols.
no_undefined_flag=""

# Flag to hardcode $libdir into a binary during linking.
# This must work even if $libdir does not exist
hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"

# If ld is used when linking, flag to hardcode $libdir into a binary
# during linking.  This must work even if $libdir does not exist.
hardcode_libdir_flag_spec_ld=""

# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=""

# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
# DIR into the resulting binary.
hardcode_direct=no

# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
# library is relocated.
hardcode_direct_absolute=no

# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
# into the resulting binary.
hardcode_minus_L=no

# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
# into the resulting binary.
hardcode_shlibpath_var=unsupported

# Set to "yes" if building a shared library automatically hardcodes DIR
# into the library and all subsequent libraries and executables linked
# against it.
hardcode_automatic=no

# Set to yes if linker adds runtime paths of dependent libraries
# to runtime path list.
inherit_rpath=no

# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=unknown

# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""

# Set to "yes" if exported symbols are required.
always_export_symbols=no

# The commands to list exported symbols.
export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe |
\$SED 's/.* //' | sort | uniq > \$export_symbols"

# Symbols that should not be listed in the preloaded symbols.
exclude_expsyms="_GLOBAL_OFFSET_TABLE_"

# Symbols that must always be exported.
include_expsyms=""

# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=""

# Specify filename containing input files.
file_list_spec=""

# How to hardcode a shared library path into an executable.
hardcode_action=immediate

# Dependencies to place before and after the objects being linked to
# create a shared library.
predep_objects=""
postdep_objects=""
predeps=""
postdeps=""

# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""

# ### BEGIN LIBTOOL TAG CONFIG: CXX

# The linker used to build libraries.
LD="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/bin/ld
-m elf_x86_64"

# Commands used to build an old-style archive.
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB
\$oldlib"

# A language specific compiler.
CC=" x86_64-unknown-linux-gnu-g++ "

# Is the compiler the GNU compiler?
with_gcc=yes

# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"

# How to pass a linker flag through the compiler.
wl="-Wl,"

# Additional compiler flags for building library objects.
pic_flag=" -fPIC -DPIC"

# Compiler flag to prevent dynamic linking.
link_static_flag=""

# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"

# Whether or not to add -lc for building shared libraries.
build_libtool_need_lc=no

# Whether or not to disallow shared libs when runtime libs are static.
allow_libtool_libs_with_static_runtimes=no

# Compiler flag to allow reflexive dlopens.
export_dynamic_flag_spec="\${wl}--export-dynamic"

# Compiler flag to generate shared objects directly from archives.
whole_archive_flag_spec="\${wl}--whole-archive\$convenience
\${wl}--no-whole-archive"

# Whether the compiler copes with passing no objects directly.
compiler_needs_object="no"

# Create an old-style archive from a shared archive.
old_archive_from_new_cmds=""

# Create a temporary old-style archive to link instead of a shared archive.
old_archive_from_expsyms_cmds=""

# Commands used to build a shared archive.
archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs
\$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs
\$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname
\${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib"

# Commands used to build a loadable module if different from building
# a shared archive.
module_cmds=""
module_expsym_cmds=""

# Whether we are building with GNU ld or not.
with_gnu_ld="yes"

# Flag that allows shared libraries with undefined symbols to be built.
allow_undefined_flag=""

# Flag that enforces no undefined symbols.
no_undefined_flag=""

# Flag to hardcode $libdir into a binary during linking.
# This must work even if $libdir does not exist
hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"

# If ld is used when linking, flag to hardcode $libdir into a binary
# during linking.  This must work even if $libdir does not exist.
hardcode_libdir_flag_spec_ld=""

# Whether we need a single "-rpath" flag with a separated argument.
hardcode_libdir_separator=""

# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
# DIR into the resulting binary.
hardcode_direct=no

# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
# DIR into the resulting binary and the resulting library dependency is
# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
# library is relocated.
hardcode_direct_absolute=no

# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
# into the resulting binary.
hardcode_minus_L=no

# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
# into the resulting binary.
hardcode_shlibpath_var=unsupported

# Set to "yes" if building a shared library automatically hardcodes DIR
# into the library and all subsequent libraries and executables linked
# against it.
hardcode_automatic=no

# Set to yes if linker adds runtime paths of dependent libraries
# to runtime path list.
inherit_rpath=no

# Whether libtool must link a program against all its dependency libraries.
link_all_deplibs=unknown

# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""

# Set to "yes" if exported symbols are required.
always_export_symbols=no

# The commands to list exported symbols.
export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe |
\$SED 's/.* //' | sort | uniq > \$export_symbols"

# Symbols that should not be listed in the preloaded symbols.
exclude_expsyms=""

# Symbols that must always be exported.
include_expsyms=""

# Commands necessary for linking programs (against libraries) with templates.
prelink_cmds=""

# Specify filename containing input files.
file_list_spec=""

# How to hardcode a shared library path into an executable.
hardcode_action=immediate

# Dependencies to place before and after the objects being linked to
# create a shared library.
predep_objects="/mnt/clfs/usr/lib/../lib64/crti.o
/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/crtbeginS.o"
postdep_objects="/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/crtendS.o
/mnt/clfs/usr/lib/../lib64/crtn.o"
predeps=""
postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"

# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path="-L/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1
-L/cross-tools/bin/../lib/gcc
-L/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/lib/../lib64
-L/mnt/clfs/lib/../lib64 -L/mnt/clfs/usr/lib/../lib64
-L/cross-tools/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/lib
-L/mnt/clfs/lib -L/mnt/clfs/usr/lib"

# ### END LIBTOOL TAG CONFIG: CXX


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (4 preceding siblings ...)
  2008-04-25 14:13 ` earthengine at gmail dot com
@ 2008-10-03 23:07 ` paolo dot carlini at oracle dot com
  2008-10-22 10:33 ` earthengine at gmail dot com
                   ` (12 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: paolo dot carlini at oracle dot com @ 2008-10-03 23:07 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from paolo dot carlini at oracle dot com  2008-10-03 23:06 -------
Ralf, any feedback on this issue? Thanks!


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (5 preceding siblings ...)
  2008-10-03 23:07 ` paolo dot carlini at oracle dot com
@ 2008-10-22 10:33 ` earthengine at gmail dot com
  2008-10-22 10:54 ` earthengine at gmail dot com
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: earthengine at gmail dot com @ 2008-10-22 10:33 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from earthengine at gmail dot com  2008-10-22 10:31 -------
Hi, We have found the reason of this problem. The GCC 4.3+ serials can
automaticaly detect the --build parameter (i686-pc-linux-gnu, or something like
that). However, the previous version will use --host parameter if it has been
specified. In some case (especially mutilib-systems) when using configuring
without --build, then the build system will wrongly detect the --build
parameter, which will cause the libstdc++ to be detected should use a pre-build
version. This causes many problems.

We have solve it with explicitly specify the --build parameter. This should be
written to the manual, and then this issue can be closed.

Thank you.    


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (6 preceding siblings ...)
  2008-10-22 10:33 ` earthengine at gmail dot com
@ 2008-10-22 10:54 ` earthengine at gmail dot com
  2009-01-20 20:56 ` bkoz at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: earthengine at gmail dot com @ 2008-10-22 10:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from earthengine at gmail dot com  2008-10-22 10:53 -------
Let me explain it more clearly.

Suppose I am building a toolchain to be running on a x86 Linux machine, and it
will generate code for mips Linux. With gcc 4.2.x, I can use

--host=i686-pc-linux-gnu --target=mips-linux-gnu

and it will work on both x86-64 marchines as well because the 4.2.x build
system will use i686-pc-linux-gnu as the --build parameter, and then it will be
a case of normal cross compile.

However, the previous configuration does not work under 4.3+. The reason is
under 4.3+ the build system will detect the --build parameter as well, so the
configuration will become

--build=x86_64-unknown-linux-gnu --host=i686-pc-linux-gnu
--target=mips-linux-gnu

This is a Canadian cross compile! Usually, to complete a Canadian cross
compile, we need the libstdc++ for mips-linux-gnu already because it can not
depending on the just-compiled compiler (it would not run on the build machine)
to compile this library.

This is why we have this problem. The solution is to explicitly use

--build=i686-pc-linux-gnu --host-pc-linux-gnu --target=mips-linux-gnu

to force a normal cross compile.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (7 preceding siblings ...)
  2008-10-22 10:54 ` earthengine at gmail dot com
@ 2009-01-20 20:56 ` bkoz at gcc dot gnu dot org
  2009-02-02  9:31 ` jzb2 at aexorsyst dot com
                   ` (9 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: bkoz at gcc dot gnu dot org @ 2009-01-20 20:56 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from bkoz at gcc dot gnu dot org  2009-01-20 20:56 -------

I don't think this is a libstdc++ bug per se, but configure/build and possibly
libtool-related.  But I don't see a configure/build category (only a keyword),
so the current mis-categorization shall continue. I will add a documentation
keyword to this bug though.

And I'm also not convinced that the current (possibly changed) behaviour is a
bug. I do believe that --build and --host flags should be explained better in
the gcc docs, however.

My understanding of this issue, which may be fatally flawed, is summarized as:

It looks like some cross or canadian-cross configure or build behaviour changed
between 4.2.x and 4.3.x. This change may or may not be for the better, I don't 
know.

This configure snippet will work with 4.2.x and 4.3.x:

--build=i686-pc-linux-gnu --host=i686-pc-linux-gnu -target=mips-linux-gnu

whereas the --build part used to not be necessary. (Although I suppose omitting
both host and build flags might work too, or just supplying
--host=x86_64-unknown-linux-gnu when compiling on x86_64 so that auto-detected
--build will be filled in equivalently.)

Not quite sure what to do to "fix" this bug and close the bug report. Ralf, and
ideas? Is my summary above correct?

Note neither --build nor --host are documented here:

http://gcc.gnu.org/install/configure.html
or
http://gcc.gnu.org/install/build.html

This seems like something that should be clarified to me. 


-- 

bkoz at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  GCC build triplet|                            |i686-pc-linux-gnu
   GCC host triplet|                            |x86_64-unknown-linux-gnu
 GCC target triplet|                            |mips-linux-gnu
           Keywords|                            |documentation
      Known to fail|                            |4.3.0
      Known to work|                            |4.2.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (8 preceding siblings ...)
  2009-01-20 20:56 ` bkoz at gcc dot gnu dot org
@ 2009-02-02  9:31 ` jzb2 at aexorsyst dot com
  2009-02-02 16:26 ` jzb2 at aexorsyst dot com
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: jzb2 at aexorsyst dot com @ 2009-02-02  9:31 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from jzb2 at aexorsyst dot com  2009-02-02 09:31 -------
I can confirm this is a real problem.  I have hit this exact same bug on
gcc-4.2.2.  However, one difference in my setup is that I _do_ have
libstdc++.so available as part of my cross toolchain, with the result the
libtool happily generates code that ends up linking the cross-toolchain's
libstdc++.so into the cross-native (not Canandian) libstdc++.so just being
built, and adds an ugly RPATH to it as well.  I've sent the following to
gcc-help mailing list, before I found this current bug on bugzilla:

I'm doing a cross-native of build gcc-4.2.2 on

--build=i686-pc-linux-gnu

using cross-compiler/toolchain built with

--build=i686-pc-linux-gnu
--host=i686-pc-linux-gnu
--target=i686-pc-linux-uclibc

and currently building gcc-4.2.2 for 

--build=i686-pc-linux-gnu
--host=i686-pc-linux-uclibc
--target=i686-pc-linux-uclibc

with

...
--enable-shared
--enable-languages=c,c++
--with-sysroot=/data/devo/builds/i686-pc-linux-gnu-cross-i686-pc-linux-uclibc/crucis-1/cross-rootfs
...

The generated libtool in

gcc_native-build/i686-pc-linux-uclibc/libstdc++v3/libtool ends up with

...
postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
...

which seems in error, as it creates a circular dependency of SONAME 
libstdc++.so on NEEDED libstdc++.so and makes for an ugly RPATH:

Dynamic section at offset 0xe789c contains 28 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libm.so.0]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.0]
 0x00000001 (NEEDED)                     Shared library: [libintl.so.0]
 0x00000001 (NEEDED)                     Shared library: 
[libstdc++.so.6]
 0x0000000e (SONAME)                     Library soname: 
[libstdc++.so.6]
 0x0000000f (RPATH)                      Library rpath: 
[/data/devo/builds/i686-pc-linux-gnu-cross-i686-pc-linux-uclibc/crucis-1/cross-tools/i686-pc-linux-uclibc/lib]

Note that if instead of libstdc++.so I only have libstdc++.a in the toolchain,
then I get a bunch of duplicate symbols and the link fails (I suppose that's
expected at this point).

I'm pretty sure this used to work in earlier versions, but its broken in 4.2.2
and has nothing to do with (in 4.2.2) the --build option, as I do specify it. 
Here's my full cross-native configure command:

cd $(OBJDIR)/gcc_native-build ; \
          CXXFLAGS=-fpermissive \
            CC=$(ARCH)-$(CUSTOMER)-$(PLATFORM)-gcc \
            $(PKGDIR)/configure --prefix=/usr \
                                --libexecdir=/usr/lib \
                                --enable-shared \
                                --enable-threads=posix \
                                --enable-__cxa_atexit \
                                --enable-clocale=uclibc \
                                --with-cpu=pentium4 \
                                --with-local-prefix=$(TGTROOT)/usr \
                                --with-sysroot=$(TGTROOT) \
                                --enable-languages=c,c++ \
                                --disable-libstdcxx-pch \
                                --build=$(BUILDHOST) \
                                --host=$(ARCH)-$(CUSTOMER)-$(PLATFORM) \
                                --target=$(ARCH)-$(CUSTOMER)-$(PLATFORM)

And here's how the cross-compiler was built (prior to building gcc_native):

cd $(OBJDIR)/gcc_p2-build ; \
          CXXFLAGS=-fpermissive $(PKGDIR)/configure \
                   --prefix=$(PREFIX) \
                   --disable-werror \
                   --disable-multilib \
                   --enable-clocale=uclibc \
                   --enable-shared \
                   --libexecdir=$(PREFIX)/lib \
                   --with-headers=$(TGTROOT)/usr/include \
                   --with-sysroot=$(TGTROOT) \
                   --enable-threads=posix \
                   --enable-__cxa_atexit \
                   --with-cpu=pentium4 \
                   --enable-languages=c,c++ \
                   --target=$(ARCH)-$(CUSTOMER)-$(PLATFORM)

Note that -fpermissive flag is to overcome uClibc's gettext issues, and was
suggested by the gcc itself as it tried to build.  It works with, not without,
but probably has nothing to do this generated libtool issue.  The uclibc locale
was supplied via patches.

I am a programmer, but not a autoconf/automake/libtool expert, so if someone
could just please point out where that postdeps gets instantiated, and how it
has come to include -lstdc++, I'd be happy to run some tests.

Is it possible that this may have to do with the version(s) of the
autoconf/automake tools?  Is that where perhaps the postdeps gets its value? 
I'm just guessing, as I've grepped the whole gcc source tree, and couldn't find
anything useful.  That would also explain the unexpected difference in
behavior.

I'm running autoconf-2.61 and automake-1.10.1 and libtool-1.5.24 on the
$(BUILDHOST).


-- 

jzb2 at aexorsyst dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jzb2 at aexorsyst dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (9 preceding siblings ...)
  2009-02-02  9:31 ` jzb2 at aexorsyst dot com
@ 2009-02-02 16:26 ` jzb2 at aexorsyst dot com
  2009-02-09 20:26 ` jzb2 at aexorsyst dot com
                   ` (7 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: jzb2 at aexorsyst dot com @ 2009-02-02 16:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from jzb2 at aexorsyst dot com  2009-02-02 16:26 -------
Well, I answered my own question, sort of...

In my /usr/bin/libtool, in the CXX tag section, I have

postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"

so voila, that's where it comes from, probably.

So this issue can now be reduced to the following:

Native builds and cross-compiles of libstdc++.so override this postdeps and
zero it out.  However, using a cross-compiler to generate host=target native
compiler with build!=host leaves it pulled in, being responsible, I believe,
for this bug.  Whether that's a libtool bug or a libstdc++ configure bug remain
unanswered...  Maybe this is a new wrinkle that newish versions of libtool have
and perhaps has not needed to be dealt with before.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (10 preceding siblings ...)
  2009-02-02 16:26 ` jzb2 at aexorsyst dot com
@ 2009-02-09 20:26 ` jzb2 at aexorsyst dot com
  2009-02-10 12:48 ` earthengine at gmail dot com
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: jzb2 at aexorsyst dot com @ 2009-02-09 20:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from jzb2 at aexorsyst dot com  2009-02-09 20:25 -------
So it appears that the root cause of this issue is the long standing libtool
DESTDIR problem.

I've reworked the original patch above into to following, which works with my
./configure options:

Index: gcc_native-4.2.2/libstdc++-v3/src/Makefile.in
===================================================================
RCS file: /data/scdb/PKGS/gcc_native/libstdc++-v3/src/Makefile.in,v
retrieving revision 1.1.1.4
diff -r1.1.1.4 Makefile.in
460a461
>       sed -i 's@^postdeps=.*$$@postdeps=""@' `echo $(LIBTOOL) | cut -d' ' -f2`
503a505
>       sed -i 's@^postdeps=.*$$@postdeps=""@' `echo $(LIBTOOL) | cut -d' ' -f2`
Index: gcc_native-4.2.2/libstdc++-v3/libsupc++/Makefile.in
===================================================================
RCS file: /data/scdb/PKGS/gcc_native/libstdc++-v3/libsupc++/Makefile.in,v
retrieving revision 1.1.1.3
diff -r1.1.1.3 Makefile.in
492a493
>       sed -i 's@^postdeps=.*$$@postdeps=""@' `echo $(LIBTOOL) | cut -d' ' -f2`
494a496
>       sed -i 's@^postdeps=.*$$@postdeps=""@' `echo $(LIBTOOL) | cut -d' ' -f2`

Note that this patch drops the forced linking with -lc, -lm, -lintl, and
-lgcc_s as well as the problem child -lstdc++.  I have not noticed any ill
effects.  Also note that the -lm and -lintl are still included in the final
link due to other reasons.

If anybody knows which (if any) other shared libraries the libstdc++.so
actually does need to link with, instead of just relying on the (buggy) libtool
results (when used with a DESTDIR), could you please post that.  I was under
the impression that the libstdc++.so was a standalone library, like libc.so,
but maybe that's not the case for newer versions of GCC.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (11 preceding siblings ...)
  2009-02-09 20:26 ` jzb2 at aexorsyst dot com
@ 2009-02-10 12:48 ` earthengine at gmail dot com
  2009-12-15 17:02 ` paolo dot carlini at oracle dot com
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: earthengine at gmail dot com @ 2009-02-10 12:48 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from earthengine at gmail dot com  2009-02-10 12:48 -------

> whereas the --build part used to not be necessary. (Although I suppose omitting
> both host and build flags might work too, or just supplying
> --host=x86_64-unknown-linux-gnu when compiling on x86_64 so that auto-detected
> --build will be filled in equivalently.)
 No, you are wrong. If use
--host=x86_64-unknown-linux-gnu and omitting the --build flag, in some machine
the detected --build flag in 4.3.x is
--build=core2-unknown-linux-gnu
and in this case it is still a canadian cross build.
I have seen it before.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (12 preceding siblings ...)
  2009-02-10 12:48 ` earthengine at gmail dot com
@ 2009-12-15 17:02 ` paolo dot carlini at oracle dot com
  2010-01-04 17:15 ` rwild at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: paolo dot carlini at oracle dot com @ 2009-12-15 17:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from paolo dot carlini at oracle dot com  2009-12-15 17:02 -------
Is this still an issue?


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (13 preceding siblings ...)
  2009-12-15 17:02 ` paolo dot carlini at oracle dot com
@ 2010-01-04 17:15 ` rwild at gcc dot gnu dot org
  2010-01-07 20:54 ` rwild at gcc dot gnu dot org
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: rwild at gcc dot gnu dot org @ 2010-01-04 17:15 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from rwild at gcc dot gnu dot org  2010-01-04 17:15 -------
Created an attachment (id=19463)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19463&action=view)
proposed patch

(In reply to comment #14)
> Is this still an issue?

I have not tried to reproduce it, but I wouldn't know of a change that should
have fixed the issue.

Here's a patch that I would expect to fix^Wwork around the issue.
Can you (somebody who experiences the issue) try it?  Thanks.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (14 preceding siblings ...)
  2010-01-04 17:15 ` rwild at gcc dot gnu dot org
@ 2010-01-07 20:54 ` rwild at gcc dot gnu dot org
  2010-01-16 14:47 ` rwild at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: rwild at gcc dot gnu dot org @ 2010-01-07 20:54 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #16 from rwild at gcc dot gnu dot org  2010-01-07 20:54 -------
Patch at <http://gcc.gnu.org/ml/gcc-patches/2010-01/msg00349.html>,
it would be nice if someone could confirm that it fixes the issue.  Thanks.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (15 preceding siblings ...)
  2010-01-07 20:54 ` rwild at gcc dot gnu dot org
@ 2010-01-16 14:47 ` rwild at gcc dot gnu dot org
  2010-01-16 14:49 ` rwild at gcc dot gnu dot org
  2010-02-05 13:11 ` paolo dot carlini at oracle dot com
  18 siblings, 0 replies; 20+ messages in thread
From: rwild at gcc dot gnu dot org @ 2010-01-16 14:47 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #17 from rwild at gcc dot gnu dot org  2010-01-16 14:47 -------
Subject: Bug 35942

Author: rwild
Date: Sat Jan 16 14:46:57 2010
New Revision: 155965

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155965
Log:
Fix PR 35942: remove -lstdc++ from libtool postdeps for CXX.

libstdc++-v3/:
        PR libstdc++/35942
        * configure.ac: Remove -lstdc++ from libtool's postdeps_CXX.
        * configure: Regenerate.


Modified:
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/configure
    trunk/libstdc++-v3/configure.ac


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (16 preceding siblings ...)
  2010-01-16 14:47 ` rwild at gcc dot gnu dot org
@ 2010-01-16 14:49 ` rwild at gcc dot gnu dot org
  2010-02-05 13:11 ` paolo dot carlini at oracle dot com
  18 siblings, 0 replies; 20+ messages in thread
From: rwild at gcc dot gnu dot org @ 2010-01-16 14:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #18 from rwild at gcc dot gnu dot org  2010-01-16 14:49 -------
Fixed for 4.5.


-- 

rwild at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|4.2.0                       |4.2.0 4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Bug libstdc++/35942] Self Reference In Dynamic Linked Library builds for building Cross-Compiler
  2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
                   ` (17 preceding siblings ...)
  2010-01-16 14:49 ` rwild at gcc dot gnu dot org
@ 2010-02-05 13:11 ` paolo dot carlini at oracle dot com
  18 siblings, 0 replies; 20+ messages in thread
From: paolo dot carlini at oracle dot com @ 2010-02-05 13:11 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #19 from paolo dot carlini at oracle dot com  2010-02-05 13:11 -------
So, this is fixed.


-- 

paolo dot carlini at oracle dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|                            |FIXED
   Target Milestone|---                         |4.5.0


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35942


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2010-02-05 13:11 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-15  8:10 [Bug libstdc++/35942] New: Self Reference In Dinamic Linked Library builds for building Cross-Compiler earthengine at gmail dot com
2008-04-24 17:05 ` [Bug libstdc++/35942] Self Reference In Dynamic " bkoz at gcc dot gnu dot org
2008-04-24 21:28 ` bkoz at gcc dot gnu dot org
2008-04-25 11:54 ` earthengine at gmail dot com
2008-04-25 12:05 ` Ralf dot Wildenhues at gmx dot de
2008-04-25 14:13 ` earthengine at gmail dot com
2008-10-03 23:07 ` paolo dot carlini at oracle dot com
2008-10-22 10:33 ` earthengine at gmail dot com
2008-10-22 10:54 ` earthengine at gmail dot com
2009-01-20 20:56 ` bkoz at gcc dot gnu dot org
2009-02-02  9:31 ` jzb2 at aexorsyst dot com
2009-02-02 16:26 ` jzb2 at aexorsyst dot com
2009-02-09 20:26 ` jzb2 at aexorsyst dot com
2009-02-10 12:48 ` earthengine at gmail dot com
2009-12-15 17:02 ` paolo dot carlini at oracle dot com
2010-01-04 17:15 ` rwild at gcc dot gnu dot org
2010-01-07 20:54 ` rwild at gcc dot gnu dot org
2010-01-16 14:47 ` rwild at gcc dot gnu dot org
2010-01-16 14:49 ` rwild at gcc dot gnu dot org
2010-02-05 13:11 ` paolo dot carlini at oracle dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).