This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/10060] New: 2.9.90 configure still does not figure out i686 (Pentium i686) without --with-cpu=


Having consistently got this behaviour when building i686-pc-gnu-linux
under x86_64-pc-gnu-linux ( Gentoo and Fedora 10 both ) , without any
third-party "Linux distribution" patches, I've been trying to find a
simple patch to reliably fix this problem,  so I actually mounted 
over NFS the latest CVS snapshot from :
 $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc co libc
and then mounted it with a genuine i686 host ( Fedora Core 6 ) and 
got exactly the same set of errors as when attempting to build
in 32-bit i686 mode on x86_64, when building natively on i686 FC-6;
so it really cannot be any sort of environment gcc / binutils problem
at all, since the same problem occurs on FC-6 :
$ gcc --version
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-libgcj-multifile
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk
--disable-dssi --enable-plugin
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic
--host=i386-redhat-linux
Thread model: posix
gcc version 4.1.2 20070626 (Red Hat 4.1.2-13)
:
$ ld --version
GNU ld version 2.17.50.0.6-5.fc6 20061020
Copyright 2005 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.

As under:

$ gcc --version; ld --version
gcc (Linux 2.6.29 GCC 4.3.3 JVD 2009-02-24) 4.3.4 20090223 (prerelease)
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

GNU ld (GNU Binutils) 2.19.51.20090319
Copyright 2008 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.

(ie latest gcc 4.3.x 4.4.x and binutils on an x86_64 ). 

The problem for both builds was simply that some parts of the code refuse to
auto-determine a "pentium" default CPU and enable "i686" gcc TLS, either under
$ uname -a; cat /etc/fedora-release
Linux jvdsibm 2.6.22.14-72.fc6 #1 SMP Wed Nov 21 15:12:59 EST 2007 i686 i686
i386 GNU/Linux
Fedora Core release 6 (Zod)
or under:
$ uname -a; cat /etc/gentoo-release
Linux jvdspc 2.6.29-rc8-tip-jvd #2 SMP Thu Apr 9 12:44:15 EDT 2009 x86_64 AMD
Turion(tm) 64 X2 Mobile Technology TL-64 AuthenticAMD GNU/Linux
Gentoo Base System release 1.12.12
or under:
$ uname -a; cat /etc/fedora-release
Linux jvdspc 2.6.29-rc8-tip-jvd #2 SMP Thu Apr 9 12:44:15 EDT 2009 x86_64 x86_64
x86_64 GNU/Linux
Fedora release 10 (Cambridge)

GLIBC configure line :
 $ ../configure --prefix=/usr --libdir=/usr/lib32 --sysconfdir=/usr/etc/32
--sharedstatedir=/usr/var/32 --datarootdir=/usr/share/32 --enable-shared
--enable-tls --enable-threads=posix 

Yes, I want those weird */32 directories; I'm trying to build, eventually,
for a x86_64 i386 mode glibc.

But first just get it to build with those configure args on ANY i686 ! -
(I'd rather not convert my ancient and slow i686 laptop to FC8/10 - it's
happy with FC-6 and so am I - but why can't it use the above configure
args and build glibc ? ).

These errors appear in the make.log with the above configure arguments :

$ make 2>&1 | tee make.log || grep 'sync_fetch_and_add' make.log
...
/jvdspc/jvdsibm/glibc-2.90.9/libc/nscd/nscd-client.h:320: undefined reference to
`__sync_fetch_and_add_4'
/jvdspc/jvdsibm/glibc-2.90.9/libc/nscd/nscd_getpw_r.c:232: undefined reference
to `__sync_fetch_and_add_4'
/jvdspc/jvdsibm/glibc-2.90.9/libc/nscd/nscd-client.h:320: undefined reference to
`__sync_fetch_and_add_4'
/jvdspc/jvdsibm/glibc-2.90.9/libc/nscd/nscd_getgr_r.c:321: undefined reference
to `__sync_fetch_and_add_4'
/jvdspc/jvdsibm/glibc-2.90.9/libc/nscd/nscd-client.h:320: undefined reference to
`__sync_fetch_and_add_4'
/jvdspc/jvdsibm/glibc-2.90.9/libc/x86/libc_pic.os:/jvdspc/jvdsibm/glibc-2.90.9/libc/nscd/nscd_gethst_r.c:413:
more undefined references to `__sync_fetch_and_add_4' follow

I think these will go away if I rebuild from scratch with some --with-cpu=i686
or similar argument, no ? So why can't glibc determine the correct 
TLS model to use when given "--enable-tls" and "build=i686-*"  and when
uname -m == 'i686' and its actually running on a genuine i686 ?
Why MUST I use a --with-cpu argument when the above is the case ?

-- 
           Summary: 2.9.90 configure still does not figure out i686 (Pentium
                    i686) without --with-cpu=
           Product: glibc
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: libc
        AssignedTo: drepper at redhat dot com
        ReportedBy: jason dot vas dot dias at gmail dot com
                CC: glibc-bugs at sources dot redhat dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://sourceware.org/bugzilla/show_bug.cgi?id=10060

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]