|  | #!/bin/bash | 
|  | # SPDX-License-Identifier: GPL-2.0 | 
|  |  | 
|  | set -e | 
|  | set -o pipefail | 
|  |  | 
|  | # To debug, uncomment the following line | 
|  | # set -x | 
|  |  | 
|  | # -mprofile-kernel is only supported on 64le, so this should not be invoked | 
|  | # for other targets. Therefore we can pass in -m64 and -mlittle-endian | 
|  | # explicitly, to take care of toolchains defaulting to other targets. | 
|  |  | 
|  | # Test whether the compile option -mprofile-kernel exists and generates | 
|  | # profiling code (ie. a call to _mcount()). | 
|  | echo "int func() { return 0; }" | \ | 
|  | $* -m64 -mlittle-endian -S -x c -O2 -p -mprofile-kernel - -o - \ | 
|  | 2> /dev/null | grep -q "_mcount" | 
|  |  | 
|  | # Test whether the notrace attribute correctly suppresses calls to _mcount(). | 
|  |  | 
|  | echo -e "#include <linux/compiler.h>\nnotrace int func() { return 0; }" | \ | 
|  | $* -m64 -mlittle-endian -S -x c -O2 -p -mprofile-kernel - -o - \ | 
|  | 2> /dev/null | grep -q "_mcount" && \ | 
|  | exit 1 | 
|  |  | 
|  | exit 0 |