Re: [Fwknop-discuss] [PATCH] PPC failures solved
Brought to you by:
mbr
From: Michael R. <mb...@ci...> - 2013-06-10 02:20:48
|
On Jun 09, 2013, Michael Rash wrote: > On Jun 09, 2013, Blair Zajac wrote: > > > On 6/9/13 3:29 PM, Blair Zajac wrote: > > > I recalled that PPC is big endian so hacked the below patch in and was > > > able to get fwknop to work. I wouldn't use the patch for a good commit, > > > as it doesn't support 64-bit PPC systems and its duplicated across two > > > files. > > > > BTW, this is on Mac OS X 10.5.8 and the OS doesn't define BYTEORDER in a > > standard header (I don't count ffi/*.h as standard headers): > > > > $ find /usr/include -type f | xargs grep BYTEORDER > > /usr/include/ffi/fficonfig.h:# define BYTEORDER 1234 > > /usr/include/ffi/fficonfig.h:# define BYTEORDER 1234 > > /usr/include/ffi/fficonfig.h:# define BYTEORDER 4321 > > /usr/include/ffi/fficonfig.h:# define BYTEORDER 4321 > > /usr/include/libkern/_OSByteOrder.h:#ifndef _OS__OSBYTEORDER_H > > /usr/include/libkern/_OSByteOrder.h:#define _OS__OSBYTEORDER_H > > /usr/include/libkern/_OSByteOrder.h:#endif /* ! _OS__OSBYTEORDER_H */ > > /usr/include/libkern/i386/_OSByteOrder.h:#ifndef _OS__OSBYTEORDERI386_H > > /usr/include/libkern/i386/_OSByteOrder.h:#define _OS__OSBYTEORDERI386_H > > /usr/include/libkern/i386/_OSByteOrder.h:#endif /* ! > > _OS__OSBYTEORDERI386_H */ > > /usr/include/libkern/i386/OSByteOrder.h:#ifndef _OS_OSBYTEORDERI386_H > > /usr/include/libkern/i386/OSByteOrder.h:#define _OS_OSBYTEORDERI386_H > > /usr/include/libkern/i386/OSByteOrder.h:#endif /* ! _OS_OSBYTEORDERI386_H */ > > /usr/include/libkern/machine/OSByteOrder.h:#ifndef _OS_OSBYTEORDERMACHINE_H > > /usr/include/libkern/machine/OSByteOrder.h:#define _OS_OSBYTEORDERMACHINE_H > > /usr/include/libkern/machine/OSByteOrder.h:#endif /* ! > > _OS_OSBYTEORDERMACHINE_H */ > > /usr/include/libkern/OSByteOrder.h:#ifndef _OS_OSBYTEORDER_H > > /usr/include/libkern/OSByteOrder.h:#define _OS_OSBYTEORDER_H > > /usr/include/libkern/OSByteOrder.h:#endif /* ! _OS_OSBYTEORDER_H */ > > /usr/include/libkern/ppc/OSByteOrder.h:#ifndef _OS_OSBYTEORDERPPC_H > > /usr/include/libkern/ppc/OSByteOrder.h:#define _OS_OSBYTEORDERPPC_H > > /usr/include/libkern/ppc/OSByteOrder.h:#endif /* ! _OS_OSBYTEORDERPPC_H */ > > /usr/include/sys/sysctl.h:#define HW_BYTEORDER 4 /* int: machine byte > > order */ > > Interesting, and thanks for the bug report for PPC systems. Seems like > fwknop could have a more generic way of making a guess for an endian > value. There is a section of code in lib/fko_common.h that does some of > this, but I think it could be extended: > > http://www.cipherdyne.org/cgi-bin/gitweb.cgi?p=fwknop.git;a=blob;f=lib/fko_common.h;h=24bb14c1bbc18d44c1927f1af440bf473d533269;hb=refs/heads/master#l91 > > For example, does your system have either _BIG_ENDIAN or __BIG_ENDIAN__ > defined? If so, would the following patch work (which only defines > BYTEORDER if all other current measures have failed and then forces a > compile warning if this also fails)?: > > diff --git a/lib/fko_common.h b/lib/fko_common.h > index 24bb14c..c42f16c 100644 > --- a/lib/fko_common.h > +++ b/lib/fko_common.h > @@ -103,6 +103,14 @@ > #else > #error unable to determine BYTEORDER > #endif > +#elif defined(_BIG_ENDIAN) > + #define BYTEORDER 4321 > +#elif defined(__BIG_ENDIAN__) > + #define BYTEORDER 4321 > +#elif defined(_LITTLE_ENDIAN) > + #define BYTEORDER 1234 > +#elif defined(__LITTLE_ENDIAN__) > + #define BYTEORDER 1234 > +#else > + #error unable to determine BYTEORDER > #endif > > #ifdef WIN32 Or, a bit more elegantly: diff --git a/lib/fko_common.h b/lib/fko_common.h index 24bb14c..40f1c5b 100644 --- a/lib/fko_common.h +++ b/lib/fko_common.h @@ -103,6 +103,12 @@ #else #error unable to determine BYTEORDER #endif +#elif defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) + #define BYTEORDER 4321 +#elif defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) + #define BYTEORDER 1234 +#else + #error unable to determine BYTEORDER #endif #ifdef WIN32 > > Blair > > > > > > ------------------------------------------------------------------------------ > > How ServiceNow helps IT people transform IT departments: > > 1. A cloud service to automate IT design, transition and operations > > 2. Dashboards that offer high-level views of enterprise services > > 3. A single system of record for all IT processes > > http://p.sf.net/sfu/servicenow-d2d-j > > _______________________________________________ > > Fwknop-discuss mailing list > > Fwk...@li... > > https://lists.sourceforge.net/lists/listinfo/fwknop-discuss > > ------------------------------------------------------------------------------ > How ServiceNow helps IT people transform IT departments: > 1. A cloud service to automate IT design, transition and operations > 2. Dashboards that offer high-level views of enterprise services > 3. A single system of record for all IT processes > http://p.sf.net/sfu/servicenow-d2d-j > _______________________________________________ > Fwknop-discuss mailing list > Fwk...@li... > https://lists.sourceforge.net/lists/listinfo/fwknop-discuss |