shithub: libvpx

Download patch

ref: a90c2e5425eede53a4d6508bea33610b6aabd058
parent: cbd820dcebebfd7d5834afbffc18848c0ad9f4e0
author: Johann <johannkoenig@google.com>
date: Thu Apr 2 06:47:30 EDT 2020

x86inc.asm: use .text on march32

Reapply 9679be4bc. The read only sections are getting stripped on some
OS X builds. As a result, random data is used in place of the intended
tables.

BUG=webm:1679

Change-Id: Ifb17acbed73df4b9949a8badae2d9305a3073b83

--- a/third_party/x86inc/README.libvpx_new
+++ b/third_party/x86inc/README.libvpx_new
@@ -13,3 +13,4 @@
 Manage name mangling (prefixing with '_') manually because 'PREFIX' does not
   exist in libvpx.
 Copy PIC 'GLOBAL' macros from x86_abi_support.asm
+Use .text instead of .rodata on macho to avoid broken tables in PIC mode.
--- a/third_party/x86inc/x86inc.asm_new
+++ b/third_party/x86inc/x86inc.asm_new
@@ -97,11 +97,19 @@
     %define mangle(x) x
 %endif
 
+; In some instances macho32 tables get misaligned when using .rodata.
+; When looking at the disassembly it appears that the offset is either
+; correct or consistently off by 90. Placing them in the .text section
+; works around the issue. It appears to be specific to the way libvpx
+; handles the tables.
 %macro SECTION_RODATA 0-1 16
     %ifidn __OUTPUT_FORMAT__,win32
         SECTION .rdata align=%1
     %elif WIN64
         SECTION .rdata align=%1
+    %elifidn __OUTPUT_FORMAT__,macho32
+        SECTION .text align=%1
+        fakegot:
     %else
         SECTION .rodata align=%1
     %endif