From nobody Fri Dec 19 17:27:07 2025 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B5CEF29A3D2 for ; Wed, 30 Apr 2025 17:52:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746035556; cv=none; b=Ec6/0J2qbgQ9z6Njo6UTP3xekWkbsEHTADhTiffcD0BFwU1zlUv2d2mEaHspsv/zsx6EG2RbrciYj/y100tajt8VrEOmo/pMv9vjtEbm16/iNX3cr7uJ2izEP4txNuTRkHCeU+6tSao7ovN0lv2T53L726n7bFpPm67q8KAJKGY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746035556; c=relaxed/simple; bh=xJquY5Hl5E9RUZbJwT7S1BKF7xKcAmbftEcxQfDMZss=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=bUUtuCYa1DH/oyl+N+YWhKdPXX9HMLgaBY64sBBLAvV5YfUWDS5dXHjCHILeTh8/pBKTtL1cQUPOxD0UD9S4ZZIjZzkGCoPzEOXXJ8J0QYWsUyYZ4kUpf3u0dR9tRihA0B9yI5V3GIGlMsw4/p1Wsj8dCmzCCp16OY50zaZyRrw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=m/kKYybp; arc=none smtp.client-ip=209.85.216.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="m/kKYybp" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-3032f4eca83so125563a91.3 for ; Wed, 30 Apr 2025 10:52:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1746035553; x=1746640353; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=9PuDrQPNJhy+WNCecljP6AeazJZzdfcGsUN32chaKzE=; b=m/kKYybpPZg35HmzGapQafsPvJ41ZnY7B/VTcOyc7GC2y0KjFmcK8YS67LDSXnogHO ynZpK1U4IcckBK1X4LKZa1dE2j6l6XvQF4BNIgai1GlrexH4GGAxdznqA7ERET2lkxBQ qR1Nc9zptDvt2MeOggA63p5m9KTS+7Vn2F9OWi1pAruKinDJvYU4Cz5AsukN4wlqKQkK qI87ygBqJ4a4BAfU/PF+VOHiZOOiquF67fRHcqfeiqpup0lSY+GOalTgEV7iUKZV7G1F Tn5ZdcqqIUN19rCcQbWzIIEJuJxL+S9xrD3NxkHa02zlHCq8dJS54AMOQTlogLQzmghC 6faA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746035553; x=1746640353; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9PuDrQPNJhy+WNCecljP6AeazJZzdfcGsUN32chaKzE=; b=I3eTQoCvJ6+JS3xOGYYNiAkMDTe9MXrMjotekCr4mnJ1+M2bhNpVxv0fcjRyjolfZA h2hcJq9QkR6Sm64KgPk8+N2K2CrSxI3m/WJc2iIAOp/yl9/o62UubaGOPoaLVC3+jsXN gFNeps90VHEwE4iaMskbDjH8ZFiXb6c0xC76h7rqFgxdl9C3ddrdCrXR0iHeExcT05oI iUB/WRt/xvARYQ3+8SlWh8pxHEyebhayXrlEEm570qi1Fjga+XOwWr1sAgpd4Hxo1Ytl gkN8w1VXDRMLvitqazwWt6Po/i6hQiyqETpVfPxGoeE5sT2a8gtWDjAf5JCou9HvcTbs FlSA== X-Forwarded-Encrypted: i=1; AJvYcCXsNCy+HrHabFPKalu4OGPdZRzx1wG/5e5x31G9YW5pneao/oGX36Ouo+JuU5kxZRFsbuKrVVYea17TbNU=@vger.kernel.org X-Gm-Message-State: AOJu0YyF7keLxL0Qp3SDZ8Hk2W7xgvvqRyrHeoXVViscA9RZzK7XOujE rOjAsBQOxl2DQX4oKDGTvRTQwmfKDzsuCe7w8uxLifSvaox3D3UMd1QnBPLyWFBfI2CNzLGxi0i ZHF+0pA== X-Google-Smtp-Source: AGHT+IFiuw5jeYNXxrT1gDpeBbkd2Rs1obnLvwQHVd5kocgaEUPLMsJ48NHBR1uxm4TxOQGZ9Je6lr3CDUPp X-Received: from pjk14.prod.google.com ([2002:a17:90b:558e:b0:2fc:2ee0:d38a]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:5647:b0:309:ebe3:1ef9 with SMTP id 98e67ed59e1d1-30a343ffe13mr6624858a91.12.1746035553041; Wed, 30 Apr 2025 10:52:33 -0700 (PDT) Date: Wed, 30 Apr 2025 10:50:35 -0700 In-Reply-To: <20250430175036.184610-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20250430175036.184610-1-irogers@google.com> X-Mailer: git-send-email 2.49.0.906.g1f30a19c02-goog Message-ID: <20250430175036.184610-48-irogers@google.com> Subject: [PATCH v2 47/47] perf: Silence -Wshorten-64-to-32 warnings From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , Yury Norov , Rasmus Villemoes , Thomas Gleixner , Darren Hart , Davidlohr Bueso , "=?UTF-8?q?Andr=C3=A9=20Almeida?=" , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Yicong Yang , Jonathan Cameron , Nathan Chancellor , Bill Wendling , Justin Stitt , Josh Poimboeuf , Al Viro , Kyle Meyer , Ben Gainey , Athira Rajeev , Kajol Jain , Aditya Gupta , Eder Zulian , Dapeng Mi , Kuan-Wei Chiu , He Zhe , Dirk Gouders , Brian Geffon , Ravi Bangoria , Howard Chu , Charlie Jenkins , Colin Ian King , Dominique Martinet , Jann Horn , Masahiro Yamada , Arnd Bergmann , Yang Jihong , Dmitry Vyukov , Andi Kleen , Graham Woodward , Ilkka Koskinen , Anshuman Khandual , Zhongqiu Han , Hao Ge , Tengda Wu , Gabriele Monaco , Chun-Tse Shao , Casey Chen , "Dr. David Alan Gilbert" , Li Huafei , "Steinar H. Gunderson" , Levi Yun , Weilin Wang , Thomas Falcon , Thomas Richter , Andrew Kreimer , "=?UTF-8?q?Krzysztof=20=C5=81opatowski?=" , Christophe Leroy , Jean-Philippe Romain , Junhao He , "Masami Hiramatsu (Google)" , Xu Yang , Steve Clevenger , Zixian Cai , Stephen Brennan , Yujie Liu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, llvm@lists.linux.dev Cc: Ian Rogers Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The clang warning -Wshorten-64-to-32 can be useful to catch inadvertent truncation. In some instances this truncation can lead to changing the sign of a result, for example, truncation to return an int to fit a sort routine. Silence the warning by making the implicit truncation explicit. Signed-off-by: Ian Rogers --- tools/perf/perf.c | 2 +- tools/perf/util/bpf-event.c | 2 +- tools/perf/util/env.c | 2 +- tools/perf/util/event.c | 4 +-- tools/perf/util/header.c | 54 ++++++++++++++++-------------- tools/perf/util/hist.c | 7 ++-- tools/perf/util/machine.c | 14 ++++---- tools/perf/util/map.c | 4 +-- tools/perf/util/maps.c | 6 ++-- tools/perf/util/parse-events.c | 16 ++++----- tools/perf/util/session.c | 29 ++++++++-------- tools/perf/util/sort.c | 20 +++++------ tools/perf/util/synthetic-events.c | 22 ++++++------ tools/perf/util/target.c | 2 +- tools/perf/util/thread-stack.c | 2 +- tools/perf/util/thread.c | 4 +-- tools/perf/util/thread_map.c | 6 ++-- tools/perf/util/tool.c | 2 +- tools/perf/util/values.c | 4 +-- 19 files changed, 104 insertions(+), 98 deletions(-) diff --git a/tools/perf/perf.c b/tools/perf/perf.c index f0617cc41f5f..2e98a29df3b2 100644 --- a/tools/perf/perf.c +++ b/tools/perf/perf.c @@ -476,7 +476,7 @@ int main(int argc, const char **argv) if (!cmd) cmd =3D "perf-help"; =20 - srandom(time(NULL)); + srandom((unsigned int)time(NULL)); =20 /* Setting $PERF_CONFIG makes perf read _only_ the given config file. */ config_exclusive_filename =3D getenv("PERF_CONFIG"); diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c index c81444059ad0..3cf7d1a2b624 100644 --- a/tools/perf/util/bpf-event.c +++ b/tools/perf/util/bpf-event.c @@ -332,7 +332,7 @@ process_bpf_image(char *name, u64 addr, struct kallsyms= _parse *data) .size =3D offsetof(struct perf_record_ksymbol, name), }, .addr =3D addr, - .len =3D page_size, + .len =3D (__u32)page_size, .ksym_type =3D PERF_RECORD_KSYMBOL_TYPE_BPF, .flags =3D 0, }; diff --git a/tools/perf/util/env.c b/tools/perf/util/env.c index 36411749e007..8238a9a609ab 100644 --- a/tools/perf/util/env.c +++ b/tools/perf/util/env.c @@ -596,7 +596,7 @@ char *perf_env__find_pmu_cap(struct perf_env *env, cons= t char *pmu_name, const char *cap) { char *cap_eq; - int cap_size; + size_t cap_size; char **ptr; int i, j; =20 diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index c23b77f8f854..edd7e2fccf60 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c @@ -156,7 +156,7 @@ void perf_event__read_stat_config(struct perf_stat_conf= ig *config, switch (event->data[i].tag) { #define CASE(__term, __val) \ case PERF_STAT_CONFIG_TERM__##__term: \ - config->__val =3D event->data[i].val; \ + config->__val =3D (typeof(config->__val))event->data[i].val; \ break; =20 CASE(AGGR_MODE, aggr_mode) @@ -190,7 +190,7 @@ size_t perf_event__fprintf_namespaces(union perf_event = *event, FILE *fp) u32 nr_namespaces, idx; =20 ns_link_info =3D event->namespaces.link_info; - nr_namespaces =3D event->namespaces.nr_namespaces; + nr_namespaces =3D (u32)event->namespaces.nr_namespaces; =20 ret +=3D fprintf(fp, " %d/%d - nr_namespaces: %u\n\t\t[", event->namespaces.pid, diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c index e3cdc3b7b4ab..e364dea9e243 100644 --- a/tools/perf/util/header.c +++ b/tools/perf/util/header.c @@ -185,7 +185,7 @@ static int do_write_string(struct feat_fd *ff, const ch= ar *str) u32 len, olen; int ret; =20 - olen =3D strlen(str) + 1; + olen =3D (u32)strlen(str) + 1; len =3D PERF_ALIGN(olen, NAME_ALIGN); =20 /* write len, incl. \0 */ @@ -286,7 +286,7 @@ static int do_read_bitmap(struct feat_fd *ff, unsigned = long **pset, u64 *psize) if (ret) return ret; =20 - set =3D bitmap_zalloc(size); + set =3D bitmap_zalloc((int)size); if (!set) return -ENOMEM; =20 @@ -1369,7 +1369,9 @@ static int memory_node__sort(const void *a, const voi= d *b) const struct memory_node *na =3D a; const struct memory_node *nb =3D b; =20 - return na->node - nb->node; + if (na->node =3D=3D nb->node) + return 0; + return na->node < nb->node ? -1 : 1; } =20 static int build_mem_topology(struct memory_node **nodesp, u64 *cntp) @@ -2144,7 +2146,7 @@ static void print_pmu_mappings(struct feat_fd *ff, FI= LE *fp) str =3D ff->ph->env.pmu_mappings; =20 while (pmu_num) { - type =3D strtoul(str, &tmp, 0); + type =3D (u32)strtoul(str, &tmp, 0); if (*tmp !=3D ':') goto error; =20 @@ -2214,10 +2216,10 @@ static void memory_node__fprintf(struct memory_node= *n, char buf_map[100], buf_size[50]; unsigned long long size; =20 - size =3D bsize * bitmap_weight(n->set, n->size); + size =3D bsize * bitmap_weight(n->set, (unsigned int)n->size); unit_number__scnprintf(buf_size, 50, size); =20 - bitmap_scnprintf(n->set, n->size, buf_map, 100); + bitmap_scnprintf(n->set, (unsigned int)n->size, buf_map, 100); fprintf(fp, "# %3" PRIu64 " [%s]: %s\n", n->node, buf_size, buf_map); } =20 @@ -2782,7 +2784,7 @@ static int process_pmu_mappings(struct feat_fd *ff, v= oid *data __maybe_unused) =20 static int process_group_desc(struct feat_fd *ff, void *data __maybe_unuse= d) { - size_t ret =3D -1; + int ret =3D -1; u32 i, nr, nr_groups; struct perf_session *session; struct evsel *evsel, *leader =3D NULL; @@ -2996,7 +2998,7 @@ static int process_mem_topology(struct feat_fd *ff, =20 ff->ph->env.memory_bsize =3D bsize; ff->ph->env.memory_nodes =3D nodes; - ff->ph->env.nr_memory_nodes =3D nr; + ff->ph->env.nr_memory_nodes =3D (int)nr; ret =3D 0; =20 out: @@ -3489,7 +3491,8 @@ int perf_header__fprintf_info(struct perf_session *se= ssion, FILE *fp, bool full) int fd =3D perf_data__fd(session->data); struct stat st; time_t stctime; - int ret, bit; + int ret; + size_t bit; =20 hd.fp =3D fp; hd.full =3D full; @@ -3586,15 +3589,15 @@ static int perf_header__adds_write(struct perf_head= er *header, struct evlist *evlist, int fd, struct feat_copier *fc) { - int nr_sections; + size_t nr_sections; struct feat_fd ff =3D { .fd =3D fd, .ph =3D header, }; struct perf_file_section *feat_sec, *p; - int sec_size; + size_t sec_size; u64 sec_start; - int feat; + size_t feat; int err; =20 nr_sections =3D bitmap_weight(header->adds_features, HEADER_FEAT_BITS); @@ -3611,8 +3614,8 @@ static int perf_header__adds_write(struct perf_header= *header, lseek(fd, sec_start + sec_size, SEEK_SET); =20 for_each_set_bit(feat, header->adds_features, HEADER_FEAT_BITS) { - if (do_write_feat(&ff, feat, &p, evlist, fc)) - perf_header__clear_feat(header, feat); + if (do_write_feat(&ff, (int)feat, &p, evlist, fc)) + perf_header__clear_feat(header, (int)feat); } =20 lseek(fd, sec_start, SEEK_SET); @@ -3821,9 +3824,9 @@ int perf_header__process_sections(struct perf_header = *header, int fd, int feat, int fd, void *data)) { struct perf_file_section *feat_sec, *sec; - int nr_sections; - int sec_size; - int feat; + size_t nr_sections; + size_t sec_size; + size_t feat; int err; =20 nr_sections =3D bitmap_weight(header->adds_features, HEADER_FEAT_BITS); @@ -3843,7 +3846,7 @@ int perf_header__process_sections(struct perf_header = *header, int fd, goto out_free; =20 for_each_set_bit(feat, header->adds_features, HEADER_LAST_FEATURE) { - err =3D process(sec++, header, feat, fd, data); + err =3D process(sec++, header, (int)feat, fd, data); if (err < 0) goto out_free; } @@ -4183,7 +4186,7 @@ static int evsel__prepare_tracepoint_event(struct evs= el *evsel, struct tep_handl return -1; } =20 - event =3D tep_find_event(pevent, evsel->core.attr.config); + event =3D tep_find_event(pevent, (int)evsel->core.attr.config); if (event =3D=3D NULL) { pr_debug("cannot find event format for %d\n", (int)evsel->core.attr.conf= ig); return -1; @@ -4221,8 +4224,8 @@ int perf_session__read_header(struct perf_session *se= ssion) struct perf_file_header f_header; struct perf_file_attr f_attr; u64 f_id; - int nr_attrs, nr_ids, i, j, err; - int fd =3D perf_data__fd(data); + u64 nr_attrs, nr_ids; + int err, fd =3D perf_data__fd(data); =20 session->evlist =3D evlist__new(); if (session->evlist =3D=3D NULL) @@ -4271,7 +4274,7 @@ int perf_session__read_header(struct perf_session *se= ssion) nr_attrs =3D f_header.attrs.size / f_header.attr_size; lseek(fd, f_header.attrs.offset, SEEK_SET); =20 - for (i =3D 0; i < nr_attrs; i++) { + for (u64 i =3D 0; i < nr_attrs; i++) { struct evsel *evsel; off_t tmp; =20 @@ -4308,7 +4311,7 @@ int perf_session__read_header(struct perf_session *se= ssion) =20 lseek(fd, f_attr.ids.offset, SEEK_SET); =20 - for (j =3D 0; j < nr_ids; j++) { + for (int j =3D 0; j < (int)nr_ids; j++) { if (perf_header__getbuffer64(header, fd, &f_id, sizeof(f_id))) goto out_errno; =20 @@ -4537,7 +4540,8 @@ int perf_event__process_tracing_data(struct perf_sess= ion *session, return -1; } if (session->trace_event_repipe) { - int retw =3D write(STDOUT_FILENO, buf, padding); + ssize_t retw =3D write(STDOUT_FILENO, buf, padding); + if (retw <=3D 0 || retw !=3D padding) { pr_err("%s: repiping tracing data padding", __func__); return -1; @@ -4551,7 +4555,7 @@ int perf_event__process_tracing_data(struct perf_sess= ion *session, =20 evlist__prepare_tracepoint_events(session->evlist, session->tevent.pevent= ); =20 - return size_read + padding; + return (int)(size_read + padding); } #endif =20 diff --git a/tools/perf/util/hist.c b/tools/perf/util/hist.c index d65228c11412..37469da4afc2 100644 --- a/tools/perf/util/hist.c +++ b/tools/perf/util/hist.c @@ -700,7 +700,8 @@ static unsigned random_max(unsigned high) { unsigned thresh =3D -high % high; for (;;) { - unsigned r =3D random(); + unsigned int r =3D (unsigned int)random(); + if (r >=3D thresh) return r % high; } @@ -929,7 +930,7 @@ iter_prepare_branch_entry(struct hist_entry_iter *iter,= struct addr_location *al return -ENOMEM; =20 iter->curr =3D 0; - iter->total =3D sample->branch_stack->nr; + iter->total =3D (int)sample->branch_stack->nr; =20 iter->bi =3D bi; return 0; @@ -2770,7 +2771,7 @@ void hist__account_cycles(struct branch_stack *bs, st= ruct addr_location *al, * Note that perf stores branches reversed from * program order! */ - for (int i =3D bs->nr - 1; i >=3D 0; i--) { + for (int i =3D (int)bs->nr - 1; i >=3D 0; i--) { addr_map_symbol__account_cycles(&bi[i].from, nonany_branch_mode ? NULL : prev, bi[i].flags.cycles, evsel, diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index 2531b373f2cf..0881b83532fd 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c @@ -809,7 +809,7 @@ int machine__process_text_poke(struct machine *machine,= union perf_event *event, =20 if (dso) { u8 *new_bytes =3D event->text_poke.bytes + event->text_poke.old_len; - int ret; + ssize_t ret; =20 /* * Kernel maps might be changed when loading symbols so loading @@ -2306,7 +2306,7 @@ static int lbr_callchain_add_lbr_ip(struct thread *th= read, struct branch_stack *lbr_stack =3D sample->branch_stack; struct branch_entry *entries =3D perf_sample__branch_entries(sample); u8 cpumode =3D PERF_RECORD_MISC_USER; - int lbr_nr =3D lbr_stack->nr; + int lbr_nr =3D (int)lbr_stack->nr; struct branch_flags *flags; int err, i; u64 ip; @@ -2472,7 +2472,7 @@ static bool has_stitched_lbr(struct thread *thread, * * Starts from the base-of-stack of current sample. */ - for (i =3D distance, j =3D cur_stack->nr - 1; (i >=3D 0) && (j >=3D 0); i= --, j--) { + for (i =3D (int)distance, j =3D (int)cur_stack->nr - 1; (i >=3D 0) && (j = >=3D 0); i--, j--) { if ((prev_entries[i].from !=3D cur_entries[j].from) || (prev_entries[i].to !=3D cur_entries[j].to) || (prev_entries[i].flags.value !=3D cur_entries[j].flags.value)) @@ -2488,7 +2488,7 @@ static bool has_stitched_lbr(struct thread *thread, * and the base-of-stack of current sample into lbr_stitch->lists. * These LBRs will be stitched later. */ - for (i =3D prev_stack->nr - 1; i > (int)distance; i--) { + for (i =3D (int)prev_stack->nr - 1; i > (int)distance; i--) { =20 if (!lbr_stitch->prev_lbr_cursor[i].valid) continue; @@ -2687,7 +2687,7 @@ static int thread__resolve_callchain_sample(struct th= read *thread, u64 leaf_frame_caller; =20 if (chain) - chain_nr =3D chain->nr; + chain_nr =3D (int)chain->nr; =20 if (evsel__has_branch_callstack(evsel)) { struct perf_env *env =3D evsel__env(evsel); @@ -2783,7 +2783,7 @@ static int thread__resolve_callchain_sample(struct th= read *thread, check_calls: if (chain && callchain_param.order !=3D ORDER_CALLEE) { err =3D find_prev_cpumode(chain, thread, cursor, parent, root_al, - &cpumode, chain->nr - first_call, symbols); + &cpumode, (int)(chain->nr - first_call), symbols); if (err) return (err < 0) ? err : 0; } @@ -2794,7 +2794,7 @@ static int thread__resolve_callchain_sample(struct th= read *thread, if (callchain_param.order =3D=3D ORDER_CALLEE) j =3D i; else - j =3D chain->nr - i - 1; + j =3D (int)(chain->nr - i - 1); =20 #ifdef HAVE_SKIP_CALLCHAIN_IDX if (j =3D=3D skip_idx) diff --git a/tools/perf/util/map.c b/tools/perf/util/map.c index d729438b7d65..57e22e49e65c 100644 --- a/tools/perf/util/map.c +++ b/tools/perf/util/map.c @@ -74,8 +74,8 @@ static inline bool replace_android_lib(const char *filena= me, char *newfilename) if (!(ndk && app)) return false; =20 - ndk_length =3D strlen(ndk); - app_length =3D strlen(app); + ndk_length =3D (int)strlen(ndk); + app_length =3D (int)strlen(app); =20 if (!(ndk_length && app_length && app_abi_length)) return false; diff --git a/tools/perf/util/maps.c b/tools/perf/util/maps.c index 0b40d901675e..8101a3e3810b 100644 --- a/tools/perf/util/maps.c +++ b/tools/perf/util/maps.c @@ -396,7 +396,7 @@ static unsigned int maps__by_address_index(const struct= maps *maps, const struct sizeof(*mapp), map__start_cmp); =20 if (mapp) - return mapp - maps_by_address; + return (unsigned int)(mapp - maps_by_address); } else { for (unsigned int i =3D 0; i < maps__nr_maps(maps); i++) { if (RC_CHK_ACCESS(maps_by_address[i]) =3D=3D RC_CHK_ACCESS(map)) @@ -417,7 +417,7 @@ static unsigned int maps__by_name_index(const struct ma= ps *maps, const struct ma sizeof(*mapp), map__strcmp); =20 if (mapp) - return mapp - maps_by_name; + return (unsigned int)(mapp - maps_by_name); } else { for (unsigned int i =3D 0; i < maps__nr_maps(maps); i++) { if (RC_CHK_ACCESS(maps_by_name[i]) =3D=3D RC_CHK_ACCESS(map)) @@ -1134,7 +1134,7 @@ struct map *maps__find_by_name(struct maps *maps, con= st char *name) =20 if (mapp) { result =3D map__get(*mapp); - i =3D mapp - maps__maps_by_name(maps); + i =3D (unsigned int)(mapp - maps__maps_by_name(maps)); RC_CHK_ACCESS(maps)->last_search_by_name_idx =3D i; } done =3D true; diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 89708d1769c8..de879ab45ea5 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -317,7 +317,7 @@ static int parse_aliases(const char *str, const char *c= onst names[][EVSEL__MAX_A *longest =3D -1; for (int i =3D 0; i < size; i++) { for (int j =3D 0; j < EVSEL__MAX_ALIASES && names[i][j]; j++) { - int n =3D strlen(names[i][j]); + int n =3D (int)strlen(names[i][j]); =20 if (n > *longest && !strncasecmp(str, names[i][j], n)) *longest =3D n; @@ -532,8 +532,8 @@ static int add_tracepoint(struct parse_events_state *pa= rse_state, !parse_state->fake_tp); =20 if (IS_ERR(evsel)) { - tracepoint_error(err, PTR_ERR(evsel), sys_name, evt_name, loc->first_col= umn); - return PTR_ERR(evsel); + tracepoint_error(err, (int)PTR_ERR(evsel), sys_name, evt_name, loc->firs= t_column); + return (int)PTR_ERR(evsel); } =20 if (head_config) { @@ -1153,7 +1153,7 @@ static int get_config_terms(const struct parse_events= _terms *head_config, #define ADD_CONFIG_TERM_VAL(__type, __name, __val, __weak) \ do { \ ADD_CONFIG_TERM(__type, __weak); \ - __t->val.__name =3D __val; \ + __t->val.__name =3D (typeof(__t->val.__name))__val; \ } while (0) =20 #define ADD_CONFIG_TERM_STR(__type, __val, __weak) \ @@ -2303,12 +2303,12 @@ static void __parse_events_error__print(int err_idx= , const char *err_str, const char *str =3D "invalid or unsupported event: "; char _buf[MAX_WIDTH]; char *buf =3D (char *) event; - int idx =3D 0; + size_t idx =3D 0; if (err_str) { /* -2 for extra '' in the final fprintf */ int width =3D get_term_width() - 2; - int len_event =3D strlen(event); - int len_str, max_len, cut =3D 0; + size_t len_event =3D strlen(event); + size_t len_str, max_len, cut =3D 0; =20 /* * Maximum error index indent, we will cut @@ -2346,7 +2346,7 @@ static void __parse_events_error__print(int err_idx, = const char *err_str, =20 fprintf(stderr, "%s'%s'\n", str, buf); if (idx) { - fprintf(stderr, "%*s\\___ %s\n", idx + 1, "", err_str); + fprintf(stderr, "%*s\\___ %s\n", (int)idx + 1, "", err_str); if (err_help) fprintf(stderr, "\n%s\n", err_help); } diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 81cc56503a2d..395cd82e44d1 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c @@ -263,7 +263,7 @@ void perf_session__delete(struct perf_session *session) static void swap_sample_id_all(union perf_event *event, void *data) { void *end =3D (void *) event + event->header.size; - int size =3D end - data; + size_t size =3D end - data; =20 BUG_ON(size % sizeof(u64)); mem_bswap_64(data, size); @@ -912,13 +912,13 @@ static void branch_stack__printf(struct perf_sample *= sample, =20 static void regs_dump__printf(u64 mask, u64 *regs, const char *arch) { - unsigned rid, i =3D 0; + unsigned int i =3D 0; + size_t rid; =20 for_each_set_bit(rid, (unsigned long *) &mask, sizeof(mask) * 8) { u64 val =3D regs[i++]; =20 - printf(".... %-5s 0x%016" PRIx64 "\n", - perf_reg_name(rid, arch), val); + printf(".... %-5s 0x%016" PRIx64 "\n", perf_reg_name((int)rid, arch), va= l); } } =20 @@ -1452,7 +1452,7 @@ static s64 perf_session__process_user_event(struct pe= rf_session *session, */ if (!perf_data__is_pipe(session->data)) lseek(fd, file_offset + event->header.size, SEEK_SET); - err =3D tool->auxtrace(session, event); + err =3D (int)tool->auxtrace(session, event); break; case PERF_RECORD_AUXTRACE_ERROR: perf_session__auxtrace_error_inc(session, event); @@ -1506,7 +1506,7 @@ int perf_session__deliver_synth_event(struct perf_ses= sion *session, events_stats__inc(&evlist->stats, event->header.type); =20 if (event->header.type >=3D PERF_RECORD_USER_TYPE_START) - return perf_session__process_user_event(session, event, 0, NULL); + return (int)perf_session__process_user_event(session, event, 0, NULL); =20 return machines__deliver_event(&session->machines, evlist, event, sample,= tool, 0, NULL); } @@ -1944,7 +1944,7 @@ static int __perf_session__process_pipe_events(struct= perf_session *session) perf_session__warn_about_errors(session); ordered_events__free(&session->ordered_events); auxtrace__free_events(session); - return err; + return (int)err; } =20 static union perf_event * @@ -2164,7 +2164,7 @@ reader__read_event(struct reader *rd, struct perf_ses= sion *session, event =3D fetch_mmaped_event(rd->head, rd->mmap_size, rd->mmap_cur, session->header.needs_swap); if (IS_ERR(event)) - return PTR_ERR(event); + return (int)PTR_ERR(event); =20 if (!event) return READER_NODATA; @@ -2177,8 +2177,8 @@ reader__read_event(struct reader *rd, struct perf_ses= sion *session, (skip =3D rd->process(session, event, rd->file_pos, rd->path)) < 0) { pr_err("%#" PRIx64 " [%#x]: failed to process type: %d [%s]\n", rd->file_offset + rd->head, event->header.size, - event->header.type, strerror(-skip)); - err =3D skip; + event->header.type, strerror((int)-skip)); + err =3D (int)skip; goto out; } =20 @@ -2692,14 +2692,14 @@ int perf_event__process_id_index(struct perf_sessio= n *session, if (!sid) return -ENOENT; =20 - sid->idx =3D e->idx; + sid->idx =3D (int)e->idx; sid->cpu.cpu =3D e->cpu; - sid->tid =3D e->tid; + sid->tid =3D (pid_t)e->tid; =20 if (!e2) continue; =20 - sid->machine_pid =3D e2->machine_pid; + sid->machine_pid =3D (pid_t)e2->machine_pid; sid->vcpu.cpu =3D e2->vcpu; =20 if (!sid->machine_pid) @@ -2713,7 +2713,8 @@ int perf_event__process_id_index(struct perf_session = *session, perf_guest =3D true; } =20 - ret =3D perf_session__set_guest_cpu(session, sid->machine_pid, e->tid, e= 2->vcpu); + ret =3D perf_session__set_guest_cpu(session, sid->machine_pid, + (pid_t)e->tid, (int)e2->vcpu); if (ret) return ret; } diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index 594b75ca95bf..898f811e23a2 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -91,7 +91,7 @@ static int repsep_snprintf(char *bf, size_t size, const c= har *fmt, ...) va_end(ap); =20 if (n >=3D (int)size) - return size - 1; + return (int)size - 1; return n; } =20 @@ -392,7 +392,7 @@ static int _hist_entry__sym_snprintf(struct map_symbol = *ms, len, ip); } =20 - return ret; + return (int)ret; } =20 int hist_entry__sym_snprintf(struct hist_entry *he, char *bf, size_t size,= unsigned int width) @@ -1339,7 +1339,7 @@ static int _hist_entry__addr_snprintf(struct map_symb= ol *ms, len, ip); } =20 - return ret; + return (int)ret; } =20 static int hist_entry__addr_from_snprintf(struct hist_entry *he, char *bf, @@ -2667,7 +2667,7 @@ static int __sort__hpp_width(struct perf_hpp_fmt *fmt, if (!len) len =3D hists__col_len(hists, hse->se->se_width_idx); =20 - return len; + return (int)len; } =20 static int __sort__hpp_entry(struct perf_hpp_fmt *fmt, struct perf_hpp *hp= p, @@ -2681,7 +2681,7 @@ static int __sort__hpp_entry(struct perf_hpp_fmt *fmt= , struct perf_hpp *hpp, if (!len) len =3D hists__col_len(he->hists, hse->se->se_width_idx); =20 - return hse->se->se_snprintf(he, hpp->buf, hpp->size, len); + return hse->se->se_snprintf(he, hpp->buf, hpp->size, (unsigned int)len); } =20 static int64_t __sort__hpp_cmp(struct perf_hpp_fmt *fmt, @@ -2919,7 +2919,7 @@ static int hde_width(struct hpp_dynamic_entry *hde) { if (!hde->hpp.len) { int len =3D hde->dynamic_len; - int namelen =3D strlen(hde->field->name); + int namelen =3D (int)strlen(hde->field->name); int fieldlen =3D hde->field->size; =20 if (namelen > len) @@ -2969,7 +2969,7 @@ static void update_dynamic_len(struct hpp_dynamic_ent= ry *hde, len =3D pos - str; =20 if (len > hde->dynamic_len) - hde->dynamic_len =3D len; + hde->dynamic_len =3D (unsigned int)len; break; } =20 @@ -3008,7 +3008,7 @@ static int __sort__hde_width(struct perf_hpp_fmt *fmt, if (!len) len =3D hde_width(hde); =20 - return len; + return (int)len; } =20 bool perf_hpp__defined_dynamic_entry(struct perf_hpp_fmt *fmt, struct hist= s *hists) @@ -3257,7 +3257,7 @@ static struct evsel *find_evsel(struct evlist *evlist= , char *event_name) =20 /* case 1 */ if (event_name[0] =3D=3D '%') { - int nr =3D strtol(event_name+1, NULL, 0); + int nr =3D (int)strtol(event_name+1, NULL, 0); =20 if (nr > evlist->core.nr_entries) return NULL; @@ -4222,7 +4222,7 @@ char *sort_help(const char *prefix, enum sort_mode mo= de) { struct strbuf sb; char *s; - int len =3D strlen(prefix) + INDENT; + int len =3D (int)strlen(prefix) + INDENT; =20 strbuf_init(&sb, 300); strbuf_addstr(&sb, prefix); diff --git a/tools/perf/util/synthetic-events.c b/tools/perf/util/synthetic= -events.c index 2fc4d0537840..f65bb4b76ccb 100644 --- a/tools/perf/util/synthetic-events.c +++ b/tools/perf/util/synthetic-events.c @@ -338,10 +338,10 @@ static bool read_proc_maps_line(struct io *io, __u64 = *start, __u64 *end, =20 if (io__get_hex(io, &temp) !=3D ':') return false; - *maj =3D temp; + *maj =3D (u32)temp; if (io__get_hex(io, &temp) !=3D ' ') return false; - *min =3D temp; + *min =3D (u32)temp; =20 ch =3D io__get_dec(io, inode); if (ch !=3D ' ') { @@ -433,7 +433,7 @@ int perf_event__synthesize_mmap_events(const struct per= f_tool *tool, unsigned long long timeout =3D proc_map_timeout * 1000000ULL; int rc =3D 0; const char *hugetlbfs_mnt =3D hugetlbfs__mountpoint(); - int hugetlbfs_mnt_len =3D hugetlbfs_mnt ? strlen(hugetlbfs_mnt) : 0; + size_t hugetlbfs_mnt_len =3D hugetlbfs_mnt ? strlen(hugetlbfs_mnt) : 0; =20 if (machine__is_default_guest(machine)) return 0; @@ -815,7 +815,7 @@ static int __event__synthesize_thread(union perf_event = *comm_event, if (!isdigit(dent->d_name[0])) continue; =20 - _pid =3D strtol(dent->d_name, &end, 10); + _pid =3D (pid_t)strtol(dent->d_name, &end, 10); if (*end) continue; =20 @@ -1043,7 +1043,7 @@ int perf_event__synthesize_threads(const struct perf_= tool *tool, return err; =20 if (nr_threads_synthesize =3D=3D UINT_MAX) - thread_nr =3D sysconf(_SC_NPROCESSORS_ONLN); + thread_nr =3D (int)sysconf(_SC_NPROCESSORS_ONLN); else thread_nr =3D nr_threads_synthesize; =20 @@ -1829,7 +1829,7 @@ int perf_event__synthesize_id_sample(__u64 *array, u6= 4 type, const struct perf_s array++; } =20 - return (void *)array - (void *)start; + return (int)((void *)array - (void *)start); } =20 int __perf_event__synthesize_id_index(const struct perf_tool *tool, perf_e= vent__handler_t process, @@ -2213,7 +2213,7 @@ int perf_event__synthesize_tracing_data(const struct = perf_tool *tool, int fd, st aligned_size =3D PERF_ALIGN(size, sizeof(u64)); padding =3D aligned_size - size; ev.tracing_data.header.size =3D sizeof(ev.tracing_data); - ev.tracing_data.size =3D aligned_size; + ev.tracing_data.size =3D (__u32)aligned_size; =20 process(tool, &ev, NULL, NULL); =20 @@ -2227,7 +2227,7 @@ int perf_event__synthesize_tracing_data(const struct = perf_tool *tool, int fd, st if (write_padded(&ff, NULL, 0, padding)) return -1; =20 - return aligned_size; + return (int)aligned_size; } #endif =20 @@ -2375,8 +2375,8 @@ int perf_event__synthesize_features(const struct perf= _tool *tool, struct perf_se struct perf_header *header =3D &session->header; struct perf_record_header_feature *fe; struct feat_fd ff; - size_t sz, sz_hdr; - int feat, ret; + size_t sz, sz_hdr, feat; + int ret; =20 sz_hdr =3D sizeof(fe->header); sz =3D sizeof(union perf_event); @@ -2394,7 +2394,7 @@ int perf_event__synthesize_features(const struct perf= _tool *tool, struct perf_se =20 for_each_set_bit(feat, header->adds_features, HEADER_FEAT_BITS) { if (!feat_ops[feat].synthesize) { - pr_debug("No record header feature for header :%d\n", feat); + pr_debug("No record header feature for header :%zu\n", feat); continue; } =20 diff --git a/tools/perf/util/target.c b/tools/perf/util/target.c index 0f383418e3df..6a331743a099 100644 --- a/tools/perf/util/target.c +++ b/tools/perf/util/target.c @@ -112,7 +112,7 @@ enum target_errno target__parse_uid(struct target *targ= et) * The user name not found. Maybe it's a UID number. */ char *endptr; - int uid =3D strtol(str, &endptr, 10); + int uid =3D (int)strtol(str, &endptr, 10); =20 if (*endptr !=3D '\0') return TARGET_ERRNO__INVALID_UID; diff --git a/tools/perf/util/thread-stack.c b/tools/perf/util/thread-stack.c index c6a0a27b12c2..09cd14854aa5 100644 --- a/tools/perf/util/thread-stack.c +++ b/tools/perf/util/thread-stack.c @@ -180,7 +180,7 @@ static struct thread_stack *thread_stack__new(struct th= read *thread, int cpu, unsigned int new_sz =3D 1; =20 if (thread_stack__per_cpu(thread) && cpu > 0) - new_sz =3D roundup_pow_of_two(cpu + 1); + new_sz =3D (unsigned int)roundup_pow_of_two(cpu + 1); =20 if (!ts || new_sz > old_sz) { new_ts =3D calloc(new_sz, sizeof(*ts)); diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c index 89585f53c1d5..c108f238012e 100644 --- a/tools/perf/util/thread.c +++ b/tools/perf/util/thread.c @@ -309,7 +309,7 @@ static int __thread__comm_len(struct thread *thread, co= nst char *comm) { if (!comm) return 0; - thread__set_comm_len(thread, strlen(comm)); + thread__set_comm_len(thread, (int)strlen(comm)); =20 return thread__var_comm_len(thread); } @@ -544,7 +544,7 @@ int thread__memcpy(struct thread *thread, struct machin= e *machine, =20 addr_location__exit(&al); =20 - return dso__data_read_offset(dso, machine, offset, buf, len); + return (int)dso__data_read_offset(dso, machine, offset, buf, len); } =20 void thread__free_stitch_list(struct thread *thread) diff --git a/tools/perf/util/thread_map.c b/tools/perf/util/thread_map.c index b5f12390c355..141fbb819a65 100644 --- a/tools/perf/util/thread_map.c +++ b/tools/perf/util/thread_map.c @@ -93,7 +93,7 @@ static struct perf_thread_map *__thread_map__new_all_cpus= (uid_t uid) while ((dirent =3D readdir(proc)) !=3D NULL) { char *end; bool grow =3D false; - pid_t pid =3D strtol(dirent->d_name, &end, 10); + pid_t pid =3D (pid_t)strtol(dirent->d_name, &end, 10); =20 if (*end) /* only interested in proper numerical dirents */ continue; @@ -195,7 +195,7 @@ static struct perf_thread_map *thread_map__new_by_pid_s= tr(const char *pid_str) return NULL; =20 strlist__for_each_entry(pos, slist) { - pid =3D strtol(pos->s, &end_ptr, 10); + pid =3D (pid_t)strtol(pos->s, &end_ptr, 10); =20 if (pid =3D=3D INT_MIN || pid =3D=3D INT_MAX || (*end_ptr !=3D '\0' && *end_ptr !=3D ',')) @@ -259,7 +259,7 @@ struct perf_thread_map *thread_map__new_by_tid_str(cons= t char *tid_str) return NULL; =20 strlist__for_each_entry(pos, slist) { - tid =3D strtol(pos->s, &end_ptr, 10); + tid =3D (pid_t)strtol(pos->s, &end_ptr, 10); =20 if (tid =3D=3D INT_MIN || tid =3D=3D INT_MAX || (*end_ptr !=3D '\0' && *end_ptr !=3D ',')) diff --git a/tools/perf/util/tool.c b/tools/perf/util/tool.c index 3b7f390f26eb..f13d5c1e3cd7 100644 --- a/tools/perf/util/tool.c +++ b/tools/perf/util/tool.c @@ -134,7 +134,7 @@ static int skipn(int fd, off_t n) while (n > 0) { ret =3D read(fd, buf, min(n, (off_t)sizeof(buf))); if (ret <=3D 0) - return ret; + return (int)ret; n -=3D ret; } =20 diff --git a/tools/perf/util/values.c b/tools/perf/util/values.c index ec72d29f3d58..e44dbceaa88b 100644 --- a/tools/perf/util/values.c +++ b/tools/perf/util/values.c @@ -197,7 +197,7 @@ static void perf_read_values__display_pretty(FILE *fp, tidwidth =3D 3; pidwidth =3D 3; for (j =3D 0; j < values->num_counters; j++) - counterwidth[j] =3D strlen(evsel__name(values->counters[j])); + counterwidth[j] =3D (int)strlen(evsel__name(values->counters[j])); for (i =3D 0; i < values->threads; i++) { int width; =20 @@ -251,7 +251,7 @@ static void perf_read_values__display_raw(FILE *fp, tidwidth =3D width; } for (j =3D 0; j < values->num_counters; j++) { - width =3D strlen(evsel__name(values->counters[j])); + width =3D (int)strlen(evsel__name(values->counters[j])); if (width > namewidth) namewidth =3D width; width =3D snprintf(NULL, 0, "%x", values->counters[j]->core.idx); --=20 2.49.0.906.g1f30a19c02-goog