[LLVMdev] EHABI: Remaining issues

Keith Walker Keith.Walker at arm.com
Thu Mar 13 09:48:06 PDT 2014


Renato

> -----Original Message-----
> From: Renato Golin [mailto:renato.golin at linaro.org]
>
> Last time we spoke about ARM unwinding, we agreed to have both CFI and
> directive variants in ARM, so that both EH and debuggers/profilers
> could correctly unwind the stack. The problem, obviously, is that we
> now have redundant information and I decided to have a go commoning
> them up.
>
> One of the issues, I think, is GNU compatibility (so GAS can generate
> the tables correctly when not using the integrated assembler), and it
> seems there GCC also emits both EHABI directives and Dwarf, so I don't
> think we'll be able to move away from it. Since this is only relevant
> in debug/profiling mode, and the only problem is code size, I think
> this is something we can live with. Do you guys agree with it?

I think for the moment this is a sensible stance as it ensure maximum compatibility with debuggers who might understand DWARF but not EHABI generated tables.

> Another issue is the usage of EH tables in C code. I believe the
> consensus is that it may not be the most optimal for never-exceptional
> code, but it's the safest default option. The only thing remaining is
> to choose a way to disable them via some flag. As weird as
> -fno-exceptions sounds for C code, I think we'll have to go with it.
> Any other ideas?

It does seem strange if you are only compiling C code you have to specify -fno-exceptions in order to not generated the overhead of the exception tables.

Personally, it would appear to be more correct to require the use of -fexceptions if you want the overhead of exception tables when compiling C.

However I can see that this may result in people not using -fexecptions when they should and programs failing at runtime because of it.   Whilst not specifying -fno-exceptions just results in a slightly larger image.

> Finally, Keith, do you have some internal EHABI test you can run Clang
> on? Does any one know of a large, self contained code, that makes
> heavy use of exceptions?

The EHABI specific tests that we have, test the ARM EHABI personality routines whilst clang generates exception handling that use the GCC personality routines.

Otherwise the tests we have are generic exception handling tests that are part of C++ language tests suites.

Keith

-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium.  Thank you.

ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No:  2557590
ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No:  2548782





More information about the llvm-dev mailing list