summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig A. Berry <craigberry@mac.com>2022-10-17 20:05:13 -0500
committerCraig A. Berry <craigberry@mac.com>2022-10-18 16:51:03 -0500
commit86afe6b06de7f1c961f08890ea7dad6c1acbb0d8 (patch)
tree821c26e4a29c9ed559cfbba0fea89177d29e4e8b
parentcbe0d257f1da7358d391918e27708774c141ad21 (diff)
downloadperl-86afe6b06de7f1c961f08890ea7dad6c1acbb0d8.tar.gz
Remove ancient and broken GCC for VMS support
There has not been a viable GCC for VMS in a couple of decades and the hacks and workarounds that were necessary then are unlikely to be helpful for any future work. Reportedly significant portions of the GCC toolchain were available in GNAT Ada, but there was never an independent release of the C compiler and that support has now been removed as well. Cleaning this up should make it easier to add alternate compiler support in the future, such as for the clang port in progress at VSI.
-rw-r--r--configure.com229
-rw-r--r--vms/descrip_mms.template17
-rw-r--r--vms/gen_shrfls.pl30
-rw-r--r--vms/vmsish.h4
4 files changed, 16 insertions, 264 deletions
diff --git a/configure.com b/configure.com
index d95791068f..4b10aba411 100644
--- a/configure.com
+++ b/configure.com
@@ -36,7 +36,6 @@ $! VMS-isms we will need:
$ echo = "write sys$output "
$ cat = "type"
$ delete := delete ! local symbol overrides globals with qualifiers
-$ gcc_symbol = "gcc"
$ ld = "Link/nodebug"
$ ans = ""
$ macros = ""
@@ -1290,7 +1289,6 @@ $!
$ version = revision + "_" + patchlevel + "_" + subversion
$!
$!: see if we need a special compiler
-$! cc_list = "cc/decc|gcc" !%Config-I-VMS, compiler symbols/commands
$!
$ nocc = "f"
$ vms_cc_dflt = ""
@@ -1318,11 +1316,7 @@ $ SET ON
$ IF (silent) THEN GOSUB Shut_up
$ IF tmp.NE.%X10B90001
$ THEN
-$ IF tmp.NE.%X10000001
-$ THEN
-$ nocc = "t" !%X10000001 is return from gcc
-$ GOTO Gcc_initial_check
-$ ENDIF
+$ GOTO Cxx_initial_check
$ ENDIF
$!
$ GOSUB List_Parse
@@ -1336,33 +1330,6 @@ $ vms_cc_dflt = "/decc"
$ vms_cc_available = vms_cc_available + "cc/decc "
$ ENDIF
$!
-$Gcc_initial_check:
-$ echo "Checking for gcc"
-$ OPEN/WRITE CONFIG gccvers.lis
-$ SET NOON
-$ DEFINE/USER_MODE SYS$ERROR CONFIG
-$ DEFINE/USER_MODE SYS$OUTPUT CONFIG
-$ 'gcc_symbol'/noobj/version _nla0:
-$ tmp = $status
-$ SET ON
-$ IF (silent) THEN GOSUB Shut_up
-$ CLOSE CONFIG
-$ IF (tmp.NE.%X10000001).and.(tmp.ne.%X00030001)
-$ THEN
-$ echo "Symbol ""''gcc_symbol'"" is not defined. I guess you do not have it."
-$ DELETE/NOLOG/NOCONFIRM gccvers.lis;
-$ GOTO Cxx_initial_check
-$ ENDIF
-$ OPEN/READ CONFIG gccvers.lis
-$GCC_List_Read:
-$ READ/END_OF_FILE=GCC_List_End CONFIG line
-$ GOTO GCC_List_Read
-$GCC_List_End:
-$ CLOSE CONFIG
-$ echo line
-$ vms_cc_available = vms_cc_available + "''gcc_symbol' "
-$ DELETE/NOLOG/NOCONFIRM gccvers.lis;
-$!
$Cxx_initial_check:
$!
$! In order to build with the HP C++ compiler, invoke configure.com with "-Dusecxx" on
@@ -1456,8 +1423,6 @@ $ dflt = "cxx"
$ ELSE
$ dflt = "cc''vms_cc_dflt'" !-> "cc" in case first compile went OK
$ ENDIF
-$ ELSE
-$ dflt = gcc_symbol
$ ENDIF
$ rp = "Use which C compiler? [''dflt'] "
$ GOSUB myread
@@ -1506,11 +1471,6 @@ $ THEN
$ ccname := DEC
$ C_COMPILER_Replace = "CC=cc=''Mcc'"
$ ENDIF
-$ IF Mcc .EQS. "gcc"
-$ THEN
-$ ccname := GCC
-$ C_COMPILER_Replace = "CC=cc=''Mcc'"
-$ ENDIF
$ ENDIF
$Decc_Version_check:
$ ccversion=""
@@ -1562,121 +1522,7 @@ $ echo4 "adding /NOANSI_ALIAS qualifier to ccflags."
$ ccflags = ccflags + "/NOANSI_ALIAS"
$ DELETE/NOLOG/NOCONFIRM deccvers.*;
$ ENDIF
-$Gcc_check:
-$ gccversion = ""
-$ IF ccname .EQS. "GCC"
-$ THEN
-$ vaxcrtl_olb = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB")
-$ vaxcrtl_exe = F$SEARCH("SYS$SHARE:VAXCRTL.EXE")
-$ gcclib_olb = F$SEARCH("GNU_CC:[000000]GCCLIB.OLB")
-$ IF gcclib_olb .EQS. ""
-$ THEN
-$! These objects/libs come w/ gcc 2.7.2 for AXP:
-$ tmp = F$SEARCH("GNU_CC:[000000]libgcc2.olb")
-$ IF tmp .NES. "" then gcclib_olb = tmp
-$ tmp = F$SEARCH("GNU_CC:[000000]libgcclib.olb")
-$ IF tmp .NES. ""
-$ THEN
-$ IF gcclib_olb .EQS. ""
-$ THEN gcclib_olb = tmp
-$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
-$ ENDIF
-$ ENDIF
-$ tmp = F$SEARCH("SYS$LIBRARY:VAXCRTL.OLB")
-$ IF tmp .NES. ""
-$ THEN
-$ IF gcclib_olb .EQS. ""
-$ THEN gcclib_olb = tmp
-$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
-$ ENDIF
-$ ENDIF
-$ tmp = F$SEARCH("GNU_CC:[000000]crt0.obj")
-$ IF tmp .NES. ""
-$ THEN
-$ IF gcclib_olb .EQS. ""
-$ THEN gcclib_olb = tmp
-$ ELSE gcclib_olb = gcclib_olb + "/lib," + tmp
-$ ENDIF
-$ ENDIF
-$ IF gcclib_olb .EQS. vaxcrtl_olb THEN gcclib_olb = "" !goofy order of axplibs
-$ ELSE
-$ gcclib_olb = gcclib_olb + "/lib"
-$ ENDIF
-$ IF gcclib_olb .NES. "" .AND. -
- (vaxcrtl_olb .NES. "" .OR. -
- vaxcrtl_exe .NES. "" )
-$ THEN
-$ echo ""
-$ echo4 "Checking for GNU cc in disguise and/or its version number..." !>&4
-$ OPEN/WRITE CONFIG gccvers.c
-$ WRITE CONFIG "#include <stdio.h>"
-$ WRITE CONFIG "int main() {"
-$ WRITE CONFIG "#ifdef __GNUC__"
-$ WRITE CONFIG "#ifdef __VERSION__"
-$ WRITE CONFIG " printf(""%s\n"", __VERSION__);"
-$ WRITE CONFIG "#else"
-$ WRITE CONFIG " printf(""%s\n"", ""1"");"
-$ WRITE CONFIG "#endif"
-$ WRITE CONFIG "#endif"
-$ WRITE CONFIG " exit(0);"
-$ WRITE CONFIG "}"
-$ CLOSE CONFIG
-$ DEFINE SYS$ERROR _NLA0:
-$ DEFINE SYS$OUTPUT _NLA0:
-$ 'Mcc' gccvers.c
-$ tmp = $status
-$ DEASSIGN SYS$ERROR _NLA0:
-$ DEASSIGN SYS$OUTPUT _NLA0:
-$ IF (silent) THEN GOSUB Shut_up
-$ DEFINE SYS$ERROR _NLA0:
-$ DEFINE SYS$OUTPUT _NLA0:
-$ IF vaxcrtl_exe .EQS. ""
-$ THEN
-$ IF F$LOCATE("VAXCRTL",gcclib_olb).NE.F$LENGTH(gcclib_olb)
-$ THEN
-$ link/nodebug gccvers.obj,'gcclib_olb',SYS$LIBRARY:VAXCRTL/Library
-$ tmp = $status
-$ ELSE
-$ link/nodebug gccvers.obj,'gcclib_olb'
-$ tmp = $status
-$ ENDIF
-$ ELSE
-$ OPEN/WRITE CONFIG GCCVERS.OPT
-$ WRITE CONFIG "SYS$SHARE:VAXCRTL/SHARE"
-$ CLOSE CONFIG
-$ link/nodebug gccvers.obj,GCCVERS.OPT/OPT,'gcclib_olb'
-$ tmp = $status
-$ ENDIF
-$ DEASSIGN SYS$ERROR
-$ DEASSIGN SYS$OUTPUT
-$ IF (silent) THEN GOSUB Shut_up
-$ OPEN/WRITE CONFIG gccvers.out
-$ DEFINE SYS$ERROR CONFIG
-$ DEFINE SYS$OUTPUT CONFIG
-$ mcr []gccvers.exe
-$ tmp = $status
-$ CLOSE CONFIG
-$ DEASSIGN SYS$OUTPUT
-$ DEASSIGN SYS$ERROR
-$ IF (silent) THEN GOSUB Shut_up
-$ OPEN/READ CONFIG gccvers.out
-$ READ/END_OF_FILE=Gcc_cleanup CONFIG line
-$Gcc_cleanup:
-$ CLOSE CONFIG
-$ DELETE/NOLOG/NOCONFIRM gccvers.*;
-$ IF F$LOCATE("GNU C version ",line).NE.F$LENGTH(line)
-$ THEN
-$ echo "You are not using GNU cc."
-$ GOTO Host_name
-$ ELSE
-$ echo "You are using GNU cc ''line'"
-$ gccversion = line
-$ ccname := "GCC"
-$ C_COMPILER_Replace = "CC=cc=''Mcc'"
-$ GOTO Include_dirs
-$ ENDIF
-$ ENDIF
-$ ENDIF
+$!
$Cxx_Version_check:
$ IF ccname .EQS. "CXX"
$ THEN
@@ -1769,17 +1615,6 @@ $ line = F$EDIT(line,"TRIM") !bit redundant but we're in no big hurry
$ DELETE/NOLOG/NOCONFIRM ccvms.lis;
$ RETURN
$!
-$Include_dirs:
-$!: What should the include directory be ? (.TLB text libraries)
-$ dflt = gcclib_olb
-$ rp = "Where are the include files you want to use? "
-$ IF f$length( rp + "[''dflt'] " ) .GT. 76
-$ THEN rp = F$FAO("!AS!/!AS",rp,"[''dflt'] ")
-$ ELSE rp = rp + "[''dflt'] "
-$ ENDIF
-$ GOSUB myread
-$ usrinc = ans
-$!
$!: see if we have to deal with yellow pages, now NIS.
$!: now get the host name
$Host_name:
@@ -3400,24 +3235,13 @@ $ ENDIF
$!
$! Some that we need to invoke the compiler for
$!
-$!
$! handy construction aliases/symbols
$!
$ OS := "open/write CONFIG []try.c"
$ WS := "write CONFIG"
$ CS := "close CONFIG"
$ DS := "delete/nolog/noconfirm []try.*;*"
-$ Needs_Opt := N
$ good_compile = %X10B90001
-$ IF ccname .EQS. "GCC"
-$ THEN
-$ open/write OPTCHAN []try.opt
-$ write OPTCHAN "Gnu_CC:[000000]gcclib.olb/library"
-$ write OPTCHAN "Sys$Share:VAXCRTL/Share"
-$ Close OPTCHAN
-$ Needs_Opt := Y
-$ good_compile = %X10000001
-$ ENDIF
$ IF ccname .EQS. "CXX"
$ THEN
$ good_compile = %X15F60001
@@ -3516,14 +3340,8 @@ $ GOSUB compile_ok
$ DEFINE/USER_MODE SYS$ERROR _NLA0:
$ DEFINE/USER_MODE SYS$OUTPUT _NLA0:
$ SET NOON
-$ IF Needs_Opt
-$ THEN
-$ 'ld' try.obj,try.opt/opt
-$ link_status = $status
-$ ELSE
-$ 'ld' try.obj
-$ link_status = $status
-$ ENDIF
+$ 'ld' try.obj
+$ link_status = $status
$ SET ON
$ IF F$SEARCH("try.obj") .NES. "" THEN DELETE/NOLOG/NOCONFIRM try.obj;
$ RETURN
@@ -5472,21 +5290,14 @@ $ ENDIF
$!
$! Some that are compiler or VMS version sensitive
$!
-$! Gnu C stuff
-$ IF ccname .EQS. "GCC"
+$ IF ccname .EQS. "CXX"
$ THEN
-$ d_attribut="define"
-$ vms_cc_type="gcc"
+$ vms_cc_type="cxx"
$ ELSE
-$ IF ccname .EQS. "CXX"
-$ THEN
-$ vms_cc_type="cxx"
-$ ELSE
-$ vms_cc_type="cc"
-$ ENDIF
-$ d_attribut="undef"
+$ vms_cc_type="cc"
$ ENDIF
$!
+$ d_attribut="undef"
$ d_getitimer="define"
$ d_gettimeod="define"
$ d_mmap="define"
@@ -6665,7 +6476,6 @@ $ WC "freetype='void'"
$ WC "full_ar='" + "'"
$ WC "full_csh='" + " '"
$ WC "full_sed='_NLA0:'"
-$ WC "gccversion='" + gccversion + "'"
$ WC "gidformat='lu'"
$ WC "gidsign='1'"
$ WC "gidsize='4'"
@@ -7173,20 +6983,7 @@ $! Okay, we've gotten here. Build munchconfig.exe
$ COPY/NOLOG [-.vms]munchconfig.c []
$ COPY/NOLOG [-.vms]'Makefile_SH' []
$ 'Perl_CC' 'ccflags' munchconfig.c
-$ IF Needs_Opt
-$ THEN
-$ OPEN/WRITE CONFIG []munchconfig.opt
-$ IF ccname .EQS. "GCC"
-$ THEN
-$ WRITE CONFIG "Gnu_CC:[000000]gcclib.olb/library"
-$ ENDIF
-$ WRITE CONFIG "Sys$Share:VAXCRTL/Share"
-$ CLOSE CONFIG
-$ 'ld'/EXE='exe_ext' munchconfig'obj_ext',munchconfig.opt/opt
-$ DELETE/NOLOG/NOCONFIRM munchconfig.opt;
-$ ELSE
-$ 'ld'/EXE='exe_ext' munchconfig'obj_ext'
-$ ENDIF
+$ 'ld'/EXE='exe_ext' munchconfig'obj_ext'
$ IF F$SEARCH("munchconfig''obj_ext'") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig'obj_ext';
$ IF F$SEARCH("munchconfig.c") .NES. "" THEN DELETE/NOLOG/NOCONFIRM munchconfig.c;
$ IF ccname .EQS. "CXX"
@@ -7238,7 +7035,6 @@ $ IF use_two_pot_malloc THEN WC "#define TWO_POT_OPTIMIZE"
$ IF mymalloc THEN WC "#define EMBEDMYMALLOC"
$ IF use_pack_malloc THEN WC "#define PACK_MALLOC"
$ IF use_debugmalloc THEN WC "#define DEBUGGING_MSTATS"
-$ IF ccname .EQS. "GCC" THEN WC "#define GNUC_ATTRIBUTE_CHECK"
$ IF (Has_Dec_C_Sockets)
$ THEN
$ WC "#define VMS_DO_SOCKETS"
@@ -7298,12 +7094,6 @@ $ DECCXX_REPLACE = "DECCXX=DECCXX=1"
$ ELSE
$ DECCXX_REPLACE = "DECCXX="
$ ENDIF
-$ IF ccname .EQS. "GCC"
-$ THEN
-$ GNUC_REPLACE = "GNUC=gnuc=1"
-$ ELSE
-$ GNUC_REPLACE = "GNUC="
-$ ENDIF
$ IF Has_Dec_C_Sockets
$ THEN
$ SOCKET_REPLACE = "SOCKET=DECC_SOCKETS=1"
@@ -7350,7 +7140,6 @@ $ WC := write CONFIG
$ WC "''DECC_REPLACE'"
$ WC "''DECCXX_REPLACE'"
$ WC "''ARCH_TYPE'"
-$ WC "''GNUC_REPLACE'"
$ WC "''SOCKET_REPLACE'"
$ WC "''THREAD_REPLACE'"
$ WC "''C_Compiler_Replace'"
diff --git a/vms/descrip_mms.template b/vms/descrip_mms.template
index d9426b4153..951c842c0d 100644
--- a/vms/descrip_mms.template
+++ b/vms/descrip_mms.template
@@ -23,7 +23,6 @@
~DECC~
~DECCXX~
-~GNUC~
~ARCH-TYPE~ = 1
~THREAD~
~SOCKET~
@@ -86,21 +85,6 @@ ARCHCORE = [.lib.$(ARCHNAME).$(PERL_VERSION).CORE]
ARCHAUTO = [.lib.$(ARCHNAME).$(PERL_VERSION).auto]
#: >>>>>Compiler-specific options <<<<<
-.ifdef GNUC
-.first
- @ If F$TrnLnm("Sys").eqs."" Then Define/NoLog SYS GNU_CC_Include:[VMS]
-CC = gcc
-# -fno-builtin avoids bug in gcc up to version 2.6.2 which can destroy
-# data when memcpy() is called on large (>64 kB) blocks of memory
-# (fixed in gcc 2.6.3)
-XTRACCFLAGS = /Obj=$(MMS$TARGET_NAME)$(O)/NoCase_Hack/Optimize=2
-DBGSPECFLAGS =
-XTRADEF =
-XTRAOBJS =
-LIBS1 = GNU_CC:[000000]GCCLIB.OLB/Library
-LIBS2 = Sys$Share:VAXCRTL/Shareable
-POSIX =
-.else
XTRAOBJS =
LIBS1 = $(XTRAOBJS)
DBGSPECFLAGS = /Show=(expansion,include)/machine
@@ -125,7 +109,6 @@ XTRACCFLAGS = /Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=$(OBJVAL)
.endif
XTRADEF =
POSIX = POSIX
-.endif
#: >>>>> Configuration options <<<<<
#: __DEBUG__: builds images with full VMS debugger support
diff --git a/vms/gen_shrfls.pl b/vms/gen_shrfls.pl
index 7b9f606194..660da1dbed 100644
--- a/vms/gen_shrfls.pl
+++ b/vms/gen_shrfls.pl
@@ -56,8 +56,8 @@ my $docc = ($cc_cmd !~ /^~~/);
print "\$docc = $docc\n" if $debug;
my ( $use_threads, $use_mymalloc, $care_about_case, $shorten_symbols,
- $debugging_enabled, $hide_mymalloc, $isgcc, $use_perlio, $dir )
- = ( 0, 0, 0, 0, 0, 0, 0, 0 );
+ $debugging_enabled, $hide_mymalloc, $use_perlio, $dir )
+ = ( 0, 0, 0, 0, 0, 0, 0 );
if (-f 'perl.h') { $dir = '[]'; }
elsif (-f '[-]perl.h') { $dir = '[-]'; }
@@ -73,7 +73,6 @@ while(<CONFIG>) {
$shorten_symbols++ if /d_vms_shorten_long_symbols='(define|yes|true|t|y|1)'/i;
$debugging_enabled++ if /usedebugging_perl='(define|yes|true|t|y|1)'/i;
$hide_mymalloc++ if /embedmymalloc='(define|yes|true|t|y|1)'/i;
- $isgcc++ if /gccversion='[^']/;
$use_perlio++ if /useperlio='(define|yes|true|t|y|1)'/i;
}
close CONFIG;
@@ -89,10 +88,6 @@ if (my ($prefix,$defines,$suffix) =
}
print "Filtered \$cc_cmd: \\$cc_cmd\\\n" if $debug;
-# check for gcc - if present, we'll need to use MACRO hack to
-# define global symbols for shared variables
-
-print "\$isgcc: $isgcc\n" if $debug;
print "\$debugging_enabled: $debugging_enabled\n" if $debug;
my $objsuffix = shift @ARGV;
@@ -127,7 +122,6 @@ while (my $line = <$makedefs>) {
}
}
-if ($debugging_enabled and $isgcc) { $vars{'colors'}++ }
foreach (split /\s+/, $extnames) {
my($pkgname) = $_;
$pkgname =~ s/::/__/g;
@@ -142,9 +136,8 @@ my $marord = 1;
open(OPTBLD,'>', "${dir}${dbgprefix}perlshr_bld.opt")
or die "$0: Can't write to ${dir}${dbgprefix}perlshr_bld.opt: $!\n";
-unless ($isgcc) {
- print OPTBLD "PSECT_ATTR=LIB\$INITIALIZE,GBL,NOEXE,NOWRT,NOSHR,LONG\n";
-}
+
+print OPTBLD "PSECT_ATTR=LIB\$INITIALIZE,GBL,NOEXE,NOWRT,NOSHR,LONG\n";
print OPTBLD "case_sensitive=yes\n" if $care_about_case;
my $count = 0;
foreach my $var (sort (keys %vars)) {
@@ -157,19 +150,8 @@ foreach my $func (sort keys %fcns) {
open(OPTATTR, '>', "${dir}perlshr_attr.opt")
or die "$0: Can't write to ${dir}perlshr_attr.opt: $!\n";
-if ($isgcc) {
-# TODO -- lost ability to distinguish constant vars from others when
-# we switched to using makedef.pl for input.
-# foreach my $var (sort keys %cvars) {
-# print OPTATTR "PSECT_ATTR=${var},PIC,OVR,RD,NOEXE,NOWRT,SHR\n";
-# }
- foreach my $var (sort keys %vars) {
- print OPTATTR "PSECT_ATTR=${var},PIC,OVR,RD,NOEXE,WRT,NOSHR\n";
- }
-}
-else {
- print OPTATTR "! No additional linker directives are needed when using DECC\n";
-}
+
+print OPTATTR "! No additional linker directives are needed when using DECC\n";
close OPTATTR;
my $incstr = 'perl,globals';
diff --git a/vms/vmsish.h b/vms/vmsish.h
index 3e5dea7fa0..c22b2a009e 100644
--- a/vms/vmsish.h
+++ b/vms/vmsish.h
@@ -46,9 +46,7 @@
#include <unixio.h>
#include <unixlib.h>
#include <file.h> /* it's not <sys/file.h>, so don't use I_SYS_FILE */
-#if (defined(__DECC) && defined(__DECC_VER) && __DECC_VER > 20000000) || defined(__DECCXX)
-# include <unistd.h> /* DECC has this; gcc doesn't */
-#endif
+#include <unistd.h>
#ifdef NO_PERL_TYPEDEFS /* a2p; we don't want Perl's special routines */
# define DONT_MASK_RTL_CALLS