aboutsummaryrefslogtreecommitdiff
path: root/libvpx
diff options
context:
space:
mode:
authorRahul Chaudhry <rahulchaudhry@google.com>2017-05-12 14:00:28 -0700
committerRahul Chaudhry <rahulchaudhry@google.com>2017-05-12 14:04:00 -0700
commitca30a60d2d6fbab4ac07c63bfbf7bbbd1fe6a583 (patch)
tree2f78d385034e1d5f42086fcb32e0c7caf7d4d8f0 /libvpx
parent491c00eaae0cb9f5dce98a427f14f79617fdaee7 (diff)
downloadlibvpx-ca30a60d2d6fbab4ac07c63bfbf7bbbd1fe6a583.tar.gz
libvpx: Cherry-pick 0d88e15 from upstream
Description from upstream: Add visibility="protected" attribute for global variables referenced in asm files. During aosp builds with binutils-2.27, we're seeing linker error messages of this form: libvpx.a(subpixel_mmx.o): relocation R_386_GOTOFF against preemptible symbol vp8_bilinear_filters_x86_8 cannot be used when making a shared object subpixel_mmx.o is assembled from "vp8/common/x86/subpixel_mmx.asm". Other messages refer to symbol references from deblock_sse2.o and subpixel_sse2.o, also assembled from asm files. This change marks such symbols as having "protected" visibility. This satisfies the linker as the symbols are not preemptible from outside the shared library now, which I think is the original intent anyway. Bug: 37955747 Test: lunch aosp_x86-userdebug && m Change-Id: Ica100155c1b65dd44740941d4d3c25abf7b08487
Diffstat (limited to 'libvpx')
-rw-r--r--libvpx/vp8/common/x86/filter_x86.c3
-rw-r--r--libvpx/vpx_dsp/deblock.c4
-rw-r--r--libvpx/vpx_ports/mem.h6
3 files changed, 10 insertions, 3 deletions
diff --git a/libvpx/vp8/common/x86/filter_x86.c b/libvpx/vp8/common/x86/filter_x86.c
index 2405342f0..73435a7dd 100644
--- a/libvpx/vp8/common/x86/filter_x86.c
+++ b/libvpx/vp8/common/x86/filter_x86.c
@@ -17,7 +17,8 @@ DECLARE_ALIGNED(16, const short, vp8_bilinear_filters_x86_4[8][8]) = {
{ 32, 32, 32, 32, 96, 96, 96, 96 }, { 16, 16, 16, 16, 112, 112, 112, 112 }
};
-DECLARE_ALIGNED(16, const short, vp8_bilinear_filters_x86_8[8][16]) = {
+DECLARE_PROTECTED(DECLARE_ALIGNED(16, const short,
+ vp8_bilinear_filters_x86_8[8][16])) = {
{ 128, 128, 128, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 112, 112, 112, 112, 112, 112, 112, 112, 16, 16, 16, 16, 16, 16, 16, 16 },
{ 96, 96, 96, 96, 96, 96, 96, 96, 32, 32, 32, 32, 32, 32, 32, 32 },
diff --git a/libvpx/vpx_dsp/deblock.c b/libvpx/vpx_dsp/deblock.c
index 6c2748497..c70c5f02b 100644
--- a/libvpx/vpx_dsp/deblock.c
+++ b/libvpx/vpx_dsp/deblock.c
@@ -8,9 +8,9 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#include <stdlib.h>
-#include "vpx/vpx_integer.h"
+#include "vpx_ports/mem.h"
-const int16_t vpx_rv[] = {
+DECLARE_PROTECTED(const int16_t vpx_rv[]) = {
8, 5, 2, 2, 8, 12, 4, 9, 8, 3, 0, 3, 9, 0, 0, 0, 8, 3, 14,
4, 10, 1, 11, 14, 1, 14, 9, 6, 12, 11, 8, 6, 10, 0, 0, 8, 9, 0,
3, 14, 8, 11, 13, 4, 2, 9, 0, 3, 9, 6, 1, 2, 3, 14, 13, 1, 8,
diff --git a/libvpx/vpx_ports/mem.h b/libvpx/vpx_ports/mem.h
index 2d49b7a06..110d538ed 100644
--- a/libvpx/vpx_ports/mem.h
+++ b/libvpx/vpx_ports/mem.h
@@ -33,6 +33,12 @@
#define UNINITIALIZED_IS_SAFE(x) x
#endif
+#if defined(__GNUC__) && __GNUC__ >= 4 && !defined(_WIN32)
+#define DECLARE_PROTECTED(decl) decl __attribute__((visibility("protected")))
+#else
+#define DECLARE_PROTECTED(decl) decl
+#endif
+
#if HAVE_NEON && defined(_MSC_VER)
#define __builtin_prefetch(x)
#endif