Apply work around b/19059885 to x86

Bug: http://b/19059885
Bug: http://b/21203348
Change-Id: Ic375e9f877d68de8f866d17362879a7dde638465
diff --git a/libc/Android.mk b/libc/Android.mk
index 9679494..8b4f90e 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -1392,6 +1392,7 @@
 
 # TODO: This is to work around b/19059885. Remove after root cause is fixed
 LOCAL_LDFLAGS_arm := -Wl,--hash-style=both
+LOCAL_LDFLAGS_x86 := -Wl,--hash-style=both
 
 $(eval $(call patch-up-arch-specific-flags,LOCAL_CFLAGS,libc_common_cflags))
 $(eval $(call patch-up-arch-specific-flags,LOCAL_SRC_FILES,libc_arch_dynamic_src_files))
@@ -1522,6 +1523,7 @@
 
 # TODO: This is to work around b/19059885. Remove after root cause is fixed
 LOCAL_LDFLAGS_arm := -Wl,--hash-style=both
+LOCAL_LDFLAGS_x86 := -Wl,--hash-style=both
 
 LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
 LOCAL_MODULE:= libstdc++
diff --git a/libm/Android.mk b/libm/Android.mk
index 529dda8..4a5bbad 100644
--- a/libm/Android.mk
+++ b/libm/Android.mk
@@ -515,6 +515,7 @@
 
 # TODO: This is to work around b/19059885. Remove after root cause is fixed
 LOCAL_LDFLAGS_arm := -Wl,--hash-style=both
+LOCAL_LDFLAGS_x86 := -Wl,--hash-style=both
 
 LOCAL_MODULE := libm
 LOCAL_CLANG := $(libm_clang)
diff --git a/linker/Android.mk b/linker/Android.mk
index 5bdc2f9..4a7da76 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -35,6 +35,9 @@
     -fvisibility=hidden \
     -Wall -Wextra -Wunused -Werror \
 
+LOCAL_CFLAGS_arm += -D__work_around_b_19059885__
+LOCAL_CFLAGS_x86 += -D__work_around_b_19059885__
+
 LOCAL_CONLYFLAGS += \
     -std=gnu99 \
 
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 9d796ae..f9df831 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -1544,7 +1544,7 @@
           }
         }
       } else {
-#if !defined(__arm__)
+#if !defined(__work_around_b_19059885__)
         __libc_fatal("soinfo for \"%s\"@%p has no version", si->get_realpath(), si);
 #else
         PRINT("warning: soinfo for \"%s\"@%p has no version", si->get_realpath(), si);
@@ -2270,7 +2270,7 @@
 }
 
 const char* soinfo::get_realpath() const {
-#if defined(__arm__)
+#if defined(__work_around_b_19059885__)
   if (has_min_version(2)) {
     return realpath_.c_str();
   } else {
@@ -2282,7 +2282,7 @@
 }
 
 const char* soinfo::get_soname() const {
-#if defined(__arm__)
+#if defined(__work_around_b_19059885__)
   if (has_min_version(2)) {
     return soname_;
   } else {
@@ -2820,7 +2820,7 @@
   for (ElfW(Dyn)* d = dynamic; d->d_tag != DT_NULL; ++d) {
     if (d->d_tag == DT_SONAME) {
       soname_ = get_string(d->d_un.d_val);
-#if defined(__arm__)
+#if defined(__work_around_b_19059885__)
       strlcpy(old_name_, soname_, sizeof(old_name_));
 #endif
       break;
diff --git a/linker/linker.h b/linker/linker.h
index dc8c6e0..c7118ea 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -97,7 +97,7 @@
 
 #define SOINFO_VERSION 2
 
-#if defined(__arm__)
+#if defined(__work_around_b_19059885__)
 #define SOINFO_NAME_LEN 128
 #endif
 
@@ -172,7 +172,7 @@
 struct soinfo {
  public:
   typedef LinkedList<soinfo, SoinfoListAllocator> soinfo_list_t;
-#if defined(__arm__)
+#if defined(__work_around_b_19059885__)
  private:
   char old_name_[SOINFO_NAME_LEN];
 #endif
@@ -183,13 +183,13 @@
   ElfW(Addr) base;
   size_t size;
 
-#if defined(__arm__)
+#if defined(__work_around_b_19059885__)
   uint32_t unused1;  // DO NOT USE, maintained for compatibility.
 #endif
 
   ElfW(Dyn)* dynamic;
 
-#if defined(__arm__)
+#if defined(__work_around_b_19059885__)
   uint32_t unused2; // DO NOT USE, maintained for compatibility
   uint32_t unused3; // DO NOT USE, maintained for compatibility
 #endif
@@ -305,7 +305,7 @@
   bool is_gnu_hash() const;
 
   bool inline has_min_version(uint32_t min_version __unused) const {
-#if defined(__arm__)
+#if defined(__work_around_b_19059885__)
     return (flags_ & FLAG_NEW_SOINFO) != 0 && version_ >= min_version;
 #else
     return true;