This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
exception handling on VxWorks using unwind
- To: <egcs at egcs dot cygnus dot com>
- Subject: exception handling on VxWorks using unwind
- From: "Don Bowman" <don at pixstream dot com>
- Date: Sun, 21 Feb 1999 12:28:21 -0500
I'm trying to understand how to hook the
C++ exception handling using the dwarf unwind
code into WindRiver's VxWorks [on MIPS].
We're currently using setjmp/longjmp with no
problems (except size & performance).
For those not familiar, VxWorks runs a fully-linked
'kernel' with which the application is commmonly
linked. Dynamic-loading is used to add new objects
at run time. These objects are relocatable linked,
and loaded by an ELF loaded in the OS. The OS doesn't
support the crtbegin/crtend stuff, instead it has
a program called 'munch', which does essentially the
same thing as collect2, making a struct of global constructors
which are run at load time.
I can see from crtbegin that there is a register_frame type
function I should call.
I can see from the elf object emitted from ld that there
is a gcc_except_table section.
What is the pointer 'begin' that is passed to the register_frame
function?
Are there any assumptions made by the unwind code that the
object is mapped directly to memory as in Unix? The .data & .text
section will not be contiguous for me in the relocatable case
as they are obtained via malloc.
Any help, suggestions, or explanations would be greatly appreciated.
--don bowman (don@pixstream.com)