blob: 1470a5d7cda5e732b530d4202081045d74a0f5d9 [file] [log] [blame]
Andrew Geisslera9ff2b32020-10-16 10:11:54 -05001From 0ada120c883d4f1f6aafd01cf0fbb10d8bbba015 Mon Sep 17 00:00:00 2001
2From: Changbin Du <changbin.du@gmail.com>
3Date: Tue, 28 Jan 2020 23:29:38 +0800
4Subject: [PATCH] perf: Make perf able to build with latest libbfd
5
6libbfd has changed the bfd_section_* macros to inline functions
7bfd_section_<field> since 2019-09-18. See below two commits:
8 o http://www.sourceware.org/ml/gdb-cvs/2019-09/msg00064.html
9 o https://www.sourceware.org/ml/gdb-cvs/2019-09/msg00072.html
10
11This fix make perf able to build with both old and new libbfd.
12
13Signed-off-by: Changbin Du <changbin.du@gmail.com>
14Acked-by: Jiri Olsa <jolsa@redhat.com>
15Cc: Peter Zijlstra <peterz@infradead.org>
16Link: http://lore.kernel.org/lkml/20200128152938.31413-1-changbin.du@gmail.com
17Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
18
19Upstream-Status: Backport [https://github.com/torvalds/linux/commit/0ada120c883d4f1f6aafd01cf0fbb10d8bbba015]
20Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
21---
22 tools/perf/util/srcline.c | 16 +++++++++++++++-
23 1 file changed, 15 insertions(+), 1 deletion(-)
24
25diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
26index 6ccf6f6d09df9..5b7d6c16d33fe 100644
27--- a/tools/perf/util/srcline.c
28+++ b/tools/perf/util/srcline.c
29@@ -193,16 +193,30 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data)
30 bfd_vma pc, vma;
31 bfd_size_type size;
32 struct a2l_data *a2l = data;
33+ flagword flags;
34
35 if (a2l->found)
36 return;
37
38- if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0)
39+#ifdef bfd_get_section_flags
40+ flags = bfd_get_section_flags(abfd, section);
41+#else
42+ flags = bfd_section_flags(section);
43+#endif
44+ if ((flags & SEC_ALLOC) == 0)
45 return;
46
47 pc = a2l->addr;
48+#ifdef bfd_get_section_vma
49 vma = bfd_get_section_vma(abfd, section);
50+#else
51+ vma = bfd_section_vma(section);
52+#endif
53+#ifdef bfd_get_section_size
54 size = bfd_get_section_size(section);
55+#else
56+ size = bfd_section_size(section);
57+#endif
58
59 if (pc < vma || pc >= vma + size)
60 return;