You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee='https://github.com/theller'closed_at=Nonecreated_at=<Date2007-11-29.00:52:59.436>labels= ['type-feature']
title='make _ctypes work with non-gcc compilers'updated_at=<Date2014-03-23.03:21:19.979>user='https://bugs.python.org/gregcouch'
To get _ctypes to sucessfully compile with native UNIX compilers (i.e.,
not gcc), several modifications need to be made: (1) use the equivalent
of the Py_GCC_ATTRIBUTE macro for __attribute__ (in ffi.h), (2) include
<ffi_common.h> in callproc.c to conditionally include <alloca.h>, and
(3) modify distutils to know something about assembly language files.
The attached patch is a starting point for the proper patch. It fixes
bugs (1) and (2), but I was unable to figure out the last tweek to get
distutils to work with gcc and native compilers.
The problem with _ctypes comes from the use of gcc's libffi. And libffi
uses assembly language source files for the various supported platforms
and distutils blindly compiles the .S files. Native UNIX compilers want
a .s suffix and if the files are renamed, distutils skips the file. I
tried modifying distutils to compile .s files and give the '-x
assembler-with-cpp' flag to gcc so gcc would still work, but the right
tweek evaded me. So I'm hoping someone can take this and turn it into
something better or make helpful suggestions (other than switching to gcc!).
loewis commented on Nov 29, 2007
loewismannequin
Mannequin
More actions
Can you please be specific what compilers and systems you are talking
about? I doubt your statements hold for *all* native UNIX compilers. In
particular, .s files should be compiled with as, not cc, on the UNIX
systems I'm familiar with, but that won't involve the C preprocessor.
The modications work on Tru64 and IRIX. cc has understood .s suffixes
for a long time. You use cc instead of as because it knows how to run
the C preprocessor (often /lib/cpp, but not on all systems).
Looking at the Solaris cc manual page (via google), I see that its cc
has the same .S and .s distinction that gcc has, so my patch will not
work with Solaris either. IRIX has a separate issue in that it has
libffi support for n32 binaries, but doesn't have the ffi_closure
support, so while libffi compiles, _ctypes still fails to compile (same
would be true if gcc were used).
I realize it's been a good five years since you first raised this
issue, but I was wondering if you ever ended up making any progress
with it?
In trying to get Python working on Snakebite UNIX boxes with vendor
CCs, I'm running into all sorts of issues.
gregcouch commented on Oct 18, 2012
gregcouchmannequin
MannequinAuthor
More actions
On Thu, 18 Oct 2012, Trent Nelson wrote:
Trent Nelson added the comment:
Hi Greg,
I realize it's been a good five years since you first raised this
issue, but I was wondering if you ever ended up making any progress
with it?
In trying to get Python working on Snakebite UNIX boxes with vendor
CCs, I'm running into all sorts of issues.
Sorry to say I don't have any more insight on how to get libffi working on
more platforms. Lucking ctypes isn't used in the Python core, so it's
not required to get Python working. I'm using supported compilers on all
platforms now.
Given msg173279 from Greg Couch "I'm using supported compilers on all
platforms now." can we close this issue or does Trent Nelson still have problems?
Activity
gregcouch commentedon Nov 29, 2007
To get _ctypes to sucessfully compile with native UNIX compilers (i.e.,
not gcc), several modifications need to be made: (1) use the equivalent
of the Py_GCC_ATTRIBUTE macro for __attribute__ (in ffi.h), (2) include
<ffi_common.h> in callproc.c to conditionally include <alloca.h>, and
(3) modify distutils to know something about assembly language files.
The attached patch is a starting point for the proper patch. It fixes
bugs (1) and (2), but I was unable to figure out the last tweek to get
distutils to work with gcc and native compilers.
The problem with _ctypes comes from the use of gcc's libffi. And libffi
uses assembly language source files for the various supported platforms
and distutils blindly compiles the .S files. Native UNIX compilers want
a .s suffix and if the files are renamed, distutils skips the file. I
tried modifying distutils to compile .s files and give the '-x
assembler-with-cpp' flag to gcc so gcc would still work, but the right
tweek evaded me. So I'm hoping someone can take this and turn it into
something better or make helpful suggestions (other than switching to gcc!).
loewis commentedon Nov 29, 2007
Can you please be specific what compilers and systems you are talking
about? I doubt your statements hold for *all* native UNIX compilers. In
particular, .s files should be compiled with as, not cc, on the UNIX
systems I'm familiar with, but that won't involve the C preprocessor.
gregcouch commentedon Nov 29, 2007
The modications work on Tru64 and IRIX. cc has understood .s suffixes
for a long time. You use cc instead of as because it knows how to run
the C preprocessor (often /lib/cpp, but not on all systems).
Looking at the Solaris cc manual page (via google), I see that its cc
has the same .S and .s distinction that gcc has, so my patch will not
work with Solaris either. IRIX has a separate issue in that it has
libffi support for n32 binaries, but doesn't have the ffi_closure
support, so while libffi compiles, _ctypes still fails to compile (same
would be true if gcc were used).
tpn commentedon Oct 18, 2012
Hi Greg,
gregcouch commentedon Oct 18, 2012
On Thu, 18 Oct 2012, Trent Nelson wrote:
Hi Trent,
Sorry to say I don't have any more insight on how to get libffi working on
more platforms. Lucking ctypes isn't used in the Python core, so it's
not required to get Python working. I'm using supported compilers on all
platforms now.
BreamoreBoy commentedon Mar 23, 2014
Given msg173279 from Greg Couch "I'm using supported compilers on all
platforms now." can we close this issue or does Trent Nelson still have problems?
kumaraditya303 commentedon Apr 15, 2022
Closing as it is fairly outdated now and OP is successfully able to use it on supported platforms.