On 30/08/2017 21:27, Martin Storsjö wrote:
From: James Cowgill <[email protected]>
In binutils 2.29, the behavior of the ADR instruction changed so that 1 is
added to the address of a Thumb function (previously nothing was added). This
allows the loaded address to be passed to a BLX instruction and the correct
mode change will occur.
So that the behavior matches in binutils 2.29 and pre-2.29, use .eqv to
pre-calculate the function address without the automatic +1 fixup. Then use
these new symbols as the function addresses to be loaded.
See: https://sourceware.org/bugzilla/show_bug.cgi?id=21458
The patch has modifications by Martin Storsjö, to fall back to
plain defines, in case the assembler doesn't support .eqv directives.
This makes sure it still works with old Apple tools with old binutils
gas (since gas-preprocessor doesn't implement .eqv), and with the latest
clang versions (where the assembler currently is capable of building
all of our arm assembly without support from gas-preprocessor, but
doesn't support .eqv).
---
configure | 4 ++++
libavcodec/arm/h264idct_neon.S | 35 +++++++++++++++++++++++++++--------
2 files changed, 31 insertions(+), 8 deletions(-)
Probably ok.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel