[FFmpeg-cvslog] aarch64: Fix negative movrel offsets for windows

Martin Storsjö git at videolan.org
Sat Nov 11 15:03:38 EET 2017


ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Sun Jul  9 23:52:10 2017 +0300| [7b7760ad6efb7b96122aa7133ad21e22653ae222] | committer: Martin Storsjö

aarch64: Fix negative movrel offsets for windows

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.

Signed-off-by: Martin Storsjö <martin at martin.st>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7b7760ad6efb7b96122aa7133ad21e22653ae222
---

 libavutil/aarch64/asm.S | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/libavutil/aarch64/asm.S b/libavutil/aarch64/asm.S
index 86d36cd57f..7e2af4df17 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)



More information about the ffmpeg-cvslog mailing list