Commit 0d88e154 authored by Rahul Chaudhry's avatar Rahul Chaudhry
Browse files

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.

Change-Id: I2817f7a5f43041533d65ebf41aefd63f8581a452
parent 9a665826
...@@ -17,7 +17,8 @@ DECLARE_ALIGNED(16, const short, vp8_bilinear_filters_x86_4[8][8]) = { ...@@ -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 } { 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 }, { 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 }, { 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 }, { 96, 96, 96, 96, 96, 96, 96, 96, 32, 32, 32, 32, 32, 32, 32, 32 },
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
*/ */
#include <assert.h> #include <assert.h>
#include <stdlib.h> #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, 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, 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, 3, 14, 8, 11, 13, 4, 2, 9, 0, 3, 9, 6, 1, 2, 3, 14, 13, 1, 8,
......
...@@ -23,6 +23,12 @@ ...@@ -23,6 +23,12 @@
#define DECLARE_ALIGNED(n, typ, val) typ val #define DECLARE_ALIGNED(n, typ, val) typ val
#endif #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) #if HAVE_NEON && defined(_MSC_VER)
#define __builtin_prefetch(x) #define __builtin_prefetch(x)
#endif #endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment