> 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
> 

Reply via email to