Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

missing GLIBCXX_3.4.9 symbol(s) and 1 assert failure #1

Open
sarnold opened this issue Feb 17, 2011 · 2 comments
Open

missing GLIBCXX_3.4.9 symbol(s) and 1 assert failure #1

sarnold opened this issue Feb 17, 2011 · 2 comments

Comments

@sarnold
Copy link

sarnold commented Feb 17, 2011

In working with the latest code, both packaging for Gentoo and testing the analysis tools on an actual work task, I had a couple of things to report and a question. See here for the package build setup, basically some bash functions to run the package build commands and install things (the latter part is all manual). http://www.gentoogeek.org/portage-overlay/dev-util/oink-stack/

Issue 1)
Building as a Gentoo package using "./configure perform" everything builds fine with a current toolchain (gcc-4.5.2 plus the tools below) but the regression tests fail with an assert error:

x86_64-pc-linux-gnu-g++ -o triv/aSEb.gr.exe -DGRAMMAR_NAME=\"triv/aSEb.bin\" -g -Wall -Wno-deprecated -D__UNIX__ -DUSE_ENDSOURCELOC=1 -O2 -DNDEBUG -D__LINUX__ -I. -I../smbase -I../ast -Ic -fno-strict-aliasing triv/aSEb.gr.gen.o c/cc_lang.o c/parssppt.o c/lexer1.o c/lexer1yy.o c/lexer2.o trivmain.cc trivlex.o libelkhound.a -g -Wall -Werror ../ast/libast.a ../smbase/libsmbase.a
rm triv/aSEb.gr.gen.o
make[2]: Leaving directory `/var/tmp/portage/dev-util/oink-stack-9999/work/oink-stack-9999/elkhound'
------------ [1] triv/aSEb.gr.exe triv/aSEb.in1 ------------
Exception thrown: Assertion failed: !isStatic(base), file ../smbase/srcloc.h line 369
Assertion failed: !isStatic(base), file ../smbase/srcloc.h line 369

[1] A regression test command failed:
  triv/aSEb.gr.exe triv/aSEb.in1
make[1]: *** [check] Error 2
make[1]: Leaving directory `/var/tmp/portage/dev-util/oink-stack-9999/work/oink-stack-9999/elkhound'
make: *** [check-rec] Error 1

System uname: Linux-2.6.36.3-rt-x86_64-AMD
sys-libs/glibc: 2.11.3
sys-devel/binutils: 2.21
sys-devel/gcc: 3.4.6-r2, 4.4.4-r2, 4.5.2
sys-devel/libtool: 2.4-r1
sys-devel/make: 3.81-r2

The same assert error is induced when scanning a particular source file with qual.

Issue 2)
Your docs say platform requires gcc 3.4, so I tried 3.4.6 since that's the only 3.4.x version in the Gentoo package tree. So, in building the platform stuff with gcc-3.4.6 there is a missing symbol error from an older gcc libc++:

$ make
cd libc_glibc-2.3.5 && make all
make[1]: Entering directory `oink-stack-9999/platform-model/libc_glibc-2.3.5'
cd src && make all
make[2]: Entering directory `oink-stack-9999/platform-model/libc_glibc-2.3.5/src'
-- aio.c
      gcc       aio.c           -> aio.o
      cpp       aio.c           -> aio.oink.i
      oinkx     aio.oink.i      -> aio.odir
oink/oink: /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by oink-stack-9999/oink/oink)
oink/oink: /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by oink-stack-9999/oink/oink)
make[2]: *** [aio.odir] Error 1
rm aio.oink.i
make[2]: Leaving directory `oink-stack-9999/platform-model/libc_glibc-2.3.5/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `oink-stack-9999/platform-model/libc_glibc-2.3.5'

It turns out those symbols are only found in dbg_util.o as shown below:

$ readelf -s ../oink/oink | grep 'GLIBCXX_3\.4\.9' | c++filt | grep _ZN
    50: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND _ZNSo9_M_insertIPKvEERSoT@GLIBCXX_3.4.9 (6)

$ nm -A *.o | grep "_ZNSo9_M_insertIPKvEERSoT"
dbg_util.o:                 U _ZNSo9_M_insertIPKvEERSoT_

So my question is...

Did you have any plans to update the above source file so it does not depend on such a narrow version of the C++ library implementation? If so, that should make it possible to package it (relatively) normally, otherwise it seems like I'd need to build it in a chroot with a very specific toolchain just so I can use it (and I would not have an easy way to package it to use the platform-model). Although shared libs/executables are preferred, I would at least be able to package it without the platform stuff.

Thanks in advance again

@dsw
Copy link
Owner

dsw commented May 24, 2015

I just built and ran tests for the whole of oink-stack on Ubuntu 14.04 and it worked end to end out of the box. Are you still having difficulties?

@gy-lehel
Copy link

elkhound/grampar.tab.cc:1299 calls yylex with a single parameter, while definition of macro in line 85 defines it with two.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants