VMS: Disable the warning MAYLOSEDATA3

The warning MAYLOSEDATA3 is one you will always get when compiling
source that calculates the difference between two pointers with
/POINTER_SIZE=64.

The reason is quite simple, ptrdiff_t is always a 32-bit integer
regardless of pointer size, so the result of 'ptr1 - ptr2' can
potentially be larger than a 32-bit integer.  The compiler simply
warns you of that possibility.

However, we only use pointer difference within objects and strings,
all of them well within 2^32 bytes in size, so that operation is
harmless with our source, and we can therefore safely turn off that
warning.

Reviewed-by: Rich Salz <rsalz@openssl.org>
This commit is contained in:
Richard Levitte 2016-03-29 20:18:31 +02:00
parent 85112d53c5
commit 5fe5bc3094

View file

@ -74,6 +74,20 @@ sub vc_wince_info {
return $vc_wince_info; return $vc_wince_info;
} }
# Helper functions for the VMS configs
my $vms_info = {};
sub vms_info {
unless (%$vms_info) {
$vms_info->{disable_warns} = [ ];
$vms_info->{disable_warns_p32} = [ ];
$vms_info->{disable_warns_p64} = [ ];
`PIPE CC /NOCROSS_REFERENCE /NOLIST /NOOBJECT /WARNINGS = DISABLE = ( MAYLOSEDATA3, EMPTYFILE ) NL: 2> NL:`;
if ($? == 0) {
push @{$vms_info->{disable_warns_p64}}, "MAYLOSEDATA3";
}
}
return $vms_info;
}
%targets = ( %targets = (
@ -1726,37 +1740,69 @@ sub vc_wince_info {
#}, #},
"vms-alpha" => { "vms-alpha" => {
inherit_from => [ "vms-generic" ], inherit_from => [ "vms-generic" ],
cflags => sub { my @warnings =
@{vms_info()->{disable_warns}};
@warnings
? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); },
#as => "???", #as => "???",
#debug_aflags => "/NOOPTIMIZE/DEBUG", #debug_aflags => "/NOOPTIMIZE/DEBUG",
#release_aflags => "/OPTIMIZE/NODEBUG", #release_aflags => "/OPTIMIZE/NODEBUG",
bn_opts => "SIXTY_FOUR_BIT RC4_INT RC4_CHUNK_LL DES_PTR BF_PTR", bn_opts => "SIXTY_FOUR_BIT RC4_INT RC4_CHUNK_LL DES_PTR BF_PTR",
}, },
"vms-alpha-p32" => { "vms-alpha-p32" => {
inherit_from => [ "vms-alpha" ], inherit_from => [ "vms-alpha" ],
cflags => add("/POINTER_SIZE=32"), cflags =>
ex_libs => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) }, add("/POINTER_SIZE=32",
sub { my @warnings =
@{vms_info()->{disable_warns_p32}};
@warnings
? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
} ),
ex_libs => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) },
}, },
"vms-alpha-p64" => { "vms-alpha-p64" => {
inherit_from => [ "vms-alpha" ], inherit_from => [ "vms-alpha" ],
cflags => add("/POINTER_SIZE=64"), cflags =>
ex_libs => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) }, add("/POINTER_SIZE=64",
sub { my @warnings =
@{vms_info()->{disable_warns_p64}};
@warnings
? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
} ),
ex_libs => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) },
}, },
"vms-ia64" => { "vms-ia64" => {
inherit_from => [ "vms-generic" ], inherit_from => [ "vms-generic" ],
cflags => sub { my @warnings =
@{vms_info()->{disable_warns}};
@warnings
? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); },
#as => "I4S", #as => "I4S",
#debug_aflags => "/NOOPTIMIZE/DEBUG", #debug_aflags => "/NOOPTIMIZE/DEBUG",
#release_aflags => "/OPTIMIZE/NODEBUG", #release_aflags => "/OPTIMIZE/NODEBUG",
bn_opts => "SIXTY_FOUR_BIT RC4_INT RC4_CHUNK_LL DES_PTR BF_PTR", bn_opts => "SIXTY_FOUR_BIT RC4_INT RC4_CHUNK_LL DES_PTR BF_PTR",
}, },
"vms-ia64-p32" => { "vms-ia64-p32" => {
inherit_from => [ "vms-ia64" ], inherit_from => [ "vms-ia64" ],
cflags => add("/POINTER_SIZE=32"), cflags =>
ex_libs => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) }, add("/POINTER_SIZE=32",
sub { my @warnings =
@{vms_info()->{disable_warns_p32}};
@warnings
? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
} ),
ex_libs => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) },
}, },
"vms-ia64-p64" => { "vms-ia64-p64" => {
inherit_from => [ "vms-ia64" ], inherit_from => [ "vms-ia64" ],
cflags => add("/POINTER_SIZE=64"), cflags =>
ex_libs => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) }, add("/POINTER_SIZE=64",
sub { my @warnings =
@{vms_info()->{disable_warns_p64}};
@warnings
? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
} ),
ex_libs => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) },
}, },
); );