Hi Andrew,> pthread_cleanup_pop() is nothing special, it's just an example of a > cleanup handler. Cleanups are very similar to exception handlers, but > with one small difference: they do some work and then call > _Unwind_Resume() which continues unwinding. The unwinder itself > doesn't know anything about pthread cleanups, it just executes > whatever is at the landing pad.cleanups are turned into invoke + (cleanup code) + _Unwind_Resume by llvm-gcc. Ciao, Duncan.
Duncan Sands wrote:>> pthread_cleanup_pop() is nothing special, it's just an example of a >> cleanup handler. Cleanups are very similar to exception handlers, but >> with one small difference: they do some work and then call >> _Unwind_Resume() which continues unwinding. The unwinder itself >> doesn't know anything about pthread cleanups, it just executes >> whatever is at the landing pad. > > cleanups are turned into invoke + (cleanup code) + _Unwind_Resume by > llvm-gcc.Yes. Wasn't that obvious? Sorry, I don't understand what point you're trying to make. Andrew.
> Yes. Wasn't that obvious? Sorry, I don't understand what point you're > trying to make.I noticed that some people (not you) seem to think that the dwarf unwinder knows special things about signals, pthread_cleanup_pop and whatnot. I was just trying to say that it does not: all this stuff is covered by the standard exception handling concepts. Ciao, Duncan