This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
cannot install glibc-2.2.3 on Linux/ppc
- To: libc-alpha at sourceware dot cygnus dot com
- Subject: cannot install glibc-2.2.3 on Linux/ppc
- From: Christian Groessler <cpg at aladdin dot de>
- Date: 17 May 2001 12:44:15 +0200
- Cc: cpg at aladdin dot de
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.
regards,
chris