Re: libgcc_s dependency when linking with -shared

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ejohanson <epj@xxxxxxxxxxxxxxxx> writes:

> I gave the -static-libgcc option a try, and ldd no longer reports a
> dependency on libgcc_s.so, but the the application instantly crashes on the
> call to dlopen() to load the shared library.  So it seems like libgcc_s is
> still in there-- it's just that now it's staticly linked as opposed to
> dynamic.

Sure.  That is exactly what happens with libgcc when you use
-static-libgcc.  Why are you focusing on libgcc as the problem?  What
led you to look at that?


> file f1.c:
> void dummyfunc(void) {
>     /* make a single function call into the 3rd-party library to force
> linking against their ".a" lib */
> }
> 
> file f2.c
> main() {
>     dlopen("f1.so",RTLD_NOW|RTLD_GLOBAL);
> }
> 
> the above two files are compiled like this on solaris 8 x86 intel:
> gcc -static-libgcc -shared -fPIC f1.c -o f1.so thirdparty.a
> gcc -static-libgcc -o f2 f2.c -ldl
> 
> when i try to run f2, it segfaults on the call to dlopen which tries to open
> f1.so.  the two files are literally as simple as the ones shown above (i am
> not oversimplifying this example for the sake of the message board).

There are a number of possibilities here.  You should be able to use a
debugger to see if the crash is occurring in a global constructor.
You should be able to use ld.so debugging (e.g., set the environment
variable LD_DEBUG, if that works on Solaris) to see where the crash
might be happening in the dynamic linker.

Ian

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux