[gambit-list] executable works, loadable module segfaults

REPLeffect repleffect at gmail.com
Sat Sep 29 15:44:06 EDT 2012


For the sake of completeness, I thought I would update this again.

Turns out that the -fno-keep-inline-dllexport is necessary to get Qt
to compile under MinGW's 4.6.2 g++ compiler.  Evidently all of those
inline dllexport function attribute definitions cause serious object
bloat and cause the compiler to run out of memory.  Here's a quote
from the gcc docs (section 6.30 "Declaring Attributes of Functions"):

"In previous versions of GCC, the dllexport attribute was ignored for
inlined functions, unless the -fkeep-inline-functions flag had been
used. The default behaviour now is to emit all dllexported inline
functions; however, this can cause object file-size bloat, in which
case the old behaviour can be restored by using
-fno-keep-inline-dllexport"

I find it interesting that the old compiler (4.4.5) does not cause the
problem I experienced, but yet adding the option that is supposed to
restore the old compiler's behavior for the new compiler (4.6.2)
*does* cause the problem.

I was going to rebuild Qt (currently using 4.7.4) to take out the
-fno-keep-inline-dllexport option, in case linking against Qt DLLs
with that option might cause the same problem I had in my test program
(which was *not* linked with Qt's DLLs).  However, Qt won't compile
successfully with g++ 4.6.2 from MinGW without that option.

I haven't yet tried to build an loadable library which is linked with
Qt's DLLs against the Gambit library which was compiled without
"-fno-keep-inline-dllexport".  I kind of suspect that this scenario
will work, since the problem seemed to be with Gambit's library being
compiled that way.  At the moment I'm building Qt *with*
-fno-keep-inline-dllexport just to get it back the way it was.  I'll
try to report back later on what I discover about a Qt-linked loadable
library.

I would be interested to know why the -fno-keep-inline-dllexport
option causes a problem for Gambit.  I'm sure I don't have enough
understanding of the inter-workings of Gambit to figure it out myself,
but I'd be willing to try to help as much as I can to help determine
the cause.

REPLeffect


More information about the Gambit-list mailing list