[DebianGIS-dev] Bug#480345: fails to link on arm eabi

Riku Voipio riku.voipio at iki.fi
Fri May 9 14:11:16 UTC 2008


Package: geos
Version: 4.3.0-4
Severity: important
Tags: patch
User: debian-arm at lists.debian.org
Usertags: eabi

Geos currently fails to build[1] on arm eabi, most likely due to slightly
different symbol visibility rules defined in EABI.

arm-linux-gnueabi-g++ -shared -nostdlib /usr/lib/gcc/arm-linux-gnueabi/4.3.1/../../../crti.o /usr/lib/gcc/arm-linux-gnueabi/4.3.1/crtbeginS.o  .libs/inlines.o -Wl,--whole-archive algorithm/.libs/libalgorithm.a geom/.libs/libgeom.a geomgraph/.libs/libgeomgraph.a index/.libs/libindex.a io/.libs/libio.a noding/.libs/libnoding.a operation/.libs/liboperation.a planargraph/.libs/libplanargraph.a precision/.libs/libprecision.a simplify/.libs/libsimplify.a util/.libs/libutil.a -Wl,--no-whole-archive  -L/usr/lib/gcc/arm-linux-gnueabi/4.3.1 -L/usr/lib/gcc/arm-linux-gnueabi/4.3.1/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/arm-linux-gnueabi/4.3.1/crtendS.o /usr/lib/gcc/arm-linux-gnueabi/4.3.1/../../../crtn.o  -Wl,-soname -Wl,libgeos-3.0.0.so -o .libs/libgeos-3.0.0.so
noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.data.rel.ro+0x0): multiple definition of `vtable for geos::noding::snapround::MCIndexSnapRounder'
.libs/inlines.o:(.data.rel.ro+0x0): first defined here
noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.data.rel.ro+0x18): multiple definition of `typeinfo for geos::noding::snapround::MCIndexSnapRounder'
.libs/inlines.o:(.data.rel.ro+0xb0): first defined here
noding/.libs/libnoding.a(MCIndexSnapRounder.o):(.rodata+0x0): multiple definition of `typeinfo name for geos::noding::snapround::MCIndexSnapRounder'
.libs/inlines.o:(.rodata+0x0): first defined here
collect2: ld returned 1 exit status

On x386:

nm -a --demangle inlines.o

00000000 V typeinfo for geos::noding::snapround::MCIndexSnapRounder
00000000 V typeinfo name for geos::noding::snapround::MCIndexSnapRounder
00000000 V vtable for geos::noding::snapround::MCIndexSnapRounder

On arm eabi:

000000e0 R typeinfo for geos::noding::snapround::MCIndexSnapRounder
000000b0 R typeinfo name for geos::noding::snapround::MCIndexSnapRounder
00000000 R vtable for geos::noding::snapround::MCIndexSnapRounder

I haven't found a satisfactory explanation about how gcc chooses to create
weak and normal symbols, so it's unclear if the bug is in binutils/gcc
or in the creative inlining solution in geos. In the course of compiling
7200 source packages from debian repository no other package has had any
similar problems... You might want to discuss with upstream what's the
advantage of including normal and inlined copies of same classes in a shared
library.

However, since geos is very low in the dependency chain, causing a considerable
amount of packages being uncompilable, we (armel porters) cant wait for very long
for a perfect/correct solution. Therefor, please consider the attached patch.

[1] http://buildd.debian.org/fetch.cgi?&pkg=geos&ver=3.0.0-4&arch=armel&stamp=1209298060&file=log
-------------- next part --------------
diff -urN geos-3.0.0/debian/rules geos-3.0.0.new/debian/rules
--- geos-3.0.0/debian/rules	2008-05-09 16:28:50.000000000 +0300
+++ geos-3.0.0.new/debian/rules	2008-05-09 16:26:47.000000000 +0300
@@ -28,6 +29,10 @@
 	INSTALL_PROGRAM += -s
 endif
 
+ifeq ($(DEB_HOST_GNU_TYPE),arm-linux-gnueabi)
+	CONFFLAGS += --disable-inline
+endif
+
 # shared library versions, option 1
 version=2.0.5
 major=2
@@ -49,7 +54,7 @@
 	cp -f /usr/share/misc/config.guess config.guess
 endif
 	
-	CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info
+	CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info $(CONFFLAGS)
 
 
 #Architecture
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://lists.alioth.debian.org/pipermail/pkg-grass-devel/attachments/20080509/16128933/attachment.pgp 


More information about the Pkg-grass-devel mailing list