Re: [PATCH] perf: Make perf able to build with latest libbfd

From: Jiri Olsa
Date: Wed Jan 29 2020 - 02:58:50 EST


On Tue, Jan 28, 2020 at 11:29:38PM +0800, Changbin Du wrote:
> libbfd has changed the bfd_section_* macros to inline functions
> bfd_section_<field> since 2019-09-18. See below two commits:
> o http://www.sourceware.org/ml/gdb-cvs/2019-09/msg00064.html
> o https://www.sourceware.org/ml/gdb-cvs/2019-09/msg00072.html
>
> This fix make perf able to build with both old and new libbfd.
>
> Signed-off-by: Changbin Du <changbin.du@xxxxxxxxx>

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka


> ---
> tools/perf/util/srcline.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
> index 6ccf6f6d09df..5b7d6c16d33f 100644
> --- a/tools/perf/util/srcline.c
> +++ b/tools/perf/util/srcline.c
> @@ -193,16 +193,30 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data)
> bfd_vma pc, vma;
> bfd_size_type size;
> struct a2l_data *a2l = data;
> + flagword flags;
>
> if (a2l->found)
> return;
>
> - if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0)
> +#ifdef bfd_get_section_flags
> + flags = bfd_get_section_flags(abfd, section);
> +#else
> + flags = bfd_section_flags(section);
> +#endif
> + if ((flags & SEC_ALLOC) == 0)
> return;
>
> pc = a2l->addr;
> +#ifdef bfd_get_section_vma
> vma = bfd_get_section_vma(abfd, section);
> +#else
> + vma = bfd_section_vma(section);
> +#endif
> +#ifdef bfd_get_section_size
> size = bfd_get_section_size(section);
> +#else
> + size = bfd_section_size(section);
> +#endif
>
> if (pc < vma || pc >= vma + size)
> return;
> --
> 2.24.0
>