summaryrefslogtreecommitdiff
path: root/os2
diff options
context:
space:
mode:
authorIlya Zakharevich <ilya@math.berkeley.edu>2001-05-19 00:30:45 -0400
committerJarkko Hietaniemi <jhi@iki.fi>2001-05-20 11:08:27 +0000
commitbea19d3fe5b254bd582228ebbf5d315c969caf0e (patch)
tree2a2457daeacc367296065d1dd6e1a85bc93c7775 /os2
parente71dd89fd63e118daa683ec46ecbae005acc944d (diff)
downloadperl-bea19d3fe5b254bd582228ebbf5d315c969caf0e.tar.gz
DLL name mangling on OS/2
Message-ID: <20010519043045.A17033@math.ohio-state.edu> p4raw-id: //depot/perl@10166
Diffstat (limited to 'os2')
-rw-r--r--os2/os2.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/os2/os2.c b/os2/os2.c
index 0112900152..4e96002a14 100644
--- a/os2/os2.c
+++ b/os2/os2.c
@@ -1329,7 +1329,18 @@ mod2fname(pTHX_ SV *sv)
#ifdef USE_THREADS
sum++; /* Avoid conflict of DLLs in memory. */
#endif
- sum += PERL_VERSION * 200 + PERL_SUBVERSION * 2; /* */
+ /* We always load modules as *specific* DLLs, and with the full name.
+ When loading a specific DLL by its full name, one cannot get a
+ different DLL, even if a DLL with the same basename is loaded already.
+ Thus there is no need to include the version into the mangling scheme. */
+#if 0
+ sum += PERL_VERSION * 200 + PERL_SUBVERSION * 2; /* Up to 5.6.1 */
+#else
+# ifndef COMPATIBLE_VERSION_SUM /* Binary compatibility with the 5.00553 binary */
+# define COMPATIBLE_VERSION_SUM (5 * 200 + 53 * 2)
+# endif
+ sum += COMPATIBLE_VERSION_SUM;
+#endif
fname[pos] = 'A' + (sum % 26);
fname[pos + 1] = 'A' + (sum / 26 % 26);
fname[pos + 2] = '\0';