reload .so without restarting process

Hatt Tom net.study.sea@gmail.com
Tue Dec 3 02:28:00 GMT 2013


Here is one  example :

First, I linked  liba.so into executable target by the compiler
command  "g++ -la " at linking stage .

then ,I use dlopen to load liba.so in the executable's process .

At this time ,the reference count of liba.so is 2 ,  am I right ?



2013/12/3 Sam Varshavchik <mrsam@courier-mta.com>:
> Hatt Tom writes:
>
>> Thanks ! The problem has been resolved .
>>
>> And hereis one question I should get to be clear of . if I link one
>> .so into one executeable file , would this increase the reference
>> count by one already ? so dlclose would not unload that .so until the
>> reference count decrease to zero .
>
>
> Correct.
>
>
>>
>> 2013/12/2 Sam Varshavchik <mrsam@courier-mta.com>:
>> > Hatt Tom writes:
>> >
>> >> If I use dlsym() to load the address manually ,will  GOT  be  needed
>> >> any
>> >> more ?
>> >
>> >
>> > If you always use dlopen(), and the dlsym() to call methods from a .so,
>> > you
>> > don't really need to link to it directly, any more, so this is a moot
>> > point.
>> >
>> >
>> >
>> >> 2013/12/2 Nicholas Mc Guire <der.herr@hofr.at>:
>> >> > On Mon, 02 Dec 2013, Hatt Tom wrote:
>> >> >
>> >> >> And also : why cannot I dlclose a .so that I've linked my executable
>> >> >> to, in the usual fashion.
>> >> >>
>> >> >> is it because the reference count of that .so  would not alwayes to
>> >> >> be
>> >> >> zero ?
>> >> >>
>> >> >> It seems puzzling to me ?
>> >> >>
>> >> > how would you ensure consistency of the GOT ?
>> >> > I think the problem is that you would end up with invalid addresses
>> >> > in
>> >> > the GOT
>> >> > as they were setup by ld based on link-time information.
>> >> >
>> >> > thx!
>> >> > hofrat
>> >>
>> >>
>> >>
>> >> --
>> >> Best Regards!
>>
>>
>>
>> --
>> Best Regards!



-- 
Best Regards!



More information about the Gcc-help mailing list