[Bug 1263576] Re: coinor-osi fails to build from source on arm64 (but did succeed before)

Bug Watch Updater 1263576 at bugs.launchpad.net
Mon Jan 6 10:21:12 UTC 2014


Launchpad has imported 1 comments from the remote bug at
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59695.

If you reply to an imported comment from within Launchpad, your comment
will be sent to the remote bug automatically. Read more about
Launchpad's inter-bugtracker facilities at
https://help.launchpad.net/InterBugTracking.

------------------------------------------------------------------------
On 2014-01-06T09:51:25+00:00 Doko-v wrote:

seen in a segfault running the tests in the coinor-osi package,
https://launchpad.net/bugs/1263576, both in saucy and trusty, version 0.106.4
and 0.106.5. Version 0.103 doesn't show the issue.

both the 4.7 and 4.8 linaro branches show this behaviour, and trunk 20131121
(didn't build a newer one yet).

William Grant tracked that down to a bug with very negative vcall_offsets in
aarch64 multiple inheritance thunks. The example below has two consecutive
thunks, with the second adding 263 instead of subtracting 264.
aarch64_build_constant seems to not handle negative integers. He tried a quick
gcc patch to avoid using aarch64_build_constant, and the coinor-osi tests succeed.

0000000000401ca4 <_ZTv0_n256_N1C2adEv>:
  401ca4:       f9400010        ldr     x16, [x0]
  401ca8:       f8500211        ldr     x17, [x16,#-256]
  401cac:       8b110000        add     x0, x0, x17
  401cb0:       17fffff9        b       401c94 <_ZN1C2adEv>

[...]

0000000000401cc4 <_ZTv0_n264_N1C2aeEv>:
  401cc4:       f9400010        ldr     x16, [x0]
  401cc8:       d28020f1        mov     x17, #0x107                     // #263
  401ccc:       f8716a11        ldr     x17, [x16,x17]
  401cd0:       8b110000        add     x0, x0, x17
  401cd4:       17fffff8        b       401cb4 <_ZN1C2aeEv>

Any chance for a quick 2013 review?

Thanks, Matthias

--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -2540,8 +2540,8 @@
 	  addr = plus_constant (Pmode, temp0, vcall_offset);
       else
 	{
-	  aarch64_build_constant (IP1_REGNUM, vcall_offset);
-	  addr = gen_rtx_PLUS (Pmode, temp0, temp1);
+	  aarch64_add_constant (IP0_REGNUM, IP1_REGNUM, vcall_offset);
+	  addr = temp0;
 	}

       aarch64_emit_move (temp1, gen_rtx_MEM (Pmode,addr));

Reply at: https://bugs.launchpad.net/ubuntu/+source/coinor-
osi/+bug/1263576/comments/5


** Changed in: gcc
       Status: Unknown => New

** Changed in: gcc
   Importance: Unknown => Medium

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-4.8 in Ubuntu.
https://bugs.launchpad.net/bugs/1263576

Title:
  coinor-osi fails to build from source on arm64 (but did succeed
  before)

Status in The GNU Compiler Collection:
  New
Status in Linaro GCC:
  New
Status in “clp” package in Ubuntu:
  Confirmed
Status in “coinor-osi” package in Ubuntu:
  Fix Released
Status in “gcc-4.7” package in Ubuntu:
  Fix Released
Status in “gcc-4.8” package in Ubuntu:
  New
Status in “clp” source package in Trusty:
  Confirmed
Status in “coinor-osi” source package in Trusty:
  Fix Released
Status in “gcc-4.7” source package in Trusty:
  Fix Released
Status in “gcc-4.8” source package in Trusty:
  New

Bug description:
  coinor-osi fails to build from source on arm64 (but did fail before),
  running the test just segfaults. lowering the compiler options to -O0
  shows the same behavior.

  cd test; make test
  make[2]: Entering directory `/build/buildd/coinor-osi-0.106.4/test'
  g++ -DHAVE_CONFIG_H -I. -I`echo .` -I../src/Osi  -I`echo ./../src/Osi` -I`echo ./../src/OsiCommonTest` -I/usr/include/coin         -D_FORTIFY_SOURCE=2  -g -O2 -Wformat -Werror=format-security   -DOSI_BUILD -c -o unitTest.o unitTest.cpp
  g++ -DHAVE_CONFIG_H -I. -I`echo .` -I../src/Osi  -I`echo ./../src/Osi` -I`echo ./../src/OsiCommonTest` -I/usr/include/coin         -D_FORTIFY_SOURCE=2  -g -O2 -Wformat -Werror=format-security   -DOSI_BUILD -c -o OsiTestSolver.o OsiTestSolver.cpp
  g++ -DHAVE_CONFIG_H -I. -I`echo .` -I../src/Osi  -I`echo ./../src/Osi` -I`echo ./../src/OsiCommonTest` -I/usr/include/coin         -D_FORTIFY_SOURCE=2  -g -O2 -Wformat -Werror=format-security   -DOSI_BUILD -c -o OsiTestSolverInterface.o OsiTestSolverInterface.cpp
  g++ -DHAVE_CONFIG_H -I. -I`echo .` -I../src/Osi  -I`echo ./../src/Osi` -I`echo ./../src/OsiCommonTest` -I/usr/include/coin         -D_FORTIFY_SOURCE=2  -g -O2 -Wformat -Werror=format-security   -DOSI_BUILD -c -o OsiTestSolverInterfaceIO.o OsiTestSolverInterfaceIO.cpp
  g++ -DHAVE_CONFIG_H -I. -I`echo .` -I../src/Osi  -I`echo ./../src/Osi` -I`echo ./../src/OsiCommonTest` -I/usr/include/coin         -D_FORTIFY_SOURCE=2  -g -O2 -Wformat -Werror=format-security   -DOSI_BUILD -c -o OsiTestSolverInterfaceTest.o OsiTestSolverInterfaceTest.cpp
  /bin/bash ../libtool --tag=CXX --mode=link g++  -g -O2 -Wformat -Werror=format-security   -DOSI_BUILD  -Wl,-Bsymbolic-functions -Wl,-z,relro -o unitTest  unitTest.o OsiTestSolver.o OsiTestSolverInterface.o OsiTestSolverInterfaceIO.o OsiTestSolverInterfaceTest.o       ../src/OsiCommonTest/libOsiCommonTests.la       ../src/Osi/libOsi.la -lCoinUtils -lbz2 -lz -lm         
  mkdir .libs
  g++ -g -O2 -Wformat -Werror=format-security -DOSI_BUILD -Wl,-Bsymbolic-functions -Wl,-z -Wl,relro -o .libs/unitTest unitTest.o OsiTestSolver.o OsiTestSolverInterface.o OsiTestSolverInterfaceIO.o OsiTestSolverInterfaceTest.o  ../src/OsiCommonTest/.libs/libOsiCommonTests.so ../src/Osi/.libs/libOsi.so -lCoinUtils -lbz2 -lz -lm
  creating unitTest
  ./unitTest -mpsDir=`echo /usr/share/coin/Data/Sample` 
  Testing OsiRowCut with OsiTestSolverInterface
  make[2]: *** [test] Segmentation fault
  make[2]: Leaving directory `/build/buildd/coinor-osi-0.106.4/test'
  make[1]: *** [test] Error 2

To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc/+bug/1263576/+subscriptions



More information about the foundations-bugs mailing list