From c87fbc106478ba540643d23687cc37b0985f8c3f Mon Sep 17 00:00:00 2001 From: Gabriel Corona Date: Mon, 24 Nov 2014 15:33:47 +0100 Subject: [PATCH] [mc] Disable/enable the stack-cleaner from a CLI argument (-f[no-]stack-cleaner) --- tools/stack-cleaner/c++ | 2 +- tools/stack-cleaner/cc | 2 +- tools/stack-cleaner/compiler-wrapper | 32 ++++++++++++++++++++++++++++ tools/stack-cleaner/fortran | 2 +- 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100755 tools/stack-cleaner/compiler-wrapper diff --git a/tools/stack-cleaner/c++ b/tools/stack-cleaner/c++ index 516d36c28c..51082b0971 100755 --- a/tools/stack-cleaner/c++ +++ b/tools/stack-cleaner/c++ @@ -1,3 +1,3 @@ #!/bin/sh path="$(dirname $0)" -exec "${FILTER_CXX:-c++}" -B "$path" "$@" +exec "$path"/compiler-wrapper c++ "$@" diff --git a/tools/stack-cleaner/cc b/tools/stack-cleaner/cc index 3cfd37887e..d6da0f2a1c 100755 --- a/tools/stack-cleaner/cc +++ b/tools/stack-cleaner/cc @@ -1,3 +1,3 @@ #!/bin/sh path="$(dirname $0)" -exec "${FILTER_CC:-cc}" -B "$path" "$@" +exec "$path"/compiler-wrapper cc "$@" diff --git a/tools/stack-cleaner/compiler-wrapper b/tools/stack-cleaner/compiler-wrapper new file mode 100755 index 0000000000..8b8a62f5fd --- /dev/null +++ b/tools/stack-cleaner/compiler-wrapper @@ -0,0 +1,32 @@ +#!/usr/bin/perl -w +# Compiler wrapper with stack-cleaner support (enabled by default). +# Usage: ./compiler-wrapper target-compiler args [-f[no-]stack-cleaner] + +use File::Basename; + +my $compiler = shift(@ARGV); + +my $enable = 1; + +my @args; +my $arg; +while($arg=shift(@ARGV)) { + if ($arg eq "-fno-stack-cleaner") { + $enable = 0; + } elsif ($arg eq "-fstack-cleaner") { + $enable = 1; + } + else { + push @args, $arg; + } +} + +if ($enable) { + if (basename($0) =~ /^clang/) { + unshift @args, "-no-integrated-as" + } + unshift @args, dirname($0); + unshift @args, "-B"; +} + +exec $compiler, @args diff --git a/tools/stack-cleaner/fortran b/tools/stack-cleaner/fortran index c435b4aae9..62087fddb7 100755 --- a/tools/stack-cleaner/fortran +++ b/tools/stack-cleaner/fortran @@ -1,3 +1,3 @@ #!/bin/sh path="$(dirname $0)" -exec "${FILTER_CC:-gfortran}" -B "$path" "$@" +exec "$path"/compiler-wrapper gfortran "$@" -- 2.20.1