Java broken after i386 PIC change

Bryce McKinlay bryce@albatross.co.nz
Sat Jan 20 19:58:00 GMT 2001


Richard Henderson wrote:

> I don't see how -- there are no regressions in make check for
> either libjava or libstdc++.  And both excercise their respective
> shared libraries.

So, are you saying that Java is working for you on x86, with the current tree?
Interesting.

> You'll have to give me a better bug report than this if
> you expect me to look into it at all.

I currently have two installed gcc trees on my Red Hat 6.2 system (glibc
2.1.3-22) which were built from exactly the same source (cvs from earlier
today), including libstdc++-v3 and libgcj, except in one of them I reverted
this patch (which I will attach just to make sure that we're talking about the
same thing here.)

The tree with the patch reverted works fine. The unmodified tree crashes on
any attempt to run a Java program, in __register_frame_info(). See stack trace
in previous message.

Looking at a dump of the __register_frame_info() function in gdb, we can see a
problem:

Dump of assembler code for function __register_frame_info:
0x804aa90 <__register_frame_info>:      push   %ebp
0x804aa91 <__register_frame_info+1>:    mov    %esp,%ebp
0x804aa93 <__register_frame_info+3>:    push   %edi
0x804aa94 <__register_frame_info+4>:    push   %esi
0x804aa95 <__register_frame_info+5>:    push   %ebx
0x804aa96 <__register_frame_info+6>:    sub    $0xc,%esp
0x804aa99 <__register_frame_info+9>:    call   0x0      <---- eh?
0x804aa9e <__register_frame_info+14>:   add    $0x29b2,%ebx
0x804aaa4 <__register_frame_info+20>:   mov    0xc(%ebp),%esi
0x804aaa7 <__register_frame_info+23>:   lea    0xfffff9e0(%ebx),%edi

while in the working tree, it looks like this:

(gdb) disass
Dump of assembler code for function __register_frame_info:
0x804aa90 <__register_frame_info>:      push   %ebp
0x804aa91 <__register_frame_info+1>:    mov    %esp,%ebp
0x804aa93 <__register_frame_info+3>:    push   %edi
0x804aa94 <__register_frame_info+4>:    push   %esi
0x804aa95 <__register_frame_info+5>:    push   %ebx
0x804aa96 <__register_frame_info+6>:    sub    $0xc,%esp
0x804aa99 <__register_frame_info+9>:    call   0x804a600 <fde_merge+208>
0x804aa9e <__register_frame_info+14>:   add    $0x29b2,%ebx
0x804aaa4 <__register_frame_info+20>:   mov    0xc(%ebp),%esi
0x804aaa7 <__register_frame_info+23>:   lea    0xfffff9e0(%ebx),%edi

Several other Java hackers have reported that they're also seeing this, so I
think that rules out anything silly I might have done locally.

regards

  [ bryce ]



More information about the Gcc-bugs mailing list