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