This is an automated email from Gerrit. "Richard Allen <rsa...@gmail.com>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/8606
-- gerrit commit a1a93f77e34e1c730d9b05d15db3bd41e5ffef91 Author: Richard Allen <rsa...@gmail.com> Date: Fri Nov 29 12:27:12 2024 -0600 target: write basic-block counts Extend gmon files to include basic-block sample counts. This may allow us to write smaller histograms later. Change-Id: I38276dd1be211ce5781b0264b7cbb08c32a1a2a9 Signed-off-by: Richard Allen <rsa...@gmail.com> diff --git a/src/target/target.c b/src/target/target.c index 3894b40c76..45082b4702 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -4209,7 +4209,7 @@ typedef unsigned char UNIT[2]; /* unit of profiling */ static void write_gmon(const uint32_t *samples, uint32_t sample_num, const char *filename, bool with_range, uint32_t start_address, uint32_t end_address, struct target *target, uint32_t duration_ms) { - uint32_t i; + uint32_t i, j; /* trim out of address range samples */ if (with_range) { @@ -4291,6 +4291,18 @@ static void write_gmon(const uint32_t *samples, uint32_t sample_num, const char write_data(f, data, 2); } + /* write out raw-samples as basic-blocks */ + uint8_t two = 2; /* GMON_TAG_BB_COUNT */ + write_data(f, &two, 1); + write_long(f, sample_num, target); + for (i = 0; i < sample_num;) { + for (j = i + 1; j < sample_num && samples[i] == samples[j]; ++j) + /* skip over and combine similar samples*/; + write_long(f, samples[i], target); + write_long(f, j - i, target); + i = j; + } + fclose(f); } --