> From: Dhruv Chawla <[email protected]>
>
> This is a partial fix for PR124075 which forces perf record to write the
> profile out to perf.data. This is required because I noticed on both
> aarch64 and x86 that it was writing out the profile to stdout at times,
> which would cause profile information to be dropped. This did not fail
> in the various create_fdas_for_* targets because they would only try and
> access the perf profiles if they existed at their paths.
>
> Further work for this patch is to plumb the PERF_DATA make variable into
> the perf record invocation, but that is a stage 1 thing.
>
> Autoprofilebootstrapped and regtested on aarch64-linux-gnu.
>
> Signed-off-by: Dhruv Chawla <[email protected]>
>
> gcc/ChangeLog:
> PR gcov-profile/124075
> * config/aarch64/gcc-auto-profile: Add "-o perf.data" to perf
> record invocation.
> * config/i386/gcc-auto-profile: Likewise.
I have similar change in my tree for some time, so i can do
profiledbootstraps without getting perf data accidentlly streamed into
redirected stdout/stderr. I do it in the Makefile.ac instead of
perf.data.
Again I would like Andy to have chance to comment, but the change looks
OK to me.
Honza
> ---
> gcc/config/aarch64/gcc-auto-profile | 4 ++--
> gcc/config/i386/gcc-auto-profile | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/gcc/config/aarch64/gcc-auto-profile
> b/gcc/config/aarch64/gcc-auto-profile
> index fdf06dfeed0..b235e966048 100755
> --- a/gcc/config/aarch64/gcc-auto-profile
> +++ b/gcc/config/aarch64/gcc-auto-profile
> @@ -43,11 +43,11 @@ if [ "$use_brbe" = true ] ; then
> echo >&2 "Warning: branch profiling may not be functional in VMs"
> fi
> set -x
> - perf record --inherit -j any,$FLAGS "$@"
> + perf record --inherit -o perf.data -j any,$FLAGS "$@"
> set +x
> else
> echo >&2 "Warning: branch profiling may not be functional without BRBE"
> set -x
> - perf record --inherit "$@"
> + perf record --inherit -o perf.data "$@"
> set +x
> fi
> diff --git a/gcc/config/i386/gcc-auto-profile
> b/gcc/config/i386/gcc-auto-profile
> index 5cd4077826b..c7772a2800f 100755
> --- a/gcc/config/i386/gcc-auto-profile
> +++ b/gcc/config/i386/gcc-auto-profile
> @@ -117,13 +117,13 @@ echo >&2 "AMD CPU without support for ex_ret_brn_tkn
> event"
> fi ;;
> esac
> set -x
> -if ! perf record --inherit -e $E -b "$@" ; then
> +if ! perf record --inherit -o perf.data -e $E -b "$@" ; then
> # PEBS may not actually be working even if the processor supports it
> # (e.g., in a virtual machine). Trying to run without /p.
> set +x
> echo >&2 "Retrying without /p."
> E="$(echo "${E}" | sed -e \'s/\/p/\//\ -e s/:p//)"
> set -x
> - exec perf record --inherit -e $E -b "$@"
> + exec perf record --inherit -o perf.data -e $E -b "$@"
> set +x
> fi
> --
> 2.43.0
>