I assume this "CantUnwind table" is not the same as Unwind table index '.ARM.exidx' at offset 0x818 contains 4 entries: 0x5d4 <main>: 0x1 [cantunwind] because the latter prevent any unwinding, breaking debuggers/profilers/sanitizers. As I understand, the right way to enable basic unwind through any function (without emitting landing pands etc, unless they are needed for something else) is -funwind-tables. I'm going to add that in the driver for all sanitizers then. On Tue, Feb 11, 2014 at 6:20 PM, Renato Golin <renato.golin at linaro.org> wrote:> On 11 February 2014 14:12, Rafael EspĂndola <rafael.espindola at gmail.com> wrote: >> Why fails? I would read a "generate a CantUnwind table" as a table >> that a debugger or profiler can use, but lacks information to allow an >> exception to be handled. > > Right, I was assuming CantUnwind was interpreted as is by debug and > profilers. If CantUnwind is *only* blocking EH, than it looks good. > > Let Keith's patch go in and I'll have a go trying to merge the two. > > Thanks, > --renato > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
On 13 February 2014 11:35, Evgeniy Stepanov <eugenis at google.com> wrote:> Unwind table index '.ARM.exidx' at offset 0x818 contains 4 entries: > 0x5d4 <main>: 0x1 [cantunwind]This is exactly what I meant.> because the latter prevent any unwinding, breaking > debuggers/profilers/sanitizers.In that case, my argument stands again.> As I understand, the right way to enable basic unwind through any > function (without emitting landing pands etc, unless they are needed > for something else) is -funwind-tables. I'm going to add that in the > driver for all sanitizers then.-funwind-tables are not yet understood by ARM, but it is for Dwarf EH. I plan on moving ARM to the same style as Dwarf, so you can assume it is correct. cheers, --renato
On Thu, Feb 13, 2014 at 5:39 PM, Renato Golin <renato.golin at linaro.org> wrote:> On 13 February 2014 11:35, Evgeniy Stepanov <eugenis at google.com> wrote: >> Unwind table index '.ARM.exidx' at offset 0x818 contains 4 entries: >> 0x5d4 <main>: 0x1 [cantunwind] > > This is exactly what I meant. > > >> because the latter prevent any unwinding, breaking >> debuggers/profilers/sanitizers. > > In that case, my argument stands again. > > >> As I understand, the right way to enable basic unwind through any >> function (without emitting landing pands etc, unless they are needed >> for something else) is -funwind-tables. I'm going to add that in the >> driver for all sanitizers then. > > -funwind-tables are not yet understood by ARM, but it is for Dwarf EH. > I plan on moving ARM to the same style as Dwarf, so you can assume it > is correct.Hm, I see that -funwind-tables on arm-linux-androideabi target replaces this "cantunwind" with a proper unwind table. Hence http://llvm-reviews.chandlerc.com/D2762.
Reasonably Related Threads
- [LLVMdev] [cfe-dev] Unwind behaviour in Clang/LLVM
- [LLVMdev] [cfe-dev] Unwind behaviour in Clang/LLVM
- [LLVMdev] [cfe-dev] Unwind behaviour in Clang/LLVM
- [LLVMdev] Unwind, exception handling, debuggers and profilers
- [LLVMdev] Unwind, exception handling, debuggers and profilers