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]

exception handling on VxWorks using unwind



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)


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