This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: cannot install glibc-2.2.3 on Linux/ppc
- To: Christian Groessler <cpg at aladdin dot de>
- Subject: Re: cannot install glibc-2.2.3 on Linux/ppc
- From: Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>
- Date: Thu, 17 May 2001 12:55:01 +0200
- Cc: libc-alpha at sourceware dot cygnus dot com,cpg at aladdin dot de
At 12:44 17.05.2001, Christian Groessler wrote:
>Hi,
>
>I tried to install glibc-2.2.3 on a debian 2.2 potato ppc system.
>
>The final installation fails, since the elf/sln program segfaults.
>
>Here is a gdb trace:
>
>
>[muc-twinppc:/local/glibc-build2]$ gdb elf/sln
>GNU gdb 4.18
>Copyright 1998 Free Software Foundation, Inc.
>GDB is free software, covered by the GNU General Public License, and you are
>welcome to change it and/or distribute copies of it under certain conditions.
>Type "show copying" to see the conditions.
>There is absolutely no warranty for GDB. Type "show warranty" for details.
>This GDB was configured as "powerpc-unknown-linux-gnu"...
>(gdb) break atexit
>Breakpoint 1 at 0x100008a8: file atexit.c, line 31.
>(gdb) r
>Starting program: /local/glibc-build2/elf/sln
>
>Breakpoint 1, atexit (func=0x1004d4d0 <_fini>) at atexit.c:31
>31 return __cxa_atexit ((void (*) (void *)) func, NULL,
>(gdb) x/10i $pc
>0x100008a8 <atexit+12>: lis r9,0
>0x100008ac <atexit+16>: addi r0,r9,0
>0x100008b0 <atexit+20>: lwz r11,0(r9)
>0x100008b4 <atexit+24>: srawi r9,r0,31
>0x100008b8 <atexit+28>: xor r5,r9,r0
>0x100008bc <atexit+32>: subf r5,r5,r9
>0x100008c0 <atexit+36>: srawi r5,r5,31
>0x100008c4 <atexit+40>: and r5,r11,r5
>0x100008c8 <atexit+44>: li r4,0
>0x100008cc <atexit+48>: bl 0x100008e0 <__cxa_atexit>
>(gdb) stepi
>0x100008ac 31 return __cxa_atexit ((void (*) (void *)) func, NULL,
>(gdb)
>0x100008b0 31 return __cxa_atexit ((void (*) (void *)) func, NULL,
>(gdb)
>
>Program received signal SIGSEGV, Segmentation fault.
>0x100008b0 in atexit (func=0x1004d4d0 <_fini>) at atexit.c:31
>31 return __cxa_atexit ((void (*) (void *)) func, NULL,
>(gdb) inf reg r9
>r9 0x0 0
>(gdb)
>
>
>The offending part in stdlib/atexit.c is this:
>
>int
>atexit (void (*func) (void))
>{
> return __cxa_atexit ((void (*) (void *)) func, NULL,
> &__dso_handle == NULL ? NULL : __dso_handle);
>}
>
>
>It seems the &__dso_handle == NULL check isn't performed by the
>compiler.
>I tried with gcc-2.95.2 (which comes with debian) and 2.95.3.
Since you are on debian, use the latest debian gcc-2.95.4. Or, if you
compile gcc yourself, use the gcc-2_95-branch of the gcc CVS and apply
<ftp://devel.linuxppc.org:21/users/fsirl/cvs-2_95-branch-ppc.diff>. The
latest gcc-3.0 snapshots will work too.
Franz.