[ python-Bugs-1530448 ] ctypes build fails on Solaris 10
SourceForge.net
noreply at sourceforge.net
Wed Aug 2 15:20:42 CEST 2006
Bugs item #1530448, was opened at 2006-07-28 17:04
Message generated for change (Comment added) made by theller
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1530448&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Build
Group: Python 2.5
Status: Open
Resolution: None
Priority: 5
Submitted By: Skip Montanaro (montanaro)
Assigned to: Thomas Heller (theller)
Summary: ctypes build fails on Solaris 10
Initial Comment:
Thomas,
I tried to build Python from cvs (svn rev 50905) on
Solaris 10 today.
Compiler was gcc 3.4. I got a text relocation error
when linking
ctypes.so:
/opt/app/g++lib6/gcc-3.4/bin/gcc -shared
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/_ctypes.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callbacks.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callproc.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/stgdict.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/cfield.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/malloc_closure.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/prep_cif.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi64.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/unix64.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o
-L/usr/local/lib -o
build/lib.solaris-2.10-i86pc-2.5/_ctypes.so
Text relocation remains referenced
against symbol offset in file
ffi_closure_SYSV_inner 0x8e
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o
ld: fatal: relocations remain against allocatable but
non-writable sections
collect2: ld returned 1 exit status
I tried configuring both with and without the
--with-system-ffi flag.
The error was the same in both cases.
If you need more information, let me know.
Skip
----------------------------------------------------------------------
>Comment By: Thomas Heller (theller)
Date: 2006-08-02 15:20
Message:
Logged In: YES
user_id=11105
It seems that the files 'src/x86/ffi.c' and 'src/x86/sysv.S'
are not needed for the X86_64 platform in fficonfig.py.in.
They *should* compile to nothing, anyway, because their
contents is protected by 'ifndef __x86_64__'.
Does removing them from fficonfig.py.in change the
situation, so that only this remains:
'X86_64': ['src/x86/ffi64.c', 'src/x86/unix64.S'],
I can build _ctypes on an unbuntu amd64 system with this change.
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2006-08-02 15:08
Message:
Logged In: YES
user_id=44345
I don't understand. I swapped the order of ffi.c and sysv.S
in the platforms dict. I confirmed that the order of the .o
files on the link line changed so that ffi.o followed
sysv.o. I still get the same error. I've also confirmed
that ffi.o exports the symbol and that sysv.o references it:
% nm -p
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.o:
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000000 U _GLOBAL_OFFSET_TABLE_
0000000000 f ffi.c
0000000332 T ffi_call
0000000000 U ffi_call_SYSV
0000000000 U ffi_closure_SYSV
0000000456 T ffi_closure_SYSV_inner
0000000000 T ffi_prep_args
0000000252 T ffi_prep_cif_machdep
0000000612 T ffi_prep_closure
0000000000 U memcpy
% nm -p
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o:
0000000000 s
0000000000 s
0000000000 s
0000000000 s
0000000109 n epilogue
0000000000 T ffi_call_SYSV
0000000116 T ffi_closure_SYSV
0000000000 U ffi_closure_SYSV_inner
0000000000 U ffi_prep_args
0000000109 n noretval
0000000071 n retdouble
0000000059 n retfloat
0000000046 n retint
0000000095 n retint64
0000000083 n retlongdouble
0000000109 n retstruct
All the object files were compiled with -fPIC. Here's the
relevant chunk of make's output:
creating build/temp.solaris-2.10-i86pc-2.5/libffi
checking build system type... i386-pc-solaris2.10
checking host system type... i386-pc-solaris2.10
checking target system type... i386-pc-solaris2.10
checking for gcc... /opt/app/g++lib6/gcc-3.4/bin/gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /opt/app/g++lib6/gcc-3.4/bin/gcc
accepts -g... yes
checking for /opt/app/g++lib6/gcc-3.4/bin/gcc option to
accept ANSI C... none needed
checking how to run the C preprocessor...
/opt/app/g++lib6/gcc-3.4/bin/gcc -E
checking for egrep... egrep
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking for mmap... yes
checking for sys/mman.h... (cached) yes
checking for mmap... (cached) yes
checking whether read-only mmap of a plain file works... yes
checking whether mmap from /dev/zero works... yes
checking for MAP_ANON(YMOUS)... yes
checking whether mmap with MAP_ANON(YMOUS) works... yes
checking for ANSI C header files... (cached) yes
checking for memcpy... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for double... yes
checking size of double... 8
checking for long double... yes
checking size of long double... 12
checking whether byte ordering is bigendian... no
checking whether .eh_frame section should be read-only... no
checking for __attribute__((visibility("hidden")))... no
configure: creating ./config.status
config.status: creating include/ffi.h
config.status: creating fficonfig.py
config.status: creating fficonfig.h
config.status: linking
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffitarget.h
to include/ffitarget.h
config.status: linking
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/include/ffi_common.h
to include/ffi_common.h
config.status: executing include commands
config.status: executing src commands
>>> X86_64
['src/prep_cif.c', 'src/x86/ffi64.c',
'src/x86/unix64.S', 'src/x86/sysv.S', 'src/x86/ffi.c']
building '_ctypes' extension
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/_ctypes.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/_ctypes.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callbacks.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callbacks.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callproc.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callproc.o
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callproc.c:
In function `_CallProc':
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callproc.c:917:
warning: implicit declaration of function `alloca'
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/stgdict.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/stgdict.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/cfield.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/cfield.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/malloc_closure.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/malloc_closure.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/prep_cif.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/prep_cif.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi64.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi64.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/unix64.S
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/unix64.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.S
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o
/opt/app/g++lib6/gcc-3.4/bin/gcc -fPIC
-fno-strict-aliasing -DNDEBUG -g -O3 -Wall
-Wstrict-prototypes -I.
-I/home/ink/skipm/src/python-svn/trunk/./Include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi/include
-Ibuild/temp.solaris-2.10-i86pc-2.5/libffi
-I/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src
-I/opt/app/nonc++/BerkleyDB-4.3/include
-I/opt/app/nonc++/tcl-8.4/include
-I/opt/app/nonc++/readline-4.3/include
-I/opt/app/nonc++/gdbm-1.8/include -I../Include -I.
-I/usr/local/include
-I/home/ink/skipm/src/python-svn/trunk/Include
-I/home/ink/skipm/src/python-svn/trunk/build -c
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.c
-o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.o
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.c:177:
warning: function declaration isn't a prototype
/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.c:194:
warning: function declaration isn't a prototype
/opt/app/g++lib6/gcc-3.4/bin/gcc -shared
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/_ctypes.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callbacks.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callproc.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/stgdict.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/cfield.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/malloc_closure.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/prep_cif.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi64.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/unix64.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.o
-L/usr/local/lib -o build/lib.solaris-2.10-i86pc-2.5/_ctypes.so
Text relocation remains referenced
against symbol offset in file
ffi_closure_SYSV_inner 0x8e
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o
ld: fatal: relocations remain against allocatable but
non-writable sections
collect2: ld returned 1 exit status
I added a couple prints to fficonfig.py.in to demonstrate
the file order and platform name (and to make sure
fficonfig.py was being rebuilt).
Oddly enough, if I remove both ffi.o and sysv.o from the
link line, it links successfully. Is that significant or am
I just getting desparate?
----------------------------------------------------------------------
Comment By: Thomas Heller (theller)
Date: 2006-08-01 22:02
Message:
Logged In: YES
user_id=11105
I didn't know there are any systems that depend on the order
of object files on the linker command line any more ;-).
IIUC, the objects list is derived by distutils from the
sources list, so the attached patch (for
Modules/_ctypes/libffi/fficonfig.py.in) *could* do the
trick. Please make sure that fficonfig.py is recreated (by
doing make clean before building or whatever).
Thanks for looking into this.
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2006-08-01 18:16
Message:
Logged In: YES
user_id=44345
Thomas> Skip, do you have *any* idea what might be
Thomas> wrong, or could you even come up with a patch?
Skip> I've no idea so far. I'll try to find some time
Skip> to take a look at it later today.
Thomas,
Sorry for the delay. I think I have it figured out and it
was fairly straightforward. Looking at the files in order
on the _ctypes.so link line we see that the definition of
ffi_closure_SYSV_inner is defined before it's referenced:
for obj in
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/_ctypes.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callbacks.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callproc.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/stgdict.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/cfield.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/malloc_closure.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/prep_cif.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi64.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/unix64.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o
; do echo $obj; nm -p $obj | egrep ffi_closure_SYSV_inner; done
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/_ctypes.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callbacks.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/callproc.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/stgdict.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/cfield.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/malloc_closure.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/prep_cif.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi64.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/unix64.o
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/ffi.o
0000000456 T ffi_closure_SYSV_inner
build/temp.solaris-2.10-i86pc-2.5/home/ink/skipm/src/python-svn/trunk/Modules/_ctypes/libffi/src/x86/sysv.o
0000000000 U ffi_closure_SYSV_inner
Since we're linking from object files, it's a one-pass link
algorithm. At the time ffo.o is examined, sysv.o hasn't
been seen. Consequently, ffi_closure_SYSV_inner is not yet
known and its definition isn't picked up from ffi.o.
I couldn't quickly figure out where the link command is
generated, but I'm sure you'll know where it resides.
Either swap ffi.o and sysv.o on the link line, or add ffi.o
a second time to resolve the new reference.
Skip
----------------------------------------------------------------------
Comment By: Thomas Heller (theller)
Date: 2006-07-31 12:54
Message:
Logged In: YES
user_id=11105
Skip, do you have *any* idea what might be wrong, or could
you even come up with a patch?
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2006-07-29 00:03
Message:
Logged In: YES
user_id=44345
Yeah, you'd definitely need -fPIC on any brand of Solaris. That test might be
changed to
plat = get_platform()
if plat in (... buncha platforms ...) or "solaris" in plat:
os.environ["CFLAGS"] = "-fPIC"
That doesn't seem to be what's happening in this case though. I rm'd the .o
files in .../Modules/_ctypes and tried again. The compile commands *do*
have -fPIC on them. I don't think it's required on the link line.
S
----------------------------------------------------------------------
Comment By: Thomas Heller (theller)
Date: 2006-07-28 18:19
Message:
Logged In: YES
user_id=11105
Skip,
This looks *somewhat* like the problems reported in bugs
1529269 and 1528620 (although they have a sparc, and you
seem to have x86 solaris).
Hm, in the standalone ctypes setup script, I find this code
snippet:
if get_platform() in ["solaris-2.9-sun4u", "linux-x86_64"]:
os.environ["CFLAGS"] = "-fPIC"
Can it be that -fPIC must be used, but is not specified?
It is also funny that the solaris buildbot does NOT seem to
have a problem.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1530448&group_id=5470
More information about the Python-bugs-list
mailing list