# HG changeset patch # User john.levon@sun.com # Date 1170001675 28800 # Node ID 132cc7bc2a356aa058b8550b90d5bb491fe0ea8c # Parent a484197f951e32da001f56faf6b140c9ac297897 Make libelf build on Solaris. libelf has a number of Linuxisms. Fix them up. Signed-off-by: John Levon <john.levon@sun.com> diff --git a/xen/common/libelf/libelf-private.h b/xen/common/libelf/libelf-private.h --- a/xen/common/libelf/libelf-private.h +++ b/xen/common/libelf/libelf-private.h @@ -33,7 +33,14 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#ifdef __sun__ +#include <sys/byteorder.h> +#define bswap_16(x) BSWAP_16(x) +#define bswap_32(x) BSWAP_32(x) +#define bswap_64(x) BSWAP_64(x) +#else #include <byteswap.h> +#endif #include <xen/elfnote.h> #include <xen/libelf.h> diff --git a/xen/include/public/libelf.h b/xen/include/public/libelf.h --- a/xen/include/public/libelf.h +++ b/xen/include/public/libelf.h @@ -7,6 +7,14 @@ #include <public/features.h> typedef uint64_t off_t; +#else /* !__XEN__ */ + +#include <stddef.h> +#include <inttypes.h> + +#endif + +#ifndef BYTE_ORDER #define LITTLE_ENDIAN 1234 #define BIG_ENDIAN 4321 #if defined(__i386__) || defined(__x86_64) || defined(__ia64__) @@ -14,13 +22,7 @@ typedef uint64_t off_t; #elif defined(__powerpc__) #define BYTE_ORDER BIG_ENDIAN #endif - -#else /* !__XEN__ */ - -#include <stddef.h> -#include <inttypes.h> - -#endif +#endif /* !BYTE_ORDER */ #undef ELFSIZE #include "elfstructs.h" _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
On 28/1/07 4:38 pm, "john.levon@sun.com" <john.levon@sun.com> wrote:> Make libelf build on Solaris. > > libelf has a number of Linuxisms. Fix them up.Does Solaris define __BYTE_ORDER, __LITTLE_ENDIAN, __BIG_ENDIAN in its byteorder.h? It might make sense to have the libelf code use those instead of the non-underscore-prefixed versions, and have the public libelf header assume the caller has pulled in the necessary headers rather than having at the namespace itself. I think there must be some rationalisation possible here, especially now that Xen itself has byteorder headers. -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
On 28/1/07 19:24, "John Levon" <john.levon@sun.com> wrote:> Does Solaris define __BYTE_ORDER, __LITTLE_ENDIAN, __BIG_ENDIAN in its >> byteorder.h? > > No. It defines _LITTLE_ENDIAN and _BIG_ENDIAN as appropriate. There''s no > .*BYTE_ORDER.Ah, never mind. I took another route to clean things up. Avoiding that whole area of namespace entirely seemed a good idea. :-) -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
On Sun, Jan 28, 2007 at 06:16:40PM +0000, Keir Fraser wrote:> > Make libelf build on Solaris. > > > > libelf has a number of Linuxisms. Fix them up. > > Does Solaris define __BYTE_ORDER, __LITTLE_ENDIAN, __BIG_ENDIAN in its > byteorder.h?No. It defines _LITTLE_ENDIAN and _BIG_ENDIAN as appropriate. There''s no .*BYTE_ORDER. regards, john _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel