Thanks for reply.
"Gary R. Hook" <nospam@nospammers.net> wrote in message news:<8q8mc.5557$PB5.3226@newssvr24.news.prodigy.c om>...
> > 1. Is they are any good way to know order in which shared libraries
> > are loaded on AIX.
>
> Depth first.
I was asking more in terms of lazyloading, since library order then
is determined by execution path. It would be nice if there is some
tool/runtime linker flags to examine this.
> Actually, no. With RTL, the breadth-first load order is computed
> and used when searching for symbols.
With deps for main at root the tree?
> I think you need to give this up. If RTL is defined as negating
> lazy loading, then it does so for a reason.
There is no documentation anywhere which says that conceptually these
two cannot be combined. But as you mentioned, its not buying me much
so I am giving it up.
> There are rules governing where modules go. For details, read
> http://www-106.ibm.com/developerwork...s/loader1.html
> On AIX 5.2 there's more flexibility in how segments are used.
> Read the current documentation on the [Very] Large Progam Support
> Overview: http://www16.boulder.ibm.com/pseries...htm#a179c11c5d
I read these links and I have following questions:
1. Why does document say that for Large Address model, we have only 2
segs left for shared mem services? We can set bmaxdata to maximum of
0xA (2 GB) and that leaves us with 1 GB (4 segs) after taking out a GB
for 0x1,0x2,0xD,0xF.
2. With VLModel do we have all addresses from 0x3-0xC,0xE with
-bmaxdata:0XD0000000? Now the most important question. I have shared
libs that eat around 2.8GB of VM space(data+text). So can I use VL
model? and all these shared libs will be loaded privately right? (in
0x3-0xC,0xE and part of 0x2) .Is there any way to make them shared
among processes.
3. Document says with VL model when we specify -bmaxdata>0xAFFFFFFF,
a program will not use globally shared libraries- disastrous

So
0xD,0XF can be reused for loading my own process private shared libs?
> Recorded, or actually exported? You may need to use -bexpall or
> -bexpfull when building your main app, as the linker only automatically
I used that when building main and also all libraries. But i recorded
depenency only in main and not in library. In other words, libd.so
depends on libb.so. I I record -lb -ld only in main and don't record
anything when building d.so, w/o lazyloading and with RTL works fine.
But w lazyloading+RTL causes crash.
(All that follows is without lazyloading and with Run Time Linking)
I am assuming its not a must to record dependencies when I am building
libraries. What are implications of not recording dependencies? One
thing is it seems to be a good idea w.r.t where libraries are loaded
since I don't need to make sure I have space for a library and its
dependents in same segment - so this may cause better usage of memory.
Any bad effects?
Thanks,
Sunil.