ok
On Fri, May 23, 2014 at 3:14 PM, Teresa Johnson <tejohn...@google.com> wrote: > > On May 23, 2014 2:56 PM, "Xinliang David Li" <davi...@google.com> wrote: >> >> On Fri, May 23, 2014 at 2:50 PM, Teresa Johnson <tejohn...@google.com> >> wrote: >> > On Fri, May 23, 2014 at 2:28 PM, Xinliang David Li <davi...@google.com> >> > wrote: >> >> for (i = 0; i < num_strings; i++) >> >> + { >> >> + if (strcmp (build_info_strings[i], gi_ptr->build_info[i])) >> >> >> >> Add also check of gi_ptr->build_info: >> >> >> >> if (!gi_ptr->build_info || strcmp (.... ) >> > >> > Added the check earlier, just above this walk over strings. If we >> > reached here the stamps were the same so if we had see a build info >> > tag then we should have a non-null build_info. >> > >> >> >> >> >> >> + { >> >> + gcov_error ("profiling:%s:Mismatched build info string " >> >> >> >> >> >> + else if (tag == GCOV_TAG_BUILD_INFO) >> >> + { >> >> >> >> Add comment about not consumed by compiler, skipping the data ... >> > >> > Ok. >> > >> >> >> >> + gcov_unsigned_t num_strings; >> >> + char **build_info_strings = gcov_read_build_info (length, >> >> + >> >> &num_strings); >> >> >> >> >> >> @@ -2307,6 +2435,9 @@ coverage_obj_init (void) >> >> if (cgraph_dump_file) >> >> fprintf (cgraph_dump_file, "Using data file %s\n", da_file_name); >> >> >> >> + if (flag_profile_generate_buildinfo) >> >> + read_buildinfo (); >> >> >> >> >> >> Why building it in init, not finalize routine as the rest of the gcov >> >> info? >> > >> > Not sure what the issue is? We are just reading in the file here. >> > >> >> It is better to consolidate all the gcov info build related thing in >> one place. Is it doable inside build_info () function? > > Ok. Will move there and retest. Ok with these changes if tests pass? > > Thanks, > Teresa > > >> >> David >> >> >> >> > Teresa >> > >> >> >> >> >> >> David >> >> >> >> On Fri, May 23, 2014 at 1:59 PM, Teresa Johnson <tejohn...@google.com> >> >> wrote: >> >>> Done. Passes manual testing, rerunning regression testing. New patch >> >>> attached. >> >>> >> >>> Thanks, >> >>> Teresa >> >>> >> >>> On Fri, May 23, 2014 at 11:35 AM, Xinliang David Li >> >>> <davi...@google.com> wrote: >> >>>> The change makes gcov_info a variable length array, which is not >> >>>> ideal. >> >>>> >> >>>> Better just add one more field (instead of two): >> >>>> >> >>>> struct gcov_info { >> >>>> ... >> >>>> char ** build_info; >> >>>> }; >> >>>> >> >>>> For regular case, it is null, for case where the build info is >> >>>> available, make it point to a string array (with an null end marker >> >>>> string). >> >>>> >> >>>> David >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> On Fri, May 23, 2014 at 11:08 AM, Teresa Johnson >> >>>> <tejohn...@google.com> wrote: >> >>>>> Support for embedding arbitrary build information from the >> >>>>> profile-generate >> >>>>> compile into the gcda file in a new BUILD_INFO record. Lines from a >> >>>>> file >> >>>>> passed to the -fprofile-generate compile via a new >> >>>>> -fprofile-generate-buildinfo=filename option are embedded as strings >> >>>>> in the gcov_info struct and emitted as-is to a new >> >>>>> GCOV_TAG_BUILD_INFO >> >>>>> record. They are ignored on profile-use compiles, but emitted by >> >>>>> gcov-dump. >> >>>>> This is useful for recording information about, for example, source >> >>>>> revision >> >>>>> info that can be helpful for diagnosing profile mis-matches. >> >>>>> >> >>>>> For example: >> >>>>> >> >>>>> $ cat buildinfo.txt >> >>>>> Build timestamp xxxx >> >>>>> Build source revision r12345 >> >>>>> Other random build data >> >>>>> >> >>>>> $ g++ foo.cc -fprofile-generate >> >>>>> -fprofile-generate-buildinfo=buildinfo.txt >> >>>>> >> >>>>> $ a.out >> >>>>> $ gcov-dump foo.gcda >> >>>>> foo.gcda:data:magic `gcda':version `408*' >> >>>>> foo.gcda:stamp 708902860 >> >>>>> foo.gcda: a3000000: 22:PROGRAM_SUMMARY checksum=0x86a3bc55 >> >>>>> foo.gcda: counts=1, runs=1, sum_all=1, run_max=1, >> >>>>> sum_max=1 >> >>>>> foo.gcda: counter histogram: >> >>>>> foo.gcda: 1: num counts=1, min counter=1, >> >>>>> cum_counter=1 >> >>>>> foo.gcda: a7000000: 24:BUILD INFO num_strings=3 >> >>>>> foo.gcda: Build timestamp xxxx >> >>>>> foo.gcda: Build source revision r12345 >> >>>>> foo.gcda: Other random build data >> >>>>> foo.gcda: 01000000: 3:FUNCTION ident=1, >> >>>>> lineno_checksum=0x17c79156, >> >>>>> cfg_checksum=0xdb5de9e8 >> >>>>> foo.gcda: 01a10000: 2:COUNTERS arcs 1 counts >> >>>>> >> >>>>> Tested manually, passes regression tests. Ok for Google/4_8? >> >>>>> >> >>>>> Thanks, >> >>>>> Teresa >> >>>>> >> >>>>> -- >> >>>>> Teresa Johnson | Software Engineer | tejohn...@google.com | >> >>>>> 408-460-2413 >> >>> >> >>> >> >>> >> >>> -- >> >>> Teresa Johnson | Software Engineer | tejohn...@google.com | >> >>> 408-460-2413 >> > >> > >> > >> > -- >> > Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413