Commit 0ad4078c authored by Andy Polyakov's avatar Andy Polyakov
Browse files

Configure: move --noexecstack probe to Configure.



config probe doesn't work in cross-compile scenarios or with clang.
In addition consolidate -Qunused-arguments handling.

Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6174)
parent 0d94212a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@
            my ($api, $arch) = ($1, $2);

            my $triarch = $triplet{$arch};
            my $cflags = "-Wa,--noexecstack";
            my $cflags;
            my $cppflags;

            # see if there is NDK clang on $PATH
+21 −5
Original line number Diff line number Diff line
@@ -1427,6 +1427,27 @@ if (!$disabled{makedepend}) {
    }
}

if (!$disabled{asm}) {
    # probe for -Wa,--noexecstack option...
    if ($predefined{__clang__}) {
        # clang has builtin assembler, which doesn't recognize --help,
        # but it apparently recognizes the option in question on all
        # supported platforms even when it's meaningless. In other words
        # probe would fail, but probed option always accepted...
        push @{$config{cflags}}, "-Wa,--noexecstack", "-Qunused-arguments";
    } elsif ($^O ne 'VMS') {
        my $cc = $config{CROSS_COMPILE}.$config{CC};
        open(PIPE, "$cc -Wa,--help -c -o null.$$.o -x assembler /dev/null 2>&1 |");
        while(<PIPE>) {
            if (m/--noexecstack/) {
                push @{$config{cflags}}, "-Wa,--noexecstack";
                last;
            }
        }
        close(PIPE);
        unlink("null.$$.o");
    }
}

# Deal with bn_ops ###################################################

@@ -1468,11 +1489,6 @@ if (defined($config{api})) {
    push @{$config{defines}}, $apiflag;
}

if (defined($predefined{__clang__}) && !$disabled{asm}) {
    push @{$config{cflags}}, "-Qunused-arguments";
    push @{$config{cxxflags}}, "-Qunused-arguments" if $config{CXX};
}

if ($strict_warnings)
	{
	my $wopt;
+0 −8
Original line number Diff line number Diff line
@@ -840,14 +840,6 @@ if [ -n "$CONFIG_OPTIONS" ]; then
  options="$options $CONFIG_OPTIONS"
fi

if expr "$options" : '.*no\-asm' > /dev/null; then :; else
  if sh -c "$CROSS_COMPILE${CC:-gcc} -Wa,--help -c -o /tmp/null.$$.o -x assembler /dev/null && rm /tmp/null.$$.o" 2>&1 | \
         grep \\--noexecstack >/dev/null; then
    __CNF_CFLAGS="$__CNF_CFLAGS -Wa,--noexecstack"
    __CNF_CXXFLAGS="$__CNF_CXXFLAGS -Wa,--noexecstack"
  fi
fi

# gcc < 2.8 does not support -march=ultrasparc
if [ "$OUT" = solaris-sparcv9-gcc -a $GCCVER -lt 28 ]
then