Compiling glibc-2.15-725b8ee08aff (because that is what openSUSE 12.2 has) on sparc64 (-m64) throws a significant warning that causes rpmlint to abort the entire rpm build in the Build Service. 1. On sparc64, glibc-2.15 attempts to compile wordsize-64/fxstatat.c, which I think is wrong. It should do sysdeps/unix/sysv/linux/sparc/sparc64/fxstatat.c instead. 2. Because it attempts to do sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c instead, it runs into lots of problems: __NR_newfstatat is not defined, because sparc* does not even have that syscall. ares:/usr/include> grep -r __NR_newfstatat . ./asm-powerpc/unistd.h:#define __NR_newfstatat 291 ./asm-ia64/unistd.h:#define __NR_newfstatat 1286 ./asm-generic/unistd.h:#define __NR_newfstatat 1054 ./asm-generic/unistd.h:__SYSCALL(__NR_newfstatat, sys_newfstatat) ./asm-generic/unistd.h:#define __NR_newfstatat __NR3264_fstatat ./asm-x86/unistd_64.h:#define __NR_newfstatat 262 ./asm-x86/unistd_x32.h:#define __NR_newfstatat (__X32_SYSCALL_BIT + 262) ./asm-s390/unistd.h:#define __NR_newfstatat 293 (Headers are from kernel 3.4.0) gcc -m64 interp.c -c -std=gnu99 -fgnu89-inline -O2 -Wall -Winline -Wwrite-strings -fcall-used-g6 -fmerge-all-constants -g -mcpu=ultrasparc -mvis -Wstrict-prototypes -fcall-used-g6 -fPIC -D'RUNTIME_LINKER="/lib64/ld-linux.so.2"' -DNOT_IN_libc=1 -I../include -I/home/abuild/rpmbuild/BUILD/glibc-2.15/cc-base/elf -I/home/abuild/rpmbuild/BUILD/glibc-2.15/cc-base -I../sysdeps/sparc/sparc64/elf -I../sysdeps/sparc/elf -I../nptl/sysdeps/unix/sysv/linux/sparc/sparc64 -I../sysdeps/unix/sysv/linux/sparc/sparc64 -I../sysdeps/unix/sysv/linux/wordsize-64 -I../nptl/sysdeps/unix/sysv/linux/sparc -I../sysdeps/unix/sysv/linux/sparc -I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../sysdeps/unix/sparc -I../nptl/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/sparc/sparc64/fpu -I../sysdeps/sparc/sparc64/multiarch -I../nptl/sysdeps/sparc/sparc64 -I../sysdeps/sparc/sparc64 -I../sysdeps/wordsize-64 -I../sysdeps/ieee754/ldbl-128 -I../sysdeps/ieee754/dbl-64/wordsize-64 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/sparc/sparc64/soft-fp -I../sysdeps/sparc/fpu -I../nptl/sysdeps/sparc -I../sysdeps/sparc -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -I../nptl -I.. -I../libio -I. -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -DSHARED -o /home/abuild/rpmbuild/BUILD/glibc-2.15/cc-base/elf/interp.os -MD -MP -MF /home/abuild/rpmbuild/BUILD/glibc-2.15/cc-base/elf/interp.os.dt -MT /home/abuild/rpmbuild/BUILD/glibc-2.15/cc-base/elf/interp.os In file included from ../sysdeps/unix/sysv/linux/wordsize-64/dl-fxstatat64.c:6:0: ../sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c: In function '__fxstatat': ../sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c:46:7: warning: unused variable 'res' [-Wunused-variable] ../sysdeps/unix/sysv/linux/wordsize-64/fxstatat.c:111:1: warning: control reaches end of non-void function [-Wreturn-type] Since __NR_newfstatat is undefined in that translation unit, this leads to no code being emitted that would return a value.
Jan, there's a glibc 2.16 in the openSUSE Build Service in openSUSE:Factory:Staging:Glibc. Does that one work for you?
glibc-2.16-75f0d3040a2c.tar.xz resolves this issue (but opens a new one, bug #14376)
Jan, I guess you need this commit for 2.15: commit 10f62770e115d9f16a67a974f79fa9b100cf827b Author: David S. Miller <davem@davemloft.net> Date: Tue Mar 13 00:45:34 2012 -0700 Use correct implementation for dl-fxstatat64 on sparc64. * sysdeps/unix/sysv/linux/sparc/sparc64/dl-fxstatat64.c: New file.
That's the one. Big thanks.