[LLVMdev] EHABI: Remaining issues

Logan Chien tzuhsiang.chien at gmail.com
Sat Mar 15 10:06:10 PDT 2014


Hi Renato,

I would like to know what do you mean by "commoning them up"?

I object to the idea to remove (or reduce) the ARM directives in favor of
CFI directives, though I believe it will be good to emit *both* ARM
directives and CFI directives so that some debugger or profiling tools can
be used without implementing ARM-specific logic.

The main reason for the objection is the compatibility between the
integrated-as and the binutils gas.  What if we have to use gas to compile
the output of LLVM?  Although we are working hard to improve the
integrated-as, but there are a lot of existing code simply doesn't work
when integrated-as is used.  Some of the issues are even considered as a
*feature* and marked as won't fix.

For the space issue, I personally don't think this is a big issue.  For the
code without exception handling, only stack informations will be encoded.
Besides, the encoding format is very compact.  In the common cases, the
code without exception handling needs only 8-12 bytes per function.  If
this is still an issue, then -fno-unwind-table might be a solution (i.e. at
llvm assembly level, the function should be marked with nounwind and
without uwtable.)

Sincerely,
Logan


On Thu, Mar 13, 2014 at 9:15 PM, Renato Golin <renato.golin at linaro.org>wrote:

> Hi Keith, Anton, Logan,
>
> 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?
>
> 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?
>
> 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?
>
> cheers,
> --renato
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140316/023ca15d/attachment.html>


More information about the llvm-dev mailing list