Andrew Haley writes:
Andrew Haley writes:
> Andrew Haley writes:
> > Anthony Green writes:
> > > I see the following issues with rawhide (on x86) right now...
> > >
> > > * I'm not getting any stack traces, just <<No stacktrace
available>>
> > >
> > >
> > > * Eclipse fails and the log contains the following errors (with no
> > > stacktraces):
> > >
> > > java.lang.IllegalAccessError:
org.xml.sax.helpers.NamespaceSupport$Context:
org.xml.sax.helpers.NamespaceSupport.EMPTY_ENUMERATION
> > >
> > > java.lang.Exception: Cannot initialize Update Configurator
> > >
> > > java.lang.IllegalStateException: Bundle
initial@reference:file:plugins/org.eclipse.core.runtime_3.1.1.jar/ [1] is not active.
> > >
> > >
> > > * aot-compile-rpm is using -mcpu=i686, but -mcpu is deprecated in GCC
4.1. I can't see where this comes from.
> > >
> > >
> > > Any ideas?
> >
> > gcc is emitting bad unwinder data for some routines. This isn't a bug
> > in the gcc unwinder itself, because gdb has the same problems. Look
> > at Frame 7 and Frame 9:
>
> BTW, I don't have this problem when building gcc from FSF sources.
You'll have to make your window hugely wide to read this mail.
Here's the difference. On the left, we have gcc version 4.1.0 20051212 (prerelease),
on the right we have gcc version 4.1.0 20051214 (Red Hat 4.1.0-0.9)
The one on the right is the one that works.
You'll note that the bad one uses three push instructions and then
sets CFA offset to 12. This is wrong AFAICS: the original CFA offset
at function entry is 4, so if you push three registers, the CFA offset
should be 16. The code on the right subtracts 12 from sp --
allocating three words -- and then sets CFA offset to 16. This one is
correct, and we get a Java stacktrace.
Both built on the same box. However, the 4.1 build was
i686-pc-linux-gnu, and the RPM build was i386-pc-linux-gnu. I'm
guessing that is the *real* difference, and I'm investigating building
4.1 branch with host=i386-pc-linux-gnu.
And here is 4.1 branch built with i386-pc-linux-gnu. And guess what!
It's just as bad as the Fedora RPM. OK, so I'm now going to go
digging into the DWARF output routines to see if I can discover the
root cause of this insanity.
Andrew.
00a326a8 <java.lang.Throwable.Throwable(java.lang.String)>:
a326a8: 56 push %esi
a326a9: 53 push %ebx
a326aa: 50 push %eax
a326ab: e8 00 00 00 00 call a326b0
<java.lang.Throwable.Throwable(java.lang.String)+0x8>
a326b0: 5b pop %ebx
a326b1: 81 c3 34 ee 6a 00 add $0x6aee34,%ebx
a326b7: 8b 74 24 10 mov 0x10(%esp),%esi
a326bb: 89 34 24 mov %esi,(%esp)
a326be: e8 7d f6 dd ff call 811d40
<java.lang.Object.Object()@plt>
a326c3: 89 34 24 mov %esi,(%esp)
a326c6: e8 a5 8a dc ff call 7fb170
<java.lang.Throwable.finit$()@plt>
a326cb: 8b 06 mov (%esi),%eax
a326cd: 89 34 24 mov %esi,(%esp)
a326d0: ff 50 3c call *0x3c(%eax)
a326d3: 8b 44 24 14 mov 0x14(%esp),%eax
a326d7: 89 46 04 mov %eax,0x4(%esi)
a326da: 5e pop %esi
a326db: 5b pop %ebx
a326dc: 5e pop %esi
a326dd: c3 ret
a326de: 89 f6 mov %esi,%esi
00058d50 0000001c 00032528 FDE cie=0002682c pc=00a326a8..00a326de
Augmentation data: 00 00 00 00
DW_CFA_advance_loc: 1 to 00a326a9
DW_CFA_def_cfa_offset: 8
DW_CFA_advance_loc: 1 to 00a326aa
DW_CFA_def_cfa_offset: 12
DW_CFA_offset: r3 at cfa-12
DW_CFA_offset: r6 at cfa-8
00058d50 0000001c 00032528 FDE cie=0002682c pc=00a326a8..00a326de
LOC CFA r3 r6 ra
00a326a8 r4+4 u u c-4
00a326a9 r4+8 u u c-4
00a326aa r4+12 c-12 c-8 c-4