From 3cb8c3265f639f8eebf32053457ae6a6d61e2413 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 7 Jan 2016 20:51:28 +0100 Subject: [PATCH] Remove the old VMS linker option file creator for shlibs Reviewed-by: Tim Hudson --- VMS/mkshared.com | 476 ----------------------------------------------- 1 file changed, 476 deletions(-) delete mode 100644 VMS/mkshared.com diff --git a/VMS/mkshared.com b/VMS/mkshared.com deleted file mode 100644 index b0d1fdaac3..0000000000 --- a/VMS/mkshared.com +++ /dev/null @@ -1,476 +0,0 @@ -$! MKSHARED.COM -- Create shareable images. -$! -$! P1: "64" for 64-bit pointers. -$! -$! P2: Zlib object library path (optional). -$! -$! Input: [.UTIL]LIBEAY.NUM,[.xxx.EXE.CRYPTO]SSL_LIBCRYPTO[32].OLB -$! [.UTIL]SSLEAY.NUM,[.xxx.EXE.SSL]SSL_LIBSSL[32].OLB -$! [.CRYPTO.xxx]OPENSSLCONF.H -$! Output: [.xxx.EXE.CRYPTO]SSL_LIBCRYPTO_SHR[32].OPT,.MAP,.EXE -$! [.xxx.EXE.SSL]SSL_LIBSSL_SRH[32].OPT,.MAP,.EXE -$! -$! So far, tests have only been made on VMS for Alpha. VAX will come in time. -$! =========================================================================== -$! -$! Announce/identify. -$! -$ proc = f$environment( "procedure") -$ write sys$output "@@@ "+ - - f$parse( proc, , , "name")+ f$parse( proc, , , "type") -$! -$! Save the original default device:[directory]. -$! -$ def_orig = f$environment( "default") -$ on error then goto tidy -$ on control_c then goto tidy -$! -$! SET DEFAULT to the main kit directory. -$! -$ proc = f$environment("procedure") -$ proc = f$parse( "A.;", proc)- "A.;" -$ set default 'proc' -$ set default [-] -$! -$! ----- Prepare info for processing: version number and file info -$ gosub read_version_info -$ if libver .eqs. "" -$ then -$ write sys$error "ERROR: Couldn't find any library version info..." -$ go to tidy: -$ endif -$ -$ if (f$getsyi("cpu") .lt. 128) -$ then -$ arch_vax = 1 -$ arch = "VAX" -$ else -$ arch_vax = 0 -$ arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE") -$ if (arch .eqs. "") then arch = "UNK" -$ endif -$! -$ archd = arch -$ lib32 = "32" -$ shr = "SHR32" -$! -$ if (p1 .nes. "") -$ then -$ if (p1 .eqs. "64") -$ then -$ archd = arch+ "_64" -$ lib32 = "" -$ shr = "SHR" -$ else -$ if (p1 .nes. "32") -$ then -$ write sys$output "Second argument invalid." -$ write sys$output "It should be "32", "64", or nothing." -$ exit -$ endif -$ endif -$ endif -$! -$! ----- Prepare info for processing: disabled algorithms info -$ gosub read_disabled_algorithms_info -$! -$ ZLIB = p2 -$ zlib_lib = "" -$ if (ZLIB .nes. "") -$ then -$ file2 = f$parse( ZLIB, "libz.olb", , , "syntax_only") -$ if (f$search( file2) .eqs. "") -$ then -$ write sys$output "" -$ write sys$output "The Option ", ZLIB, " Is Invalid." -$ write sys$output " Can't find library: ''file2'" -$ write sys$output "" -$ goto tidy -$ endif -$ zlib_lib = ", ''file2' /library" -$ endif -$! -$ if (arch_vax) -$ then -$ libtit = "CRYPTO_TRANSFER_VECTOR" -$ libid = "Crypto" -$ libnum = "[.UTIL]LIBEAY.NUM" -$ libdir = "[.''ARCHD'.EXE.CRYPTO]" -$ libmar = "''libdir'SSL_LIBCRYPTO_''shr'.MAR" -$ libolb = "''libdir'SSL_LIBCRYPTO''lib32'.OLB" -$ libopt = "''libdir'SSL_LIBCRYPTO_''shr'.OPT" -$ libobj = "''libdir'SSL_LIBCRYPTO_''shr'.OBJ" -$ libmap = "''libdir'SSL_LIBCRYPTO_''shr'.MAP" -$ libgoal= "''libdir'SSL_LIBCRYPTO_''shr'.EXE" -$ libref = "" -$ libvec = "LIBCRYPTO" -$ if f$search( libolb) .nes. "" then gosub create_vax_shr -$ libtit = "SSL_TRANSFER_VECTOR" -$ libid = "SSL" -$ libnum = "[.UTIL]SSLEAY.NUM" -$ libdir = "[.''ARCHD'.EXE.SSL]" -$ libmar = "''libdir'SSL_LIBSSL_''shr'.MAR" -$ libolb = "''libdir'SSL_LIBSSL''lib32'.OLB" -$ libopt = "''libdir'SSL_LIBSSL_''shr'.OPT" -$ libobj = "''libdir'SSL_LIBSSL_''shr'.OBJ" -$ libmap = "''libdir'SSL_LIBSSL_''shr'.MAP" -$ libgoal= "''libdir'SSL_LIBSSL_''shr'.EXE" -$ libref = "[.''ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO_''shr'.EXE" -$ libvec = "LIBSSL" -$ if f$search( libolb) .nes. "" then gosub create_vax_shr -$ else -$ libid = "Crypto" -$ libnum = "[.UTIL]LIBEAY.NUM" -$ libdir = "[.''ARCHD'.EXE.CRYPTO]" -$ libolb = "''libdir'SSL_LIBCRYPTO''lib32'.OLB" -$ libopt = "''libdir'SSL_LIBCRYPTO_''shr'.OPT" -$ libmap = "''libdir'SSL_LIBCRYPTO_''shr'.MAP" -$ libgoal= "''libdir'SSL_LIBCRYPTO_''shr'.EXE" -$ libref = "" -$ if f$search( libolb) .nes. "" then gosub create_nonvax_shr -$ libid = "SSL" -$ libnum = "[.UTIL]SSLEAY.NUM" -$ libdir = "[.''ARCHD'.EXE.SSL]" -$ libolb = "''libdir'SSL_LIBSSL''lib32'.OLB" -$ libopt = "''libdir'SSL_LIBSSL_''shr'.OPT" -$ libmap = "''libdir'SSL_LIBSSL_''shr'.MAP" -$ libgoal= "''libdir'SSL_LIBSSL_''shr'.EXE" -$ libref = "[.''ARCHD'.EXE.CRYPTO]SSL_LIBCRYPTO_''shr'.EXE" -$ if f$search( libolb) .nes. "" then gosub create_nonvax_shr -$ endif -$! -$ tidy: -$! -$! Close any open files. -$! -$ if (f$trnlnm( "libnum", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then - - close libnum -$! -$ if (f$trnlnm( "mar", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then - - close mar -$! -$ if (f$trnlnm( "opt", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then - - close opt -$! -$ if (f$trnlnm( "vf", "LNM$PROCESS", 0, "SUPERVISOR") .nes. "") then - - close vf -$! -$! Restore the original default device:[directory]. -$! -$ set default 'def_orig' -$ exit -$ -$! ----- Subroutines to build the shareable libraries -$! For each supported architecture, there's a main shareable library -$! creator, which is called from the main code above. -$! The creator will define a number of variables to tell the next levels of -$! subroutines what routines to use to write to the option files, call the -$! main processor, read_func_num, and when that is done, it will write version -$! data at the end of the .opt file, close it, and link the library. -$! -$! read_func_num reads through a .num file and calls the writer routine for -$! each line. It's also responsible for checking that order is properly kept -$! in the .num file, check that each line applies to VMS and the architecture, -$! and to fill in "holes" with dummy entries. -$! -$! The creator routines depend on the following variables: -$! libnum The name of the .num file to use as input -$! libolb The name of the object library to build from -$! libid The identification string of the shareable library -$! libopt The name of the .opt file to write -$! libtit The title of the assembler transfer vector file (VAX only) -$! libmar The name of the assembler transfer vector file (VAX only) -$! libmap The name of the map file to write -$! libgoal The name of the shareable library to write -$! libref The name of a shareable library to link in -$! -$! read_func_num depends on the following variables from the creator: -$! libwriter The name of the writer routine to call for each .num file line -$! ----- -$ -$! ----- Subroutines for non-VAX -$! ----- -$! The creator routine -$ create_nonvax_shr: -$ open /write opt 'libopt' -$ write opt "identification=""",libid," ",libverstr,"""" -$ write opt libolb, " /library" -$ if libref .nes. "" then write opt libref,"/SHARE" -$ write opt "SYMBOL_VECTOR=(-" -$ libfirstentry := true -$ libwrch := opt -$ libwriter := write_nonvax_transfer_entry -$ textcount = 0 -$ gosub read_func_num -$ write opt ")" -$ write opt "GSMATCH=",libvmatch,",",libver -$ close opt -$ link /map = 'libmap' /full /share = 'libgoal' 'libopt' /options - - 'zlib_lib' -$ return -$ -$! The record writer routine -$ write_nonvax_transfer_entry: -$ if libentry .eqs. ".dummy" then return -$ if info_kind .eqs. "VARIABLE" -$ then -$ pr:=DATA -$ else -$ pr:=PROCEDURE -$ endif -$ textcount_this = f$length(pr) + f$length(libentry) + 5 -$ if textcount + textcount_this .gt. 1024 -$ then -$ write opt ")" -$ write opt "SYMBOL_VECTOR=(-" -$ textcount = 16 -$ libfirstentry := true -$ endif -$ if libfirstentry -$ then -$ write 'libwrch' " ",libentry,"=",pr," -" -$ else -$ write 'libwrch' " ,",libentry,"=",pr," -" -$ endif -$ libfirstentry := false -$ textcount = textcount + textcount_this -$ return -$ -$! ----- Subroutines for VAX -$! ----- -$! The creator routine -$ create_vax_shr: -$ open /write mar 'libmar' -$ type sys$input:/out=mar: -; -; Transfer vector for VAX shareable image -; -$ write mar " .TITLE ",libtit -$ write mar " .IDENT /",libid,"/" -$ type sys$input:/out=mar: -; -; Define macro to assist in building transfer vector entries. Each entry -; should take no more than 8 bytes. -; - .MACRO FTRANSFER_ENTRY routine - .ALIGN QUAD - .TRANSFER routine - .MASK routine - JMP routine+2 - .ENDM FTRANSFER_ENTRY -; -; Place entries in own program section. -; -$ write mar " .PSECT $$",libvec,",QUAD,PIC,USR,CON,REL,LCL,SHR,EXE,RD,NOWRT" -$ write mar libvec,"_xfer:" -$ libwrch := mar -$ libwriter := write_vax_ftransfer_entry -$ gosub read_func_num -$ type sys$input:/out=mar: -; -; Allocate extra storage at end of vector to allow for expansion. -; -$ write mar " .BLKB 32768-<.-",libvec,"_xfer> ; 64 pages total." -$! libwriter := write_vax_vtransfer_entry -$! gosub read_func_num -$ write mar " .END" -$ close mar -$ open /write opt 'libopt' -$ write opt "identification=""",libid," ",libverstr,"""" -$ write opt libobj -$ write opt libolb, " /library" -$ if libref .nes. "" then write opt libref,"/SHARE" -$ type sys$input:/out=opt: -! -! Ensure transfer vector is at beginning of image -! -CLUSTER=FIRST -$ write opt "COLLECT=FIRST,$$",libvec -$ write opt "GSMATCH=",libvmatch,",",libver -$ type sys$input:/out=opt: -! -! make psects nonshareable so image can be installed. -! -PSECT_ATTR=$CHAR_STRING_CONSTANTS,NOWRT -$ libwrch := opt -$ libwriter := write_vax_psect_attr -$ gosub read_func_num -$ close opt -$ macro/obj='libobj' 'libmar' -$ link /map = 'libmap' /full /share = 'libgoal' 'libopt' /options - - 'zlib_lib' -$ return -$ -$! The record writer routine for VAX functions -$ write_vax_ftransfer_entry: -$ if info_kind .nes. "FUNCTION" then return -$ if libentry .eqs ".dummy" -$ then -$ write 'libwrch' " .BLKB 8" ! Dummy is zeroes... -$ else -$ write 'libwrch' " FTRANSFER_ENTRY ",libentry -$ endif -$ return -$! The record writer routine for VAX variables (should never happen!) -$ write_vax_psect_attr: -$ if info_kind .nes. "VARIABLE" then return -$ if libentry .eqs ".dummy" then return -$ write 'libwrch' "PSECT_ATTR=",libentry,",NOSHR" -$ return -$ -$! ----- Common subroutines -$! ----- -$! The .num file reader. This one has great responsibility. -$ read_func_num: -$ open /read libnum 'libnum' -$ goto read_nums -$ -$ read_nums: -$ libentrynum=0 -$ liblastentry:=false -$ entrycount=0 -$ loop: -$ read /end=loop_end /err=loop_end libnum line -$ lin = f$edit( line, "COMPRESS,TRIM") -$! Skip a "#" comment line. -$ if (f$extract( 0, 1, lin) .eqs. "#") then goto loop -$ entrynum = f$int(f$element( 1, " ", lin)) -$ entryinfo = f$element( 2, " ", lin) -$ curentry = f$element( 0, " ", lin) -$ info_exist = f$element( 0, ":", entryinfo) -$ info_platforms = ","+ f$element(1, ":", entryinfo)+ "," -$ info_kind = f$element( 2, ":", entryinfo) -$ info_algorithms = ","+ f$element( 3, ":", entryinfo)+ "," -$ if info_exist .eqs. "NOEXIST" then goto loop -$ truesum = 0 -$ falsesum = 0 -$ negatives = 1 -$ plat_i = 0 -$ loop1: -$ plat_entry = f$element( plat_i, ",", info_platforms) -$ plat_i = plat_i + 1 -$ if plat_entry .eqs. "" then goto loop1 -$ if plat_entry .nes. "," -$ then -$ if f$extract(0,1,plat_entry) .nes. "!" then negatives = 0 -$ if (arch_vax) -$ then -$ if plat_entry .eqs. "EXPORT_VAR_AS_FUNCTION" then - -$ truesum = truesum + 1 -$ if plat_entry .eqs. "!EXPORT_VAR_AS_FUNCTION" then - -$ falsesum = falsesum + 1 -$ endif -$! -$ if ((plat_entry .eqs. "VMS") .or. - - ((plat_entry .eqs. "ZLIB") .and. (ZLIB .nes. "")) .or. - - (arch_vax .and. (plat_entry .eqs. "VMSVAX"))) then - - truesum = truesum + 1 -$! -$ if ((plat_entry .eqs. "!VMS") .or. - - (arch_vax .and. (plat_entry .eqs. "!VMSVAX"))) then - - falsesum = falsesum + 1 -$! -$ goto loop1 -$ endif -$ endloop1: -$!DEBUG!$ if info_platforms - "EXPORT_VAR_AS_FUNCTION" .nes. info_platforms -$!DEBUG!$ then -$!DEBUG!$ write sys$output line -$!DEBUG!$ write sys$output " truesum = ",truesum,- -$!DEBUG! ", negatives = ",negatives,", falsesum = ",falsesum -$!DEBUG!$ endif -$ if falsesum .ne. 0 then goto loop -$ if truesum+negatives .eq. 0 then goto loop -$ alg_i = 0 -$ loop2: -$ alg_entry = f$element(alg_i,",",info_algorithms) -$ alg_i = alg_i + 1 -$ if alg_entry .eqs. "" then goto loop2 -$ if alg_entry .nes. "," -$ then -$ if disabled_algorithms - ("," + alg_entry + ",") .nes disabled_algorithms then goto loop -$ if f$trnlnm("OPENSSL_NO_"+alg_entry) .nes. "" then goto loop -$ goto loop2 -$ endif -$ endloop2: -$ if info_platforms - "EXPORT_VAR_AS_FUNCTION" .nes. info_platforms -$ then -$!DEBUG!$ write sys$output curentry," ; ",entrynum," ; ",entryinfo -$ endif -$ redo: -$ next:=loop -$ tolibentry=curentry -$ if libentrynum .ne. entrynum -$ then -$ entrycount=entrycount+1 -$ if entrycount .lt. entrynum -$ then -$!DEBUG!$ write sys$output "Info: entrycount: ''entrycount', entrynum: ''entrynum' => 0" -$ tolibentry=".dummy" -$ next:=redo -$ endif -$ if entrycount .gt. entrynum -$ then -$ write sys$error "Decreasing library entry numbers! Can't continue" -$ write sys$error """",line,"""" -$ close libnum -$ return -$ endif -$ libentry=tolibentry -$!DEBUG!$ write sys$output entrycount," ",libentry," ",entryinfo -$ if libentry .nes. "" .and. libwriter .nes. "" then gosub 'libwriter' -$ else -$ write sys$error "Info: ""''curentry'"" is an alias for ""''libentry'"". Overriding..." -$ endif -$ libentrynum=entrycount -$ goto 'next' -$ loop_end: -$ close libnum -$ return -$ -$! The version number reader -$ read_version_info: -$ libver = "" -$ open /read vf [.CRYPTO]OPENSSLV.H -$ loop_rvi: -$ read/err=endloop_rvi/end=endloop_rvi vf rvi_line -$ if rvi_line - "SHLIB_VERSION_NUMBER """ .eqs. rvi_line then - - goto loop_rvi -$ libverstr = f$element(1,"""",rvi_line) -$ libvmajor = f$element(0,".",libverstr) -$ libvminor = f$element(1,".",libverstr) -$ libvedit = f$element(2,".",libverstr) -$ libvpatch = f$cvui(0,8,f$extract(1,1,libvedit)+"@")-f$cvui(0,8,"@") -$ libvedit = f$extract(0,1,libvedit) -$ libver = f$string(f$int(libvmajor)*100)+","+- - f$string(f$int(libvminor)*100+f$int(libvedit)*10+f$int(libvpatch)) -$ if libvmajor .eqs. "0" -$ then -$ libvmatch = "EQUAL" -$ else -$ ! Starting with the 1.0 release, backward compatibility should be -$ ! kept, so switch over to the following -$ libvmatch = "LEQUAL" -$ endif -$ endloop_rvi: -$ close vf -$ return -$ -$! The disabled algorithms reader -$ read_disabled_algorithms_info: -$ disabled_algorithms = "," -$ open /read cf [.CRYPTO.'ARCH']OPENSSLCONF.H -$ loop_rci: -$ read/err=endloop_rci/end=endloop_rci cf rci_line -$ rci_line = f$edit(rci_line,"TRIM,COMPRESS") -$ rci_ei = 0 -$ if f$extract(0,9,rci_line) .eqs. "# define " then rci_ei = 2 -$ if f$extract(0,8,rci_line) .eqs. "#define " then rci_ei = 1 -$ if rci_ei .eq. 0 then goto loop_rci -$ rci_e = f$element(rci_ei," ",rci_line) -$ if f$extract(0,11,rci_e) .nes. "OPENSSL_NO_" then goto loop_rci -$ disabled_algorithms = disabled_algorithms + f$extract(11,999,rci_e) + "," -$ goto loop_rci -$ endloop_rci: -$ close cf -$ return -- 2.25.1