shithub: libvpx

Download patch

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