[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