We also needed to adjust the gcov_version in autofdo/gcov.cc to read 0x1 for dev branches of gcc (instead of the current 0x3430372a for some released version of GCC):
-DEFINE_uint64(gcov_version, 0x3430372a, +DEFINE_uint64(gcov_version, 0x1, Sebastian On Tue, Apr 21, 2015 at 3:33 PM, Aditya K <hiradi...@msn.com> wrote: > After patching linux perf. This script collects creates a coverage file > (e.g., for linpack) which can be used for fdo. > > > gcov=linpack-x86.gcov > MAKE='make' > > > # x86 > x86() { > CC=/usr/bin/gcc > CXX=/usr/bin/g++ > > export CFLAGS="-Ofast -g3 -static" > export CPPFLAGS=$CFLAGS > > $MAKE -C $SRC/SingleSource/Benchmarks/Linpack clean > > $MAKE -C $SRC/SingleSource/Benchmarks/Linpack -k TEST=simple > TARGET_LLVMGCC=$CC TARGET_CXX=$CXX LLI_OPTFLAGS= TARGET_CC=$CC > TARGET_LLVMGXX=$CXX CC_UNDER_TEST_IS_GCC=1 TARGET_FLAGS= > USE_REFERENCE_OUTPUT=1 CC_UNDER_TEST_TARGET_IS_AARCH64=1 OPTFLAGS= > LLC_OPTFLAGS= ENABLE_OPTIMIZED=1 ARCH=x86_64 ENABLE_HASHED_PROGRAM_OUTPUT=1 > DISABLE_JIT=1 > > perfdata=autofdo-linpack/perf-x86.data > > perf record -b -e branch-instructions -o $perfdata > $SRC/SingleSource/Benchmarks/Linpack/Output/linpack-pc.simple > > autofdo/usr/bin/create_gcov > --binary=$SRC/SingleSource/Benchmarks/Linpack/Output/linpack-pc.simple > --profile=$perfdata --gcov=$gcov > > } > > > hth, > -Aditya > > ---------------------------------------- >> From: a...@firstfloor.org >> To: i.palac...@samsung.com >> CC: dnovi...@google.com; gcc@gcc.gnu.org; davi...@google.com; >> hubi...@ucw.cz; seb...@gmail.com; de...@google.com; v.bari...@samsung.com >> Subject: Re: AutoFDO profile toolchain is open-sourced >> Date: Tue, 21 Apr 2015 07:25:10 -0700 >> >> Ilya Palachev <i.palac...@samsung.com> writes: >>> >>> But why create_gcov does not inform about that (no branch events were >>> found)? It creates empty gcov file and says nothing :( >>> >>> Moreover, in the mentioned README it is said that perf should also be >>> executed with option -e BR_INST_RETIRED:TAKEN. >> >> Standard perf doesn't have a full event list >> This assumes a perf patched with the libpfm patch. >> >> Also I suspect it really wants to use PEBS events, so pp should be added. >> >> Alternatively you can use ocperf (from >> http://github.com/andikleen/pmu-tools) which is just a wrapper: >> >> ocperf.py record -e br_inst_retired.near_taken:pp -b ... >> >> or specify the event manually (depending on your CPU, like) >> >> perf record -e >> cpu/event=0xc4,umask=0x20,name=br_inst_retired_near_taken,period=400009/pp >> -b ... >> >> BTW the biggest problem with autofdo currently is that it is >> quite bitrotten and supports only several years old perf. >> So all of this above will only work with old distributions, >> unless you compile an old perf utility first. >> >> -Andi >> >> -- >> a...@linux.intel.com -- Speaking for myself only >