[Fwd: Re: [parisc-linux] Re: gcj can't make shared libs on hppa]
John David Anglin
dave at hiauly1.hia.nrc.ca
Tue Mar 7 17:36:13 MST 2006
> > I was too hasty in calling this a linker bug. We end up with the
> > following relocations in the shared library as a result of the above
> > relocation in the object file:
> >
> > 00010f34 R_PARISC_PLABEL32 *ABS*+0x00010f46
> > 00010f44 R_PARISC_IPLT *ABS*+0x000009a8
> >
> > The reason for the segmentation fault is the R_PARISC_IPLT isn't
> > being handled correctly and the indirect call to the constructor
> > for the library branches to the wrong location.
>
> Can you explain what is broken?
If I knew that, I probably would have fixed the problem ;(
> Where does it branch to?
(gdb) stepi
0x400abb94 in __do_global_ctors_aux () from ./liba1.so.0
(gdb)
0x400ab9c4 in $$dyncall () from ./liba1.so.0
(gdb)
0x400ab9c4 in $$dyncall () from ./liba1.so.0
(gdb)
0x400ab9d4 in $$dyncall () from ./liba1.so.0
(gdb)
0x400ab9d8 in $$dyncall () from ./liba1.so.0
(gdb)
0x08000240 in ?? ()
(gdb) stepi
Program received signal SIGSEGV, Segmentation fault.
0x08000240 in ?? ()
Starting program: /home/dave/gcc_test/main
[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 29346)]
[Switching to Thread 16384 (LWP 29346)]
Breakpoint 3, 0x400abb90 in __do_global_ctors_aux () from ./liba1.so.0
(gdb) p/x $r22
$3 = 0x8000240
This is just before the call to $$dyncall. As can be seen, $r22
doesn't point to a function descriptor. There doesn't seem to be
a function at 0x8000240.
Dave
--
J. David Anglin dave.anglin at nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)
More information about the parisc-linux
mailing list