Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#358637: libip* should be compiled with -fPIC; attempt to link the current libiptc.a binary into a shared library on amd64 causes an R_X86_64_32S relocation error

0 views
Skip to first unread message

Sebastian Hagen

unread,
Mar 23, 2006, 12:30:20 PM3/23/06
to
Package: iptables-dev
Version: 1.3.3-2
Severity: normal
Tags: patch

I'm trying to link a shared library (specifically, a Python C Module)
against libiptc.a. This works fine on x86. On amd64, however, the linking
fails with a R_X86_64_32S relocation error; specifically:

gcc -pthread -shared build/temp.linux-x86_64-2.3/iptintmodule.o -liptc -o
build/lib.linux-x86_64-2.3/iptint.so
/usr/bin/ld:
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/../../../../lib/libiptc.a(libip4tc.o):
relocation R_X86_64_32S against `iptc_free' can not be used when making a
shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/3.4.6/../../../../lib/libiptc.a: could not
read symbols: Bad value
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

Apparently this is because shared objects always use Position Independent
Code, while libiptc.a is currently compiled without -fPIC. For some reason,
it works correctly on x86 regardless.
This can be fixed by a trivial change to
'pkg_dir/debian/build/iptables-1.3.3/Makefile', adding -fPIC to the CFLAGS.
The attached trivial patch does just that, if placed in
'pkg_dir/patches/all/' and subsequently applied by the Debian build scripts.
Afaict, this completely fixes the problem for me.

-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (990, 'unstable')
Architecture: amd64 (x86_64)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.15-dana
Locale: LANG=de_DE@euro, LC_CTYPE=de_DE@euro (charmap=ISO-8859-15)

-- no debconf information

003-dev_fPIC.patch
0 new messages