perf script: Make printing flags reliable

Add a check for the generated string of flags.  Print out the raw number
if the string generation fails.

Use the SAMPLE_FLAGS_STR_ALIGNED_SIZE macro to replace the value '21'.

Reviewed-by: Ian Rogers <irogers@google.com>
Reviewed-by: James Clark <james.clark@linaro.org>
Signed-off-by: Leo Yan <leo.yan@arm.com>
Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20250304111240.3378214-2-leo.yan@arm.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
Leo Yan
2025-03-05 09:13:19 -08:00
committed by Namhyung Kim
parent be9f3e95a9
commit 2b747a86d8
2 changed files with 9 additions and 2 deletions
+7 -2
View File
@@ -1709,9 +1709,14 @@ static int perf_sample__fprintf_bts(struct perf_sample *sample,
static int perf_sample__fprintf_flags(u32 flags, FILE *fp)
{
char str[SAMPLE_FLAGS_BUF_SIZE];
int ret;
perf_sample__sprintf_flags(flags, str, sizeof(str));
return fprintf(fp, " %-21s ", str);
ret = perf_sample__sprintf_flags(flags, str, sizeof(str));
if (ret < 0)
return fprintf(fp, " raw flags:0x%-*x ",
SAMPLE_FLAGS_STR_ALIGNED_SIZE - 12, flags);
return fprintf(fp, " %-*s ", SAMPLE_FLAGS_STR_ALIGNED_SIZE, str);
}
struct printer_data {
+2
View File
@@ -145,6 +145,8 @@ int common_flags(struct scripting_context *context);
int common_lock_depth(struct scripting_context *context);
#define SAMPLE_FLAGS_BUF_SIZE 64
#define SAMPLE_FLAGS_STR_ALIGNED_SIZE 21
int perf_sample__sprintf_flags(u32 flags, char *str, size_t sz);
#if defined(LIBTRACEEVENT_VERSION) && LIBTRACEEVENT_VERSION >= MAKE_LIBTRACEEVENT_VERSION(1, 5, 0)