Commit 2b747a86 authored by Leo Yan's avatar Leo Yan Committed by Namhyung Kim
Browse files

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: default avatarIan Rogers <irogers@google.com>
Reviewed-by: default avatarJames Clark <james.clark@linaro.org>
Signed-off-by: default avatarLeo Yan <leo.yan@arm.com>
Reviewed-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20250304111240.3378214-2-leo.yan@arm.com


Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent be9f3e95
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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;

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

	perf_sample__sprintf_flags(flags, str, sizeof(str));
	return fprintf(fp, "  %-21s ", str);
	return fprintf(fp, "  %-*s ", SAMPLE_FLAGS_STR_ALIGNED_SIZE, str);
}

struct printer_data {
+2 −0
Original line number Diff line number Diff line
@@ -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)