Clang 3.8 can't compile libunwind 3.9

Hi Logan,

So, I just realised clang 3.8 comes with an unwind.h which doesn't
have _URC_OK defined (introduced in r262178, just after 3.8 split).

But on that commit, the personality routine depends on it for EHABI
calls, which is defined by default on ARM environments.

The end result is that I can only use Clang 3.9+ to compile libunwind 3.9+.

http://buildmaster.tcwglab.linaro.org/builders/clang-cmake-armv7-a15-full/builds/1788/steps/build%20stage%201/logs/stdio

compiler-rt/lib/builtins/gcc_personality_v0.c:149:57: error: use of
undeclared identifier '_URC_OK'; did you mean '_UVRSR_OK'?
    if (__gnu_unwind_frame(exceptionObject, context) != _URC_OK)
                                                        ^~~~~~~

Do we take this as an ABI break and document it? Or do we try to fix it?

cheers,
--renato

It is an API change. It doesn't involve the ABI.

Joerg

Right, that's what I meant, sorry.

Just to make sure we're on the same page...

If we treat this as an acceptable API change, we'll have to document.
This will force people to bootstrap Clang (if using pre-3.9 for stage
one), and only compile libunwind on stage 2.

If we try to fix, there should be some #ifdef clang < 3.9 #define
_URC_OK 0 #endif in the personality routine, or something similar.

Unless there's a better fix...

--renato

Anyway, I've opened a bug about this...

https://llvm.org/bugs/show_bug.cgi?id=31035