|Bill Allombert on Mon, 06 Jul 2009 19:14:04 +0200|
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
|Re: bug 828|
On Mon, Jul 06, 2009 at 03:40:36PM +0100, Jason Moxham wrote: >> On Mon, Jul 06, 2009 at 02:22:01AM +0100, Jason Moxham wrote: >>> Hi >>> >>> I've been looking at bug 828 dynamic loading of a function in a static >>> build of pari. >>> Here is a guess based on my debug below , note the line numbers will not >>> match as I added a bit debugging stuff >>> FILE ../src/language/init.c LINE 836 >>> 2 [main] gp-sta 5304 _cygtls::handle_exceptions: Error while dumping >>> state >>> (probably corrupted stack) >>> Segmentation fault (core dumped) >>> >>> It look like that when you load up the function addii from the dynamic >>> library it also loads up another copy of the varibles avma and bot , >>> which are then accessed and of course the values they have are garbage. >> >> Interesting. What are exactly the linker flags used ? >> There are probably some linker flags that could fix that. >> >> Could you try to rebuild everything with -fPIC ? This cahnges the way >> global variables are linked, so it might make a difference here. >> >> Cheers, >> Bill. >> >> ------------------------------------------------------- > > If I'm reading this correctly there is no solution. Windows(and > apparently some form of BSD) does not support functions in a dll reading > global varibles in the original executible. Therefore our static build > will never work in windows and we should disable that part of the test > for windows. It works in the shared case as a dll can read a varible in > another dll. > > follow the the long threads below > > http://sourceware.org/ml/cygwin/2004-04/msg00184.html > > http://sourceware.org/ml/cygwin/2004-04/msg00351.html Thanks for your link and research. However this does not explain why this works with gp-dyn. I still wonder what happen when gp-sta is built with -fPIC. Cheers, Bill.