[OpenIndiana-discuss] Solaris C++ feof(): are we doing things differently?
Bob Friesenhahn
bfriesen at simple.dallas.tx.us
Sun Oct 27 16:13:01 UTC 2013
On Sun, 27 Oct 2013, Bryan N Iotti wrote:
> Hi all,
>
> got a little question for you that's been driving me crazy.
>
> I'm trying to compile the FEBio finite element analysis software on OI hipster 151a8.
>
> Studio 12.3 CC compilation is not working at all, with hundreds of errors, so for now I turned to g++.
>
> g++ compiles fine with -g -m64 (I want the debug flags for now) and runs. However when I try to open a file from the verification suite it sends a SIGCABRT and terminates with "terminate called after throwing an instance of 'XMLReader::EndOfFile'
> terminate called recursively".
This is quite likely from a libtool-related bug which shows up with
-m64 on Solaris when using GCC. The bug causes C++ exception catching
to not work reliably. I have attached the patch which was submitted
to libtool. This fix will be in the next (soon forthecoming) libtool
release.
Bob
--
Bob Friesenhahn
bfriesen at simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer, http://www.GraphicsMagick.org/
-------------- next part --------------
On Solaris, catch code for C++ exceptions is in libgcc_s. The libc has
default catch code as well, that does an abort. GCC by default emits on
purpose -lgcc_s -lc -lgcc_s. libtool's de-duplication magic turns this
into -lc -lgcc_s, which unsurprisingly is the wrong order, since
exceptions will be seen by libc first. Disable de-duplication for this
reason, such that we can have working C++ libtool built libraries.
--- libltdl/config/ltmain.m4sh
+++ libltdl/config/ltmain.m4sh
@@ -398,7 +398,7 @@
test "$opt_debug" = : || func_append preserve_args " --debug"
case $host in
- *cygwin* | *mingw* | *pw32* | *cegcc*)
+ *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2*)
# don't eliminate duplications in $postdeps and $predeps
opt_duplicate_compiler_generated_deps=:
;;
--- libltdl/config/ltmain.sh
+++ libltdl/config/ltmain.sh
@@ -1180,7 +1180,7 @@
test "$opt_debug" = : || func_append preserve_args " --debug"
case $host in
- *cygwin* | *mingw* | *pw32* | *cegcc*)
+ *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2*)
# don't eliminate duplications in $postdeps and $predeps
opt_duplicate_compiler_generated_deps=:
;;
More information about the OpenIndiana-discuss
mailing list