Commit 5fe5bc30 authored by Richard Levitte's avatar Richard Levitte
Browse files

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: default avatarRich Salz <rsalz@openssl.org>
parent 85112d53
Loading
Loading
Loading
Loading
+58 −12
Original line number Diff line number Diff line
@@ -74,6 +74,20 @@ sub 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 = (

@@ -1726,6 +1740,10 @@ sub vc_wince_info {
    #},
    "vms-alpha" => {
        inherit_from     => [ "vms-generic" ],
        cflags           => sub { my @warnings =
                                      @{vms_info()->{disable_warns}};
                                  @warnings
                                      ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); },
        #as               => "???",
        #debug_aflags     => "/NOOPTIMIZE/DEBUG",
        #release_aflags   => "/OPTIMIZE/NODEBUG",
@@ -1733,16 +1751,32 @@ sub vc_wince_info {
    },
    "vms-alpha-p32" => {
        inherit_from     => [ "vms-alpha" ],
	cflags		 => add("/POINTER_SIZE=32"),
        cflags           =>
            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" => {
        inherit_from     => [ "vms-alpha" ],
	cflags		 => add("/POINTER_SIZE=64"),
        cflags           =>
            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" => {
        inherit_from     => [ "vms-generic" ],
        cflags           => sub { my @warnings =
                                      @{vms_info()->{disable_warns}};
                                  @warnings
                                      ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); },
        #as               => "I4S",
        #debug_aflags     => "/NOOPTIMIZE/DEBUG",
        #release_aflags   => "/OPTIMIZE/NODEBUG",
@@ -1750,12 +1784,24 @@ sub vc_wince_info {
    },
    "vms-ia64-p32" => {
        inherit_from     => [ "vms-ia64" ],
	cflags		 => add("/POINTER_SIZE=32"),
        cflags           =>
            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" => {
        inherit_from     => [ "vms-ia64" ],
	cflags		 => add("/POINTER_SIZE=64"),
        cflags           =>
            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; $_ } @_) },
    },