I'm using gcc 4.2.2, binutils 2.18, and configure like this: $ cd build && CFLAGS="-pipe -Os" ../configure --prefix=/usr --disable-profile --enable-add-ons --without-cvs --with-tls --enable-stackguard-randomization These are the last build lines: make[2]: Leaving directory `/tmp/glibc-2.7/elf' cd /tmp/glibc-2.7/build && ar cruv libc.a `cat csu/stamp.o iconv/stamp.o iconvdata/stamp.o locale/stamp.o localedata/stamp.o assert/stamp.o ctype/stamp.o intl/stamp.o catgets/stamp.o math/stamp.o setjmp/stamp.o signal/stamp.o stdlib/stamp.o stdio-common/stamp.o libio/stamp.o dlfcn/stamp.o malloc/stamp.o string/stamp.o wcsmbs/stamp.o timezone/stamp.o time/stamp.o dirent/stamp.o grp/stamp.o pwd/stamp.o posix/stamp.o io/stamp.o termios/stamp.o resource/stamp.o misc/stamp.o socket/stamp.o sysvipc/stamp.o gmon/stamp.o gnulib/stamp.o wctype/stamp.o manual/stamp.o shadow/stamp.o po/stamp.o argp/stamp.o crypt/stamp.o nptl/stamp.o resolv/stamp.o nss/stamp.o rt/stamp.o conform/stamp.o debug/stamp.o libidn/stamp.o nptl_db/stamp.o inet/stamp.o hesiod/stamp.o sunrpc/stamp.o nis/stamp.o nscd/stamp.o streams/stamp.o login/stamp.o elf/stamp.o stamp.o` r - locale/C-ctype.o r - misc/lseek.o : /tmp/glibc-2.7/build/libc.a /opt/gcc/bin/gcc -nostdlib -nostartfiles -r -o /tmp/glibc-2.7/build/libc_pic.os \ -Wl,-d -Wl,--whole-archive /tmp/glibc-2.7/build/libc_pic.a /opt/gcc/bin/gcc -shared -static-libgcc -Wl,-O1 -Wl,-z,defs -Wl,-dynamic-linker=/lib64/ld-linux-x86-64.so.2 -B/tmp/glibc-2.7/build/csu/ -Wl,--version-script=/tmp/glibc-2.7/build/libc.map -Wl,-soname=libc.so.6 -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -nostdlib -nostartfiles -e __libc_main -L/tmp/glibc-2.7/build -L/tmp/glibc-2.7/build/math -L/tmp/glibc-2.7/build/elf -L/tmp/glibc-2.7/build/dlfcn -L/tmp/glibc-2.7/build/nss -L/tmp/glibc-2.7/build/nis -L/tmp/glibc-2.7/build/rt -L/tmp/glibc-2.7/build/resolv -L/tmp/glibc-2.7/build/crypt -L/tmp/glibc-2.7/build/nptl -Wl,-rpath-link=/tmp/glibc-2.7/build:/tmp/glibc-2.7/build/math:/tmp/glibc-2.7/build/elf:/tmp/glibc-2.7/build/dlfcn:/tmp/glibc-2.7/build/nss:/tmp/glibc-2.7/build/nis:/tmp/glibc-2.7/build/rt:/tmp/glibc-2.7/build/resolv:/tmp/glibc-2.7/build/crypt:/tmp/glibc-2.7/build/nptl -o /tmp/glibc-2.7/build/libc.so -T /tmp/glibc-2.7/build/shlib.lds /tmp/glibc-2.7/build/csu/abi-note.o /tmp/glibc-2.7/build/elf/soinit.os /tmp/glibc-2.7/build/libc_pic.os /tmp/glibc-2.7/build/elf/sofini.os /tmp/glibc-2.7/build/elf/interp.os /tmp/glibc-2.7/build/elf/ld.so -lgcc /tmp/glibc-2.7/build/libc_pic.os: In function `faccessat': (.text+0x82aea): undefined reference to `fstatat64' collect2: ld returned 1 exit status make[1]: *** [/tmp/glibc-2.7/build/libc.so] Error 1 make[1]: Leaving directory `/tmp/glibc-2.7' make: *** [all] Error 2 $ grep -lr fstatat64 . ./libc_pic.os ./libc.a ./libc_pic.a ./libc_nonshared.a ./io/fstatat64.o.d ./io/fstatat64.oS.d ./io/stamp.oS ./io/fstatat64.oS ./io/faccessat.os ./io/stamp.o ./io/faccessat.o ./io/fstatat64.o $ grep -lr fstatat64 io | xargs -n1 nm nm: io/fstatat64.o.d: File format not recognized nm: io/fstatat64.oS.d: File format not recognized nm: io/stamp.oS: File format not recognized U _GLOBAL_OFFSET_TABLE_ U __fxstatat64 0000000000000000 T fstatat64 U _GLOBAL_OFFSET_TABLE_ U __atfct_seterrno U __getegid U __geteuid U __getgid U __getuid U __group_member U __have_atfcts U __libc_enable_secure U __libc_errno U __snprintf 0000000000000000 T faccessat U fstatat64 0000000000000000 r procfd.7014 nm: io/stamp.o: File format not recognized U _GLOBAL_OFFSET_TABLE_ U __atfct_seterrno U __getegid U __geteuid U __getgid U __getuid U __group_member U __have_atfcts U __libc_enable_secure U __libc_errno U __snprintf 0000000000000000 T faccessat U fstatat64 0000000000000000 r procfd.6816 U __fxstatat64 0000000000000000 T fstatat64 $
This is a bad interaction between compiler and library. -Os does not inline all cases and we need those inlined. I advise to use the default compile flags.
OK, will try -O2 then. Thanks for the help!
I know this is marked as WONTFIX, but just for reference, this can be fixed so it does compile with -Os, simply by unapplying this commit: http://sourceware.org/cgi-bin/cvsweb.cgi/libc/io/sys/stat.h.diff?r1=1.56&r2=1.57&cvsroot=glibc