Package: tarantool
Version: 1.4.8+20130212.1728-1
Severity: normal
Tags: patch
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu ubuntu-patch raring

I'm not entirely sure why this doesn't fail on Debian; I think our
linker is a bit stricter than yours.  However, tarantool fails to build
on current Ubuntu as follows:

  Linking C executable tarantool_box
  cd /build/buildd/tarantool-1.4.8+20130212.1728/build-area/src/box && 
/usr/bin/cmake -E cmake_link_script CMakeFiles/tarantool_box.dir/link.txt 
--verbose=1
  /usr/bin/cc   -fno-omit-frame-pointer -fno-stack-protector -fexceptions 
-funwind-tables -std=gnu99 -Wall -Wextra -Wno-sign-compare -Wno-strict-aliasing 
-pthread  -ggdb -O2    CMakeFiles/tarantool_box.dir/tuple.m.o 
CMakeFiles/tarantool_box.dir/index.m.o 
CMakeFiles/tarantool_box.dir/hash_index.m.o 
CMakeFiles/tarantool_box.dir/tree_index.m.o 
CMakeFiles/tarantool_box.dir/space.m.o CMakeFiles/tarantool_box.dir/port.m.o 
CMakeFiles/tarantool_box.dir/request.m.o CMakeFiles/tarantool_box.dir/txn.m.o 
CMakeFiles/tarantool_box.dir/box.m.o CMakeFiles/tarantool_box.dir/box.lua.c.o 
CMakeFiles/tarantool_box.dir/box_lua.m.o 
CMakeFiles/tarantool_box.dir/box_lua_space.m.o 
CMakeFiles/tarantool_box.dir/__/__/cfg/tarantool_box_cfg.c.o  -o tarantool_box 
-rdynamic libltbox.a ../../cfg/libcfg.a ../libcore.a ../../libev.a 
../../libeio.a ../../libcoro.a ../../libgopt.a 
../../third_party/luajit/src/libluajit.a ../../third_party/libobjc/libobjc.a 
../../libmisc.a -lpthread -ldl -lbfd -liberty -lm 
  ../../third_party/libobjc/libobjc.a: In function `objc_msgSend_fpret':
  (.text+0x6bb9): undefined reference to `__i686.get_pc_thunk.bx'
  ../../third_party/libobjc/libobjc.a: In function `objc_msgSend':
  (.text+0x6c58): undefined reference to `__i686.get_pc_thunk.bx'
  ../../third_party/libobjc/libobjc.a: In function `objc_msgSend_stret':
  (.text+0x6cf7): undefined reference to `__i686.get_pc_thunk.bx'
  collect2: error: ld returned 1 exit status
  make[3]: *** [src/box/tarantool_box] Error 1

(Full build log at
https://launchpadlibrarian.net/131061509/buildlog_ubuntu-raring-i386.tarantool_1.4.8%2B20130212.1728-1_FAILEDTOBUILD.txt.gz
if you need it.)

If you're using __i686.get_pc_thunk.bx, I believe it's conventional to
define it in the same file, rather than relying on some other library to
define it for you; see e.g.
http://www.gentoo.org/proj/en/hardened/pic-fix-guide.xml.  The following
patch should do the trick if you agree.

  * Make sure __i686.get_pc_thunk.bx is defined.

diff -Nru tarantool-1.4.8+20130212.1728/debian/patches/link-thunk.patch 
tarantool-1.4.8+20130212.1728/debian/patches/link-thunk.patch
--- tarantool-1.4.8+20130212.1728/debian/patches/link-thunk.patch       
1970-01-01 01:00:00.000000000 +0100
+++ tarantool-1.4.8+20130212.1728/debian/patches/link-thunk.patch       
2013-03-14 15:17:10.000000000 +0000
@@ -0,0 +1,17 @@
+Index: b/third_party/libobjc/objc_msgSend.x86-32.S
+===================================================================
+--- a/third_party/libobjc/objc_msgSend.x86-32.S
++++ b/third_party/libobjc/objc_msgSend.x86-32.S
+@@ -98,3 +98,12 @@
+       .type   objc_msgSend_stret, @function
+ objc_msgSend_stret:
+       MSGSEND 8, 12, 0
++
++      .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits
++.globl __i686.get_pc_thunk.bx
++      .hidden __i686.get_pc_thunk.bx
++      .p2align 4
++      .type __i686.get_pc_thunk.bx,@function
++__i686.get_pc_thunk.bx:
++      movl (%esp), %ebx
++      ret
diff -Nru tarantool-1.4.8+20130212.1728/debian/patches/series 
tarantool-1.4.8+20130212.1728/debian/patches/series
--- tarantool-1.4.8+20130212.1728/debian/patches/series 1970-01-01 
01:00:00.000000000 +0100
+++ tarantool-1.4.8+20130212.1728/debian/patches/series 2013-03-14 
14:56:41.000000000 +0000
@@ -0,0 +1 @@
+link-thunk.patch

Thanks,

-- 
Colin Watson                                       [cjwat...@ubuntu.com]


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to