On 6/11/13 5:28 AM, Blair Zajac wrote: > On 06/10/2013 08:17 PM, Michael Rash wrote: >> On Jun 09, 2013, Blair Zajac wrote: >> >>> On 6/9/13 9:45 PM, Blair Zajac wrote: >>>> On 6/9/13 7:20 PM, Michael Rash wrote: >>>>> 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)?: >>>> >>>> Yes, either __BIG_ENDIAN__ or __LITTLE_ENDIAN__ is defined by the >>>> compiler with no include files. The following prints either BIG or >>>> LITTLE if run through `gcc -E` >>>> >>>> #ifdef __BIG_ENDIAN__ >>>> BIG >>>> #endif >>>> >>>> #ifdef __LITTLE_ENDIAN__ >>>> LITTLE >>>> #endif >>>> >>>>> 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 >>>> >>>> This presumes a 32- bit architecture though, since there's code in >>>> lib/sha1.c that checks if BTYEORDER is 12345678 or 87654321. I think one >>>> could check for __ppc__ and __i386__ for 32-bit and __ppc64__ and >>>> __x86_64__ for 64-bit. If you don't have any of __ppc__, __i386__, >>>> __ppc64__ or __x86_64__ defined then one could error. >>> >>> Odd thing is, on my 1-year old Linux box, BYTEORDER is 1234 instead of >>> 12345678, so maybe what I'm saying isn't correct. >>> >>> In any case, I was thinking of something like this before I found that, >>> no need to have multiple #error's. >>> >>> --- lib/fko_common.h.orig 2013-06-09 21:58:24.000000000 -0700 >>> +++ lib/fko_common.h 2013-06-09 22:02:07.000000000 -0700 >>> @@ -100,9 +100,23 @@ >>> #define BYTEORDER 4321 >>> #elif defined(_LITTLE_ENDIAN) >>> #define BYTEORDER 1234 >>> - #else >>> - #error unable to determine BYTEORDER >>> #endif >>> +#elif defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) >>> + #if defined(__i386__) || defined(__ppc__) >>> + #define BYTEORDER 4321 >>> + #elif defined(__x86_64__) || defined(__ppc64) >>> + #define BYTEORDER 87654321 >>> + #endif >>> +#elif defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) >>> + #if defined(__i386__) || defined(__ppc__) >>> + #define BYTEORDER 1234 >>> + #elif defined(__x86_64__) || defined(__ppc64) >>> + #define BYTEORDER 12345678 >>> + #endif >>> +#endif >>> + >>> +#ifndef BYTEORDER >>> + #error unable to determine BYTEORDER >>> #endif >>> >>> #ifdef WIN32 >> >> I've applied your patch for fwknop-2.5-pre2. One thing that would be >> very interesting is to see whether the backwards compatibility tests >> work on your PPC system since I think this will help to validate the >> patch above: >> >> - After fwknop has been compiled: >> >> # cd fwknop-2.5-pre2/test >> # ./test-fwknop.pl --include "backwards" > > On my 10.5.8 system:
Getting similar failures on a 10.7.5 system also. Blair ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ Fwknop-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/fwknop-discuss
