[PATCH] D34136: [Solaris] replace Solaris.h hack with a set of better hacks

Rainer Orth via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 14 01:11:27 PDT 2017


ro added inline comments.


================
Comment at: include/llvm/Support/Host.h:25
+#elif defined(__sun)
+/* Solaris doesn't have endian.h. SPARC is the only supported big-endian ISA. */
+#define BIG_ENDIAN 4321
----------------
fedor.sergeev wrote:
> joerg wrote:
> > joerg wrote:
> > > fedor.sergeev wrote:
> > > > ro wrote:
> > > > > joerg wrote:
> > > > > > Can't you use sys/byteorder.h or is that post-Solaris11?
> > > > > Wouldn't it be better to just switch LLVM to always use
> > > > > __BYTE_ORDER__, __ORDER_LITTLE_ENDIAN__, __ORDER_BIG_ENDIAN__ which are predefined by
> > > > > both clang and gcc?  There are only a few files left using
> > > > > BYTE_ORDER and friends.
> > > > sys/byteorder.h on my Solaris11/Solaris12 provides only #define _LITTLE_ENDIAN/_BIG_ENDIAN, which does not really help.
> > > > 
> > > OK, I only have the Illumos version at hand, which uses _BIG_ENDIAN to decide whether ntohl and friends should do something or not.
> > ro: I disagree since we don't require gcc or clang to build.
> You can use _BIG_ENDIAN instead of __sparc, thats all. You still have to manually define all those 1234 values.
> And, btw, the header providing this define is sys/isa_defs.h, not sys/byteorder.h.
> I wonder how stable this interface is...
joerg: Even so, there are already unconditional uses of
__BYTE_ORDER__ etc. inside LLVM without guards or
a fallback definition (e.g. lib/Demangle/ItaniumDemangle.cpp.
projects/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc), so I though this might
be a way forward.


https://reviews.llvm.org/D34136





More information about the llvm-commits mailing list