[Python-Dev] ctypes and powerpc
ronaldoussoren at mac.com
Sat Nov 25 08:24:07 CET 2006
On Friday, November 24, 2006, at 08:21PM, "Thomas Heller" <theller at ctypes.org> wrote:
>I'd like to ask for help with an issue which I do not know
>how to solve.
>Please see this bug http://python.org/sf/1563807
>"ctypes built with GCC on AIX 5.3 fails with ld ffi error"
>Apparently this is a powerpc machine, ctypes builds but cannot be imported
>because of undefined symbols like 'ffi_call', 'ffi_prep_closure'.
>These symbols are defined in file
>The whole contents of this file is enclosed within a
>block. IIRC, this block has been added by Ronald for the
>Mac universal build. Now, it seems that on the AIX machine
>the __ppc__ symbols is not defined; removing the #ifdef/#endif
>makes the built successful.
The defines were indeed added for the universal build and I completely overlooked the fact that ffi_darwin.c is also used for AIX. One way to fix this is
#if ! (defined(__APPLE__) && !defined(__ppc__))
That is, compile the file unless __APPLE__ is defined but __ppc__ isn't. This more clearly documents the intent.
>We have asked (in the SF bug tracker) for the symbols that are defined;
>one guy has executed 'gcc -v -c empty.c' and posted the output, as far as I
>see these are the symbols defined in gcc:
>-D__GNUC_MINOR__=9 -D_IBMR2 -D_POWER -D_AIX -D_AIX32 -D_AIX41 -D_AIX43
>-D_AIX51 -D_LONG_LONG -D_IBMR2 -D_POWER -D_AIX -D_AIX32 -D_AIX41 -D_AIX43
>-D_AIX51 -D_LONG_LONG -Asystem(unix) -Asystem(aix) -D__CHAR_UNSIGNED__
>What should we do now? Should the conditional be changed to
>#if defined(__ppc__) || defined(_POWER)
>or should we suggest to add '-D__ppc__' to the CFLAGS env var, or what?
>Python-Dev mailing list
>Python-Dev at python.org
More information about the Python-Dev