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:
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user