[PATCH] D15781: [compiler-rt] Add support for ARM EHABI to gcc_personality_v0.
Saleem Abdulrasool via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 28 10:02:15 PST 2015
compnerd added a comment.
There seems to be a couple of items of confusion here (at least to me).
SjLj EH isn't part of this routine (that personality is __gcc_personality_sj0 and is pretty different in behavior).
Yes, you are correct that most of the details of unwinding on ARM will be taken care of by the unwinder. Also, neighter LLVM nor GCC would produce references to this personality routine, so it seems odd to support this.
Why is it unsafe to use the well defined personality routines for ARM and rust? They are required for unwinding to work on ARM. The index and unwind tables have to be generated specifically for use with them, so the code generation is already aware of the existence.
AIUI, LSDA here is not relevant as that is handled by the language dependent portion. If that is similar so be it, I don't think that should have any bearings on the right approach here.
Simply registering a different personality routine based on the function should give you the correct behavior if I'm not mistaken (remember that the table encoding matters and you switch between one of the three personalities!).
Finally, I think that if you generate the personality references correctly on the rust side, you won't need the __gcc_personality_v0 unless there is C code trying to handle exceptions.
More information about the llvm-commits