[Info-vax] Linking problem with multiply defined symbols, how to resolve?

Richard Levitte richard at levitte.org
Wed Sep 28 03:33:58 EDT 2022


Hi all!

I have this problem, that I want to build an app or a shareable image, which is linked with another shared library, but which also implements its own variant of symbols that are defined in that other shared library.

This is intentional.  It works absolutely fine to do this on the Unixen I've access to, as well as on Windows...  but VMS fails me.

Is this at all possible, or must I seek another method to get what I want?
(there is the possibilty to link with a .OLB library instead of a shareable image, but I'd like to explore the possibilities a little more before I resort to that)

An example below.  legacy-dso-legacyprov.OBJ defines all the ERR symbols that LINK complains about, and they are also defined by OSSL$libcrypto03_shr.EXE.

----------8<----------
OPEN/WRITE/SHARE=READ OPT_FILE [.providers]legacy-components.OPT
WRITE OPT_FILE "[.crypto]legacy-dso-cpuid.OBJ,-"
WRITE OPT_FILE "[.crypto]legacy-dso-ctype.OBJ,-"
WRITE OPT_FILE "[.crypto]legacy-dso-mem_clr.OBJ,-"
WRITE OPT_FILE "[.providers]legacy-dso-legacyprov.OBJ"
WRITE OPT_FILE "[.providers]liblegacy.OLB/LIB"
WRITE OPT_FILE "[.providers]libcommon.OLB/LIB"
WRITE OPT_FILE "[]OSSL$libcrypto03_shr.EXE/SHARE"
CLOSE OPT_FILE
LINK /MAP='F$PARSE(".MAP","[.providers]legacy.EXE")' /NODEBUG/NOTRACEBACK/SHARE=[.providers]legacy.EXE [.providers]legacy.OPT/OPT, [.providers]legacy-components.OPT/OPT 
%ILINK-W-MULDEF, symbol CRYPTO_memcmp multiply defined
	module: CPUID 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.crypto]legacy-dso-cpuid.OBJ;1 
%ILINK-W-MULDEF, symbol OPENSSL_cleanse multiply defined
	module: MEM_CLR 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.crypto]legacy-dso-mem_clr.OBJ;1 
%ILINK-W-MULDEF, symbol ERR_clear_last_mark multiply defined
	module: LEGACYPROV 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.providers]legacy-dso-legacyprov.OBJ;1 
%ILINK-W-MULDEF, symbol ERR_new multiply defined
	module: LEGACYPROV 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.providers]legacy-dso-legacyprov.OBJ;1 
%ILINK-W-MULDEF, symbol ERR_pop_to_mark multiply defined
	module: LEGACYPROV 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.providers]legacy-dso-legacyprov.OBJ;1 
%ILINK-W-MULDEF, symbol ERR_set_debug multiply defined
	module: LEGACYPROV 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.providers]legacy-dso-legacyprov.OBJ;1 
%ILINK-W-MULDEF, symbol ERR_set_error multiply defined
	module: LEGACYPROV 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.providers]legacy-dso-legacyprov.OBJ;1 
%ILINK-W-MULDEF, symbol ERR_set_mark multiply defined
	module: LEGACYPROV 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.providers]legacy-dso-legacyprov.OBJ;1 
%ILINK-W-MULDEF, symbol ERR_vset_error multiply defined
	module: LEGACYPROV 
	file: USR_DISK:[RICLE.TEST.openssl-3_1_0-dev.providers]legacy-dso-legacyprov.OBJ;1 
----------8<----------

Cheers,
Richard



More information about the Info-vax mailing list