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