mips linux glibc-2.3.3 build - Unknown ABI problem
Hi,
When I try to build glibc-2.3.3 on mips linux - it breaks as shown below:
.
.
.
sara@eyeore: [over] ~/build/glibc/objdir3$ make
make -r PARALLELMFLAGS="" CVSOPTS="" -C ../glibc-2.3.3 objdir=pwd all make[1]: Entering directory `/home/sara/build/glibc/glibc-2.3.3' make -C csu subdir_lib
.
.
.
make -C gmon subdir_lib
make[2]: Entering directory /home/sara/build/glibc/glibc-2.3.3/gmon' make[2]: Leaving directory /home/sara/build/glibc/glibc-2.3.3/gmon' make[2]: Entering directory `/home/sara/build/glibc/glibc-2.3.3/gmon'
gcc -mabi=32 mcount.c -c -std=gnu99 -O2 -Wall -Winline -Wstrict-prototypes -Wwrite-strings -g -mips32 -fno-omit-frame-pointer -I../include -I. -I/home/sara/build/glibc/objdir3/gmon -I.. -I../libio -I/home/sara/build/glibc/objdir3 -I../sysdeps/mips/elf -I../linuxthreads/sysdeps/unix/sysv/linux/mips -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/mips -I../sysdeps/unix/sysv/linux/mips/mips32 -I../sysdeps/unix/sysv/linux/mips -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/mips/mips32 -I../sysdeps/unix/mips -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/mips/mips32 -I../sysdeps/mips -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/wordsize-32 -I../sysdeps/mips/fpu -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /home/sara/usr/local/lib/gcc/mipsel-unknown-linux-gnu/3.4.2/include -isystem /home/sara/build/linux/linux-2.4.25mips/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -o /home/sara/build/glibc/objdir3/gmon/mcount.o -MD -MP -MF /home/sara/build/glibc/objdir3/gmon/mcount.o.dt
In file included from mcount.c:40:../sysdeps/mips/machine-gmon.h:91:3: #error "Unknown ABI" mcount.c:180: error: parse error before "PTR_SUBU_STRING" make[2]: *** [/home/sara/build/glibc/objdir3/gmon/mcount.o] Error 1 make[2]: Leaving directory `/home/sara/build/glibc/glibc-2.3.3/gmon' make[1]: *** [gmon/subdir_lib] Error 2
make[1]: Leaving directory `/home/sara/build/glibc/glibc-2.3.3'
make: *** [all] Error 2
System details:
Host type: mipsel-unknown-linux-gnu
System: Linux eyeore 2.4.25 #20 Wed Sep 29 09:01:29 IST 2004 mips unknown
Architecture: mips
Addons: linuxthreads
Build CFLAGS: -mips32 -O2 -g
Build CC: gcc
Compiler version: 3.4.2
Kernel headers: 2.4.25
Symbol versioning: yes
Build static: yes
Build shared: yes
Build pic-default: yes
Build profile: yes
Build omitfp: no
Build bounded: no
Build static-nss: no
sara@eyeore: [over] ~/tmp$ cat /proc/cpuinfo
system type : ITE QED-4N-S01B
processor : 0
cpu model : Nevada V3.1 FPU V3.0
BogoMIPS : 299.00
wait instruction : yes
microsecond timers : yestlb_entries : 48
extra interrupt vector : yes
hardware watchpoint : no
VCED exceptions : not available
VCEI exceptions : not available
sara@eyeore: [over] ~/tmp$
Some experimentation with "gcc -E" revealed that in the compiler I am using (by default),
_MIPS_SIM is set to 1_ABI032 is set to 1_ABIN32 is not defined_ABI64 is not defined
I tried compiling a "hello world" program with "gcc -mabi=32" and it works.
If I try "gcc -mabi=n32" it breaks at the linking stage as below:
sara@eyeore: [over] ~/tmp$ gcc -mabi=n32 -o v v.c /home/sara/usr/local/lib/gcc/mipsel-unknown-linux-gnu/3.4.2/../../../../mipsel-unknown-linux-gnu/bin/ld: /tmp/ccnz0jlk.o: ABI is incompatible with that of the selected emulation /home/sara/usr/local/lib/gcc/mipsel-unknown-linux-gnu/3.4.2/../../../../mipsel-unknown-linux-gnu/bin/ld: failed to merge target specific data of file /tmp/ccnz0jlk.o /home/sara/usr/local/lib/gcc/mipsel-unknown-linux-gnu/3.4.2/../../../../mipsel-unknown-linux-gnu/bin/ld: BFD 2.15 assertion fail elfxx-mips.c:1899
collect2: ld returned 1 exit status
sara@eyeore: [over] ~/tmp$
What should I do to fix the build?
-Saravanan.
Quoted 110 lines · T. P. Saravanan
Hi,
When I try to build glibc-2.3.3 on mips linux - it breaks as shown below:
.
.
.
sara@eyeore: [over] ~/build/glibc/objdir3$ make
make -r PARALLELMFLAGS="" CVSOPTS="" -C ../glibc-2.3.3 objdir=pwdall make[1]: Entering directory `/home/sara/build/glibc/glibc-2.3.3' make -C csusubdir_lib
.
.
.
make -C gmonsubdir_lib
make[2]: Entering directory/home/sara/build/glibc/glibc-2.3.3/gmon' make[2]: Leaving directory/home/sara/build/glibc/glibc-2.3.3/gmon' make[2]: Entering directory `/home/sara/build/glibc/glibc-2.3.3/gmon' gcc -mabi=32mcount.c-c -std=gnu99 -O2 -Wall -Winline(quoted diff) +0
-17-Wstrict-prototypes -Wwrite-strings -g -mips32 -fno-omit-frame-pointer -I../include -I. -I/home/sara/build/glibc/objdir3/gmon -I.. -I../libio -I/home/sara/build/glibc/objdir3 -I../sysdeps/mips/elf -I../linuxthreads/sysdeps/unix/sysv/linux/mips -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/mips -I../sysdeps/unix/sysv/linux/mips/mips32 -I../sysdeps/unix/sysv/linux/mips -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/mips/mips32 -I../sysdeps/unix/mips -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/mips/mips32 -I../sysdeps/mips -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/wordsize-32 -I../sysdeps/mips/fpu -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem
/home/sara/usr/local/lib/gcc/mipsel-unknown-linux-gnu/3.4.2/include(quoted diff) +0
-2-isystem /home/sara/build/linux/linux-2.4.25mips/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -o
/home/sara/build/glibc/objdir3/gmon/mcount.o-MD -MP -MF/home/sara/build/glibc/objdir3/gmon/mcount.o.dt
In file included from mcount.c:40:../sysdeps/mips/machine-gmon.h:91:3: #error "Unknown ABI" mcount.c:180: error: parse error before "PTR_SUBU_STRING" make[2]: *** [/home/sara/build/glibc/objdir3/gmon/mcount.o] Error 1 make[2]: Leaving directory `/home/sara/build/glibc/glibc-2.3.3/gmon' make[1]: *** [gmon/subdir_lib] Error 2
make[1]: Leaving directory `/home/sara/build/glibc/glibc-2.3.3'
make: *** [all] Error 2System details:
Host type: mipsel-unknown-linux-gnu
System: Linux eyeore 2.4.25 #20 Wed Sep 29 09:01:29 IST 2004 mips unknown
Architecture: mipsAddons: linuxthreads
Build CFLAGS: -mips32 -O2 -g
Build CC: gcc
Compiler version: 3.4.2
Kernel headers: 2.4.25
Symbol versioning: yes
Build static: yes
Build shared: yes
Build pic-default: yes
Build profile: yes
Build omitfp: no
Build bounded: no
Build static-nss: nosara@eyeore: [over] ~/tmp$ cat
/proc/cpuinfo
system type : ITE QED-4N-S01B
processor : 0
cpu model : Nevada V3.1 FPU V3.0
BogoMIPS : 299.00
wait instruction : yes
microsecond timers : yestlb_entries: 48
extra interrupt vector : yes
hardware watchpoint : no
VCED exceptions : not available
VCEI exceptions : not available
sara@eyeore: [over] ~/tmp$Some experimentation with "gcc -E" revealed that in the compiler I am using (by default),
_MIPS_SIMis set to 1_ABI032is set to 1_ABIN32is not defined_ABI64is not definedI tried compiling a "hello world" program with "gcc -mabi=32" and it works.
If I try "gcc -mabi=n32" it breaks at the linking stage as below:
sara@eyeore: [over] ~/tmp$ gcc -mabi=n32 -o v
v.c/home/sara/usr/local/lib/gcc/mipsel-unknown-linux-gnu/3.4.2/../../../../mipsel-unknown-linux-gnu/bin/ld:/tmp/ccnz0jlk.o: ABI is incompatible with that of the selected emulation/home/sara/usr/local/lib/gcc/mipsel-unknown-linux-gnu/3.4.2/../../../../mipsel-unknown-linux-gnu/bin/ld:
failed to merge target specific data of file/tmp/ccnz0jlk.o/home/sara/usr/local/lib/gcc/mipsel-unknown-linux-gnu/3.4.2/../../../../mipsel-unknown-linux-gnu/bin/ld:
BFD 2.15 assertion fail elfxx-mips.c:1899
collect2: ld returned 1 exit status
sara@eyeore: [over] ~/tmp$
Quoted 1 line
What should I do to fix the build?
get the most recent machine-gmon.h from glibc CVS.
You will probably find a problem linking libc at a later step. But the newer machine-gmon.h will fix this problem.
I have sucessfully build with gcc-3.3.1, still working on 3.4.2
David Daney.
Quoted 10 lines · David Daney
Quoted 3 lines
What should I do to fix the build?
get the most recent
machine-gmon.hfrom glibc CVS.You will probably find a problem linking libc at a later step. But the newer
machine-gmon.hwill fix this problem.
OK. That worked. Thanks a lot.
(But now there are some assembler errors in rtld.c. It seems like an unrelated problem - so I will post that seperately.)
Quoted 3 lines
I have sucessfully build with gcc-3.3.1, still working on 3.4.2
Ah! Nice to know that. Do you by any chance have the diffs (against ftp://ftp.gnu.org/glibc/glibc-2.3.3...). If so, can you send it to me?
Quoted 3 lines
David Daney.
Thanks again,
Saravanan.
Quoted 6 lines · T. P. Saravanan
Quoted 4 lines · David Daney
Quoted 2 lines
What should I do to fix the build?
Quoted 8 lines
Quoted 6 lines
get the most recent
machine-gmon.hfrom glibc CVS.You will probably find a problem linking libc at a later step. But the newer
machine-gmon.hwill fix this problem.OK. That worked. Thanks a lot.
Oops! I will take that back. I suspect it is not working.
When you said CVS I assumed the one in http://linux-mips/cvsweb/libc. On closer
look it looks very old. From discussions in another thread I gather CVS means http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/?cvsroot=glibc. (Correct me if this is wrong.) If I take the machine-gmon.h from here - It still has the
same problem :-(
-Saravanan.
Quoted 15 lines · T. P. Saravanan
Quoted 13 lines · T. P. Saravanan
Quoted 11 lines · David Daney
Quoted 2 lines
What should I do to fix the build?
get the most recent
machine-gmon.hfrom glibc CVS.You will probably find a problem linking libc at a later step. But the newer
machine-gmon.hwill fix this problem.
Quoted 9 lines
Quoted 2 lines
OK. That worked. Thanks a lot.
Oops! I will take that back. I suspect it is not working.
When you said CVS I assumed the one in http://linux-mips/cvsweb/libc. On closer
look it looks very old. From discussions in another thread I gather CVS means http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/?cvsroot=glibc. (Correct me if this is wrong.) If I take themachine-gmon.hfrom here - It still has the
same problem :-(
Correction Again: It works. I got the machine-gmon.h and builds all mixed up. I did a fresh compile and it went past this point.
[Sorry for all the confusion. I will post more carefully in future.]
-Sa.