On 06/08/2017 12:38, Martin Storsjö wrote: > On windows, the offset for the relocation doesn't get stored in > the relocation itself, but as an unsigned immediate in the opcode. > Therefore, negative offsets has to be handled via a separate sub > instruction, just as on MachO. > --- > libavutil/aarch64/asm.S | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/libavutil/aarch64/asm.S b/libavutil/aarch64/asm.S > index 86d36cd..7e2af4d 100644 > --- a/libavutil/aarch64/asm.S > +++ b/libavutil/aarch64/asm.S > @@ -82,6 +82,15 @@ ELF .size \name, . - \name > adrp \rd, \val+(\offset)@PAGE > add \rd, \rd, \val+(\offset)@PAGEOFF > .endif > +#elif CONFIG_PIC && defined(_WIN32) > + .if \offset < 0 > + adrp \rd, \val > + add \rd, \rd, :lo12:\val > + sub \rd, \rd, -(\offset) > + .else > + adrp \rd, \val+(\offset) > + add \rd, \rd, :lo12:\val+(\offset) > + .endif > #elif CONFIG_PIC > adrp \rd, \val+(\offset) > add \rd, \rd, :lo12:\val+(\offset) >
Seems fine _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
