Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/crypto/openssl/VMS/translatesyms.pl
34860 views
1
#! /usr/bin/env perl
2
# Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
3
#
4
# Licensed under the Apache License 2.0 (the "License"). You may not use
5
# this file except in compliance with the License. You can obtain a copy
6
# in the file LICENSE in the source distribution or at
7
# https://www.openssl.org/source/license.html
8
9
10
# This script will translate any SYMBOL_VECTOR item that has a translation
11
# in CXX$DEMANGLER_DB. The latter is generated by and CC/DECC command that
12
# uses the qualifier /REPOSITORY with the build directory as value. When
13
# /NAMES=SHORTENED has been used, this file will hold the translations from
14
# the original symbols to the shortened variants.
15
#
16
# CXX$DEMAGLER_DB. is an ISAM file, but with the magic of RMS, it can be
17
# read as a text file, with each record as one line.
18
#
19
# The lines will have the following syntax for any symbol found that's longer
20
# than 31 characters:
21
#
22
# LONG_symbol_34567890123{cksum}$LONG_symbol_34567890123_more_than_31_chars
23
#
24
# $ is present at the end of the shortened symbol name, and is preceded by a
25
# 7 character checksum. The $ makes it easy to separate the shortened name
26
# from the original one.
27
28
use strict;
29
use warnings;
30
31
usage() if scalar @ARGV < 1;
32
33
my %translations = ();
34
35
open DEMANGLER_DATA, $ARGV[0]
36
or die "Couldn't open $ARGV[0]: $!\n";
37
while(<DEMANGLER_DATA>) {
38
s|\R$||;
39
(my $translated, my $original) = split /\$/;
40
$translations{$original} = $translated.'$';
41
}
42
close DEMANGLER_DATA;
43
44
$| = 1; # Autoflush
45
while(<STDIN>) {
46
s@
47
((?:[A-Za-z0-9_]+)\/)?([A-Za-z0-9_]+)=(PROCEDURE|DATA)
48
@
49
if (defined($translations{$2})) {
50
my $trans = $translations{$2};
51
my $trans_uc = uc $trans;
52
if (defined($1) && $trans ne $trans_uc) {
53
"$trans_uc/$trans=$3"
54
} else {
55
"$trans=$3"
56
}
57
} else {
58
$&
59
}
60
@gxe;
61
print $_;
62
}
63
64