summaryrefslogtreecommitdiff
path: root/ext/DynaLoader
diff options
context:
space:
mode:
authorCharles Bailey <bailey@newman.upenn.edu>2000-02-28 02:51:00 +0000
committerbailey <bailey@newman.upenn.edu>2000-02-28 02:51:00 +0000
commitb6837a3b27252f74ff8399514c00fa18a38dd3a6 (patch)
tree7675b6a013750668456e27509daacd6804832173 /ext/DynaLoader
parent752635eac25aa1a1ce0245c7df3133d95799c5e4 (diff)
downloadperl-b6837a3b27252f74ff8399514c00fa18a38dd3a6.tar.gz
Support case-sensitive symbols usage in linker
p4raw-id: //depot/vmsperl@5302
Diffstat (limited to 'ext/DynaLoader')
-rw-r--r--ext/DynaLoader/DynaLoader_pm.PL1
-rw-r--r--ext/DynaLoader/dl_vms.xs8
2 files changed, 8 insertions, 1 deletions
diff --git a/ext/DynaLoader/DynaLoader_pm.PL b/ext/DynaLoader/DynaLoader_pm.PL
index 5cc5aead11..8341b36130 100644
--- a/ext/DynaLoader/DynaLoader_pm.PL
+++ b/ext/DynaLoader/DynaLoader_pm.PL
@@ -198,6 +198,7 @@ sub bootstrap {
croak("Can't locate loadable object for module $module in \@INC (\@INC contains: @INC)")
unless $file; # wording similar to error from 'require'
+ $file = uc($file) if $Is_VMS && $Config{d_vms_case_sensitive_symbols};
my $bootname = "boot_$module";
$bootname =~ s/\W/_/g;
@dl_require_symbols = ($bootname);
diff --git a/ext/DynaLoader/dl_vms.xs b/ext/DynaLoader/dl_vms.xs
index 29ab7c31e2..d7a1f863f3 100644
--- a/ext/DynaLoader/dl_vms.xs
+++ b/ext/DynaLoader/dl_vms.xs
@@ -65,6 +65,12 @@ static AV *dl_require_symbols = Nullav;
#include <ssdef.h>
#include <starlet.h>
+#if defined(VMS_WE_ARE_CASE_SENSITIVE)
+#define DL_CASE_SENSITIVE 1<<4
+#else
+#define DL_CASE_SENSITIVE 0
+#endif
+
typedef unsigned long int vmssts;
struct libref {
@@ -142,7 +148,7 @@ my_find_image_symbol(struct dsc$descriptor_s *imgname,
{
unsigned long int retsts;
VAXC$ESTABLISH(findsym_handler);
- retsts = lib$find_image_symbol(imgname,symname,entry,defspec);
+ retsts = lib$find_image_symbol(imgname,symname,entry,defspec,DL_CASE_SENSITIVE);
return retsts;
}