Operating System - OpenVMS
1828217 Members
2245 Online
109975 Solutions
New Discussion

Symbol resolution on I64 VMS

 
SOLVED
Go to solution
Douglas Rupp
Advisor

Symbol resolution on I64 VMS

Given a program that references decc$main and C$_EXIT1. Decc$main is resolved in decc$shr.exe, but C$_EXIT1 is resolved in module c$errno.obj out of starlet.olb. Linking in c$errno.obj after decc$shr.exe should cause lots of multiple definitions of symbols, like C$_EPERM, which are defined in both decc$shr.exe and c$errno.obj but doesn't. Why? I can't find anything in the VMS ELf spec regarding the symbol binding or visibility attributes that would allow for this.
4 REPLIES 4
Hoff
Honored Contributor

Re: Symbol resolution on I64 VMS

As this whole area is entirely transparent to a C program, I have to inquire some background.

It might appear that the application design or build is up to something here that's a little, um, unusual.

Can you post up a short example of or a description of the implementation, and how the application might be built?

Or are you building a compiler?
Douglas Rupp
Advisor

Re: Symbol resolution on I64 VMS

Hoff is right to say the question is independent of my "C" example.

I'm just trying to better understand how the VMS linker resolves symbols.
Hoff
Honored Contributor
Solution

Re: Symbol resolution on I64 VMS

I'll assume you've seen:

http://h71000.www7.hp.com/doc/83final/4548/4548pro_003.html#itn_symb_res_ch

I haven't looked to see if the selective search is set on the c$errno.obj in the library, but that's what I'd check.
Douglas Rupp
Advisor

Re: Symbol resolution on I64 VMS

Thanks, that was it.

$ lib/list/only=C$ERRNO sys$library:starlet.olb/full
Directory of ELF OBJECT library SYS$COMMON:[SYSLIB]STARLET.OLB;2

C$ERRNO Ident 0 Inserted 27-JUN-2005 10:48:09 381 symbols
***Selectively searched***