This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


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

Re: DWARF2 EH for Linux/Alpha


Thanks for looking into egcs for Linux/Alpha. I have so far been
unsuccessful in getting omniORB2 to run on Linux/Alpha. Different snapshots
seem to manifest different problems. The latest one I tried pre-egcs1.1
980824 again behaves differently. A simple omniORB2 example core dump in
the global ctors.

It seems to me there are problems with the compiler and with binutils.
If you are looking for a substantial test case for multithreaded EH, please
try building and running the latest omniORB2 snapshot:

     http://www.orl.co.uk/omniORB/snapshots/snapshot_980827.tar.gz

After I build the examples, running src/examples/echo/eg1 gives me this
SEGV:

(gdb) where
#0  0x20000503be8 in __pthread_getspecific (key=0) at specific.c:123
#1  0x200003efdac in eh_context_specific ()
#2  0x200003efd2c in eh_context_initialize ()
#3  0x200003efbfc in __get_eh_context ()
#4  0x200003ec9dc in omni_thread::init_t::init_t (this=0x2000072d6f8)
    at /project/omni/version5.5/src/lib/omnithread/sharedlib/../posix.cc:267
#5  0x20000621384 in global constructors keyed to gateKeeper::version ()
    at /project/omni/version5.5/include/omnithread.h:500
#6  0x2000062aa18 in __do_global_ctors_aux () at ./config/alpha/crtend.asm:88
#7  0x2000061b38c in _init ()
(gdb) 

Notice that a simple omni_thread runs without any problem.

My platform is binutils-2.9.1.0.7, egcs-980824.

Regards,

Sai-Lai


>>>>> H J Lu writes:

> I managed to get DWARF2 EH working on Linux/Alpha for egcs in CVS on
> 980828 17:45pm PST. But libio is miscompiled by the new egcs. I don't
> know if it is caused by the bug in egcs or my patch. Has anyone checked
> egcs in CVS on Linux/Alpha?

> While working on DWARF2 EH for Linux/Alpha, I found several problems:

> 1. gas in binutils 2.9.1 mis-optimizes the DWARF2 frame information
>    on Linux/Alpha. I don't think it handles alignment right. I will
>    try to fix it.
> 2. __builtin_fp returns frame_pointer_rtx. On Linux/Alpha, it is a
>    pseudo register. I had to change it to hard_frame_pointer_rtx.
> 3. __throw in libgcc2.c doesn't work with return address register.
>    I don't know if my fix is correct or not.

> Since egcs in CVS is not be stable, I will port my change to egcs 1.1
> to see if it really works. With DWARF2 EH, we will get MT safe EH
> on Linux/Alpha.




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