ref: 9f814634545d18dbb0114804e525809f382dcba0
parent: 220daa00e0753fb7c2b7346c5557624df9055f21
author: Timothy B. Terriberry <tterribe@xiph.org>
date: Thu Jun 17 15:33:52 EDT 2010
Fix a linker error on x86-64 Linux when not using a version script. If the version script produced by the libvpx build system is not used when linking a shared library on x86-64 Linux, the constant data in the subpel filters produces R_X86_64_32 relocation errors due to the use of wrt rip addressing instead of wrt rip wrt ..gotpcrel. Instead of adding a new macro for this addressing mode, this patch sets the ELF visibility of these symbols to "hidden", which allows wrt rip addressing to work without a text relocation. This allows building a shared library without using the provided build system or a separate version script. Fixes http://code.google.com/p/webm/issues/detail?id=46 Change-Id: Ie108f9d9a4352e5af46938bf4750d2302c1b2dc2
--- a/vp8/common/x86/subpixel_mmx.asm
+++ b/vp8/common/x86/subpixel_mmx.asm
@@ -731,7 +731,7 @@
times 4 dw 0x40
align 16
-global sym(vp8_six_tap_mmx)
+global sym(vp8_six_tap_mmx) HIDDEN_DATA
sym(vp8_six_tap_mmx):
times 8 dw 0
times 8 dw 0
@@ -791,7 +791,7 @@
align 16
-global sym(vp8_bilinear_filters_mmx)
+global sym(vp8_bilinear_filters_mmx) HIDDEN_DATA
sym(vp8_bilinear_filters_mmx):
times 8 dw 128
times 8 dw 0
--- a/vpx_ports/x86_abi_support.asm
+++ b/vpx_ports/x86_abi_support.asm
@@ -138,6 +138,7 @@
%endmacro
%endif
%endif
+ %define HIDDEN_DATA
%else
%macro GET_GOT 1
%endmacro
@@ -144,6 +145,9 @@
%define GLOBAL wrt rip
%ifidn __OUTPUT_FORMAT__,elf64
%define WRT_PLT wrt ..plt
+ %define HIDDEN_DATA :data hidden
+ %else
+ %define HIDDEN_DATA
%endif
%endif
%ifnmacro GET_GOT