This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

cannot install glibc-2.2.3 on Linux/ppc


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]