compnerd added inline comments.

================
Comment at: lib/Headers/unwind.h:61
@@ +60,3 @@
+#define _UNWIND_ARM_EHABI 0
+#endif
+
----------------
logan wrote:
> compnerd wrote:
> > logan wrote:
> > > Since this is `unwind.h`, I feel that we can get a step further and use 
> > > `__ARM_EABI_UNWINDER__` to get more compatibility to GCC's unwind.h.
> > > 
> > > Here's the change:
> > > 
> > > ```
> > > #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \
> > >     !defined(__ARM_DWARF_EH__)
> > > #define __ARM_EABI_UNWINDER__ 1
> > > #endif
> > > ```
> > I dont know if we really need to imitate GCC's macros here.  Am I mistaken 
> > in that they assume that `__ARM_EABI_UNWINDER__` has been set to 1 
> > externally if targeting such an environment?  I think that it is better to 
> > use the reserved namespace and intrude into libunwind's namespace as 
> > already done here.
> > Am I mistaken in that they assume that `__ARM_EABI_UNWINDER__` has been set 
> > to 1 externally if targeting such an environment?
> 
> Although this is an implementation detail, it was defined by `unwind.h` in 
> the implementation of GCC.
> 
> Remark: `__ARM_EABI_UNWINDER__` is not a pre-defined macro in GCC and Clang 
> (can be checked with ` gcc -dM -E - < /dev/null`.)
> 
> BTW, some applications or libraries need this macro to be defined after 
> including `<unwind.h>` (such as uclibc, boost, or libc++abi 3.0.)  I 
> remembered that someone suggested to use `__ARM_EABI_UNWINDER__` instead of  
> `LIBCXXABI_ARM_EHABI` when I was fixing libc++abi several years ago.  I chose 
> `LIBCXXABI_ARM_EHABI` simply because `__ARM_EABI_UNWINDER__` wasn't provided 
> by clang at that time.
> 
> I am less concerned to namespace pollution, because this is already the de 
> facto implementation in GCC world and the macro names start with underscores 
> are reserved for compiler or standard libraries by convention.
> 
> Since this is file a public header and will be used for a long time, I 
> personally believe that it will be better to use an existing name with the 
> same meaning instead of introducing a new name.  In addition, this will make 
> it easier to port the application between gcc and clang.
I just checked, libc++abi has no use of this macro, nor does boost 1.60.  
uclibc only defines `__ARM_EABI_UNWINDER__`, but does not use it.  I also 
checked glibc and musl, and glibc like uclibc defines it while musl has no 
references to it.  This is injecting itself into the compiler namespace and is 
misleading, so I think I would really rather prefer the current patch as is.


http://reviews.llvm.org/D15883



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to