mirror of
https://github.com/openssl/openssl.git
synced 2024-11-27 05:21:51 +08:00
e84193e43d
As part of this, change util/mkdef.pl to stop adding libraries to depend on in its output. mkdef.pl should ONLY output a symbol vector. Because symbol names can't be longer than 31 characters, we use the compiler to shorten those that are longer down to 23 characters plus an 8 character CRC. To make sure users of our header files will pick up on that automatically, add the DEC C supported extra headers files __decc_include_prologue.h and __decc_include_epilogue.h. Furthermore, we add a config.com, so VMS people can configure just as comfortably as any Unix folks, thusly: @config Reviewed-by: Rich Salz <rsalz@openssl.org>
56 lines
1.6 KiB
Perl
56 lines
1.6 KiB
Perl
#! /usr/bin/perl
|
|
|
|
# This script will translate any SYMBOL_VECTOR item that has a translation
|
|
# in CXX$DEMANGLER_DB. The latter is generated by and CC/DECC command that
|
|
# uses the qualifier /REPOSITORY with the build directory as value. When
|
|
# /NAMES=SHORTENED has been used, this file will hold the translations from
|
|
# the original symbols to the shortened variants.
|
|
#
|
|
# CXX$DEMAGLER_DB. is an ISAM file, but with the magic of RMS, it can be
|
|
# read as a text file, with each record as one line.
|
|
#
|
|
# The lines will have the following syntax for any symbol found that's longer
|
|
# than 31 characters:
|
|
#
|
|
# LONG_symbol_34567890123{cksum}$LONG_symbol_34567890123_more_than_31_chars
|
|
#
|
|
# $ is present at the end of the shortened symbol name, and is preceded by a
|
|
# 7 character checksum. The $ makes it easy to separate the shortened name
|
|
# from the original one.
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
usage() if scalar @ARGV < 1;
|
|
|
|
my %translations = ();
|
|
|
|
open DEMANGLER_DATA, $ARGV[0]
|
|
or die "Couldn't open $ARGV[0]: $!\n";
|
|
while(<DEMANGLER_DATA>) {
|
|
chomp;
|
|
(my $translated, my $original) = split /\$/;
|
|
$translations{$original} = $translated.'$';
|
|
}
|
|
close DEMANGLER_DATA;
|
|
|
|
$| = 1; # Autoflush
|
|
while(<STDIN>) {
|
|
s@
|
|
((?:[A-Za-z0-9_]+)\/)?([A-Za-z0-9_]+)=(PROCEDURE|DATA)
|
|
@
|
|
if (defined($translations{$2})) {
|
|
my $trans = $translations{$2};
|
|
my $trans_uc = uc $trans;
|
|
if (defined($1) && $trans ne $trans_uc) {
|
|
"$trans_uc/$trans=$3"
|
|
} else {
|
|
"$trans=$3"
|
|
}
|
|
} else {
|
|
$&
|
|
}
|
|
@gxe;
|
|
print $_;
|
|
}
|