Use .text instead of .rodata on macho

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.

Change-Id: I4629c90d9e0ae4d4efc193a93be6fb93809ae895
This commit is contained in:
Johann 2016-02-17 18:25:09 -08:00
parent 7e065cd573
commit 9679be4bc0
2 changed files with 12 additions and 1 deletions

View File

@ -15,3 +15,4 @@ Manage name mangling (prefixing with '_') manually because 'PREFIX' does not
Expand PIC default to macho64 and respect CONFIG_PIC from libvpx
Set 'private_extern' visibility for macho targets.
Copy PIC 'GLOBAL' macros from x86_abi_support.asm
Use .text instead of .rodata on macho to avoid broken tables in PIC mode.

View File

@ -97,8 +97,18 @@
%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
SECTION .rodata align=%1
%ifidn __OUTPUT_FORMAT__,macho32
SECTION .text align=%1
fakegot:
%else
SECTION .rodata align=%1
%endif
%endmacro
; PIC macros are copied from vpx_ports/x86_abi_support.asm. The "define PIC"