This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Bug#950414: binutils-dev: failed to build linux perf (tools/perf) due to missing functions
- From: Romain Naour <romain dot naour at smile dot fr>
- To: Hagen Paul Pfeifer <hagen at jauu dot net>, Matthias Klose <doko at debian dot org>
- Cc: 950414 at bugs dot debian dot org, Ben Hutchings <ben at decadent dot org dot uk>, Stephen Rothwell <sfr at canb dot auug dot org dot au>, Arnaldo Carvalho de Melo <arnaldo dot melo at gmail dot com>, binutils <binutils at sourceware dot org>, gdb at sourceware dot org, Alan Modra <amodra at gmail dot com>, "H.J. Lu" <hjl dot tools at gmail dot com>, Nick Clifton <nickc at redhat dot com>
- Date: Tue, 4 Feb 2020 23:04:11 +0100
- Subject: Re: Bug#950414: binutils-dev: failed to build linux perf (tools/perf) due to missing functions
- References: <20200201095306.GD9786@laniakea> <005fbdf3-a9c6-36d8-c2e8-0d307de5a40d@debian.org> <20200203210310.GA217509@virgo> <d91b6b94-c326-b972-483d-f586fb8a0d4b@debian.org> <20200204153557.GA280113@virgo>
Hi All,
Le 04/02/2020 à 16:35, Hagen Paul Pfeifer a écrit :
> * Matthias Klose | 2020-02-03 22:29:21 [+0100]:
>
> [CCing Alan Modra, H.J. Lu, Nick Clifton & Arnaldo]
>
> Ok, I tried to check what happens:
>
> - Alan Modra modified the bfd_section_* macros (see commit fd3619828e94a)
> upstream (https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=summary)
> Or in other words: this patch removed/renamed the macros silently. This was
> back in September last Year. No __attribute__ deprecation warning or other
> information was given a priori to react.
> - This went mainline and was now taken by Debian Bullseye the last couple of
> days. RedHat and other distributions will probably run in the same problems,
> once they upgrade binutils.
> - Linux perf and other applications build on these functionality are now
> doomed.
Binutils 2.34 broke also elf2flt tool:
https://github.com/uclinux-dev/elf2flt/blob/453398f917d167f8c308c8f997270c48ae8f8b12/elf2flt.c#L326
elf2flt is used in Buildroot build for armv7m (cortex-m4) and m68k-codefire.
https://gitlab.com/kubu93/toolchains-builder/-/jobs/423715926
Best regards,
Romain
>
>> binutils doesn't have any comitment to a stable ABI/API for libopcodes and
>> libbfd.
>
> Sure? They exposed bfd_get_section_flags and friends in bfd.h - it was not
> hidden somewhere in private header files nor was it guarded by any other
> measure. Correct me if I am wrong!
>
> And: the functions/macros where used in the wild! They where helpful and
> serviceable to the broader audience - which is (sorry: "was" :-) great!
>
> The following patch fixed the problem for me to build Linux perf again:
>
> --- /usr/include/bfd.h 2020-02-04 15:24:36.746534674 +0000
> +++ /usr/include/bfd.new.h 2020-02-04 15:24:39.486542126 +0000
> @@ -1243,6 +1243,11 @@
> return (sec->flags & SEC_IS_COMMON) != 0;
> }
>
> +#define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags)
> +#define bfd_get_section_userdata(bfd, ptr) ((void) bfd, (ptr)->userdata)
> +#define bfd_get_section_vma(bfd, ptr) ((void) bfd, (ptr)->vma)
> +#define bfd_get_section_size(ptr) ((ptr)->size)
> +
>
>
> Note: for binutils ./bfd/bfd-in.h should be adjusted - sure.
>
> Hagen Paul Pfeifer
>
>>> It seems other people (kernel folks, Stephen) have the identical error as
>>> well: https://lkml.org/lkml/2020/1/30/1005
>>> Stephen: or is the bug fixed somewhere else? Do you have an workaround?a
>>
>> I don't have a work-around. If you rely on binutils internals, you really should
>> adjust to binutils upstream.