AIX 3.1.5 X libraries

Marc J. Stephenson/140000;1C-22 marc at stingray.austin.ibm.com
Thu May 9 07:43:07 AEST 1991


In article <19722 at frame.UUCP> pcc at frame.com (Camden Clarke) writes:
>Running AIX 3.1.5 (aka 3.1 with the 3005 update applied).
>I've been using '/usr/ucb/nm' (BSD nm) to examine the supplied X libraries,
>and I'm getting results that I can't explain...
>  % /usr/ucb/nm libX11.a | grep XOpenDisplay
>  0000c210 T .XOpenDisplay
>  00006e6c D XOpenDisplay
>  % /usr/ucb/nm libXt.a | grep XOpenDisplay
>         U XOpenDisplay
>  000041c4 T .XOpenDisplay
>  000041c4 t .XOpenDisplay
>  00008938 d XOpenDisplay
>  % /usr/ucb/nm libdps.a | grep XOpenDisplay
>   [ basically same results as for libXt... ] 
>It looks to me like there are three copies of XOpenDisplay, one in each
>library, but I don't think that's really the case.  My best guess is that
>this is caused by shared libraries.  (And speaking of shared libraries,
>where is a good place to start reading in info to understand AIX shared
>libraries?  Can you link a binary without shared libraries, like -Bstatic
>under SunOS?) Any help would be appreciated. -Cam Clarke

You are correct in assuming that there is really only one copy of 
XOpenDisplay - in libX11.a.  The symbols from the other two libraries are
linkage routine symbols - calls from within those libraries to XOpenDisplay()
go through a linkage routine (glink.s) which handles the "out-of-module"
call, basically indirectly.  The linker and the loader take care of the
details.  A better way than /usr/ucb/nm to look at the information is
dump -tv; /usr/ucb/nm seems to lack the granularity or functionality to
discern the differences (dump -tv dumps the symbol table in a somewhat
readable fashion, at least more detailed).

You can indeed link unshared via the linker option -b nso.  If you
try to link libc.a unshared, you still have to import the system calls, though,
as in  cc hello.c -bnso -bimport:/lib/syscalls.exp.

As for where to read about shared libs, I'm not sure where the best place
to look in info would be (I haven't had time to check in there).  I used
"man ld" to get the linker flag information.  Sorry.  If I get time, I'll
look around.
-- 
Marc Stephenson		      IBM PSPA (Personal System Programming - Austin,TX)
DISCLAIMER: The content of this posting is independent of official IBM position.
marc at stingray.austin.ibm.com 	VNET: MARC at AUSVMQ  	IBM T/L: 793-3796



More information about the Comp.unix.aix mailing list