gcc breakage?? : undefined reference to `__morestack'

Jakub Jelinek jakub at redhat.com
Sun May 15 09:03:51 UTC 2011


On Sat, May 14, 2011 at 07:08:08PM -0400, sean darcy wrote:
> 
> F15 updated.
> gcc-4.6.0-7.fc15.x86_64
> gcc-c++-4.6.0-7.fc15.x86_64
> libgcc-4.6.0-7.fc15.x86_64
> 
> Building kdenlive and mlt (which have built before Thursday) I'm getting
> 
> g++ -shared -Wl,-soname,libmlt++.so.3 -o libmlt++.so.0.7.3 MltConsumer.o 
> MltDeque.o MltEvent.o MltFactory.o MltField.o MltFilter.o 
> MltFilteredConsumer.o MltFilteredProducer.o MltFrame.o MltGeometry.o 
> MltMultitrack.o MltParser.o MltPlaylist.o MltProducer.o MltProfile.o 
> MltProperties.o MltPushConsumer.o MltRepository.o MltService.o 
> MltTokeniser.o MltTractor.o MltTransition.o -Wl,--no-undefined 
> -Wl,--as-needed -L../framework -lmlt
> MltConsumer.o: In function `Mlt::Consumer::get_consumer()':
> MltConsumer.cpp:(.text+0x17): undefined reference to `__morestack'
> ............
> 
> Isn't __morestack an internal gcc reference? It doesn't appear in the 
> mlt source code.

It appears in code that is compiled with -fsplit-stack and is defined in libgcc.a.
Wonder why this library uses it, anyway, if you are linking with g++ instead of
gcc, you probably need to link explicitly against -lgcc, because __morestack is
libgcc.a only symbol, not defined in libgcc_s.so.1.

This isn't something that has changed in gcc for several months, so the only
possible change is on the side of your package or on other libraries it
links against.

	Jakub


More information about the test mailing list