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]
Other format: [Raw text]

Re: changiing rtld.c


On Tue, Oct 01, 2002 at 03:25:24PM -0700, Aldy Hernandez wrote:
> Hi guys.
> 
> I have a question...
> 
> I'm working on some PPC hacks for glibc, which have triggered a SIGFPE
> in ld.so.1.  Gdbing the process doesn't help because the backtrace
> just takes me back to some unrecognizeable (to me) instructions.
> 
> I'm trying to track down where the SIGFPE got generated.
> 
> So I hacked rtld.c's dl_main() like thus:
> 
>   signal(SIGFPE, myh);
> 
> to catch the signal in myh().  Perhaps I can put a breakpoint on myh()
> and go up the chain that way.  I dunno if this is the appropriate way
> of debugging this sort of thing.
> 
> However, I keep getting:
> 
> 
> /local/aldy/sep-18/glibc/libc_pic.a(init-first.os): In function `init':
> /kermit/source/glibc-2.2.5/csu/../sysdeps/unix/sysv/linux/init-first.c:59: multiple definition of `__libc_multiple_libcs'
> /local/aldy/sep-18/glibc/elf/dl-allobjs.os:/kermit/source/altivec-020216-branch/devo/glibc/elf/../sysdeps/powerpc/dl-machine.h:345: first defined here
> /local/aldy/sep-18/glibc/libc_pic.a(init-first.os): In function `_dl_start':
> /kermit/source/glibc-2.2.5/csu/../sysdeps/unix/sysv/linux/init-first.c:138: multiple definition of `_dl_start'
> /local/aldy/sep-18/glibc/elf/dl-allobjs.os:/kermit/source/altivec-020216-branch/devo/glibc/elf/rtld.c:171: first defined here
> /local/aldy/sep-18/glibc/../tools-install/bin/../lib/gcc-lib/powerpc-unknown-linux-gnu/3.1-altivec-020603/../../../../powerpc-unknown-linux-gnu/bin/ld: Warning: size of symbol `_dl_start' changed from 404 to 16 in /local/aldy/sep-18/glibc/libc_pic.a(init-first.os)
> 
> 
> Hints, tips?  Am I going about it the wrong way?

For the purposes of testing, you could try adding the assembly code
necessary to make the syscall to set a signal handler.  Signal() isn't
in ld.so anywhere.  Thus the link error.

On the other hand, it won't be any more legible than the previous
backtrace was.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


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