Re: (libgcc) what does _Unwind_Resume do ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2007-10-20 at 19:23 +0100, Andrew Haley wrote:
> Sunzir Deepur writes:
>  > Hi Andrew,
>  > 
>  > On 10/20/07, Andrew Haley <aph-gcc@xxxxxxxxxxxxxxxxxxx> wrote:
>  > > Sunzir Deepur writes:
>  > >  > I have noticed that glibc has extensive use of the _Unwind_Resume procedure
>  > >  > Can anyone please explain me what is it ? why is it needed for C programs
>  > >
>  > > It's needed for pthread_cancel.
>  > > It resumes unwinding after a cleanup.
>  > >
>  > > http://www.codesourcery.com/cxx-abi/abi-eh.html
>  > > http://www.mit.edu/~sipb-iap/2004/inside-c/day3/exceptions.html
>  > 
>  > Is the winding relevant only to C++ exception catching ?
>  > If so, why would it be needed when compiling simple C apps ?
> 
> I don't know that it is.
> 

The compiler is not going to make a special case for a single file
C application not using any standard libraries. In all other cases,
the compiler must assume it is compiling only *part* of a possibly
multi-lingual program. Even the linker may be linking only part
of a program, given the existence of shared libraries.

Therefore the exception handling mechanism is unified according
to a binary, platform dependent, ABI (Application Binary Interface)
which is designed to handle C, C++, Java, and other languages
co-existing. You can think of this as a low level '.NET'
or 'virtual machine' at the machine code level.

In that model, C or C++ are merely 'front ends' and the exception
handling architecture exists, even for C. After all we want things
to work right with mixed C/C++ programs.

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux