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);
 }
 

-- 

Reply via email to