diff --git a/linker/Android.bp b/linker/Android.bp
index 8300f01..ea4e699 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -76,14 +76,6 @@
 // Configuration for the linker binary and any of its static libraries.
 cc_defaults {
     name: "linker_defaults",
-    arch: {
-        arm: {
-            cflags: ["-D__work_around_b_24465209__"],
-        },
-        x86: {
-            cflags: ["-D__work_around_b_24465209__"],
-        },
-    },
 
     cflags: linker_common_flags,
     asflags: linker_common_flags,
diff --git a/linker/dlfcn.cpp b/linker/dlfcn.cpp
index f811d6d..fc95903 100644
--- a/linker/dlfcn.cpp
+++ b/linker/dlfcn.cpp
@@ -345,7 +345,7 @@
     __libdl_info->soname_ = linker_si.soname_;
     __libdl_info->target_sdk_version_ = __ANDROID_API__;
     __libdl_info->generate_handle();
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
     strlcpy(__libdl_info->old_name_, __libdl_info->soname_.c_str(),
             sizeof(__libdl_info->old_name_));
 #endif
diff --git a/linker/linker_soinfo.cpp b/linker/linker_soinfo.cpp
index b626313..27a5237 100644
--- a/linker/linker_soinfo.cpp
+++ b/linker/linker_soinfo.cpp
@@ -629,47 +629,47 @@
 }
 
 void soinfo::set_realpath(const char* path) {
-#if defined(__work_around_b_24465209__)
+#if defined(__LP64__)
+  realpath_ = path;
+#else
   if (has_min_version(2)) {
     realpath_ = path;
   }
-#else
-  realpath_ = path;
 #endif
 }
 
 const char* soinfo::get_realpath() const {
-#if defined(__work_around_b_24465209__)
+#if defined(__LP64__)
+  return realpath_.c_str();
+#else
   if (has_min_version(2)) {
     return realpath_.c_str();
   } else {
     return old_name_;
   }
-#else
-  return realpath_.c_str();
 #endif
 }
 
 void soinfo::set_soname(const char* soname) {
-#if defined(__work_around_b_24465209__)
+#if defined(__LP64__)
+  soname_ = soname;
+#else
   if (has_min_version(2)) {
     soname_ = soname;
   }
   strlcpy(old_name_, soname_.c_str(), sizeof(old_name_));
-#else
-  soname_ = soname;
 #endif
 }
 
 const char* soinfo::get_soname() const {
-#if defined(__work_around_b_24465209__)
+#if defined(__LP64__)
+  return soname_.c_str();
+#else
   if (has_min_version(2)) {
     return soname_.c_str();
   } else {
     return old_name_;
   }
-#else
-  return soname_.c_str();
 #endif
 }
 
diff --git a/linker/linker_soinfo.h b/linker/linker_soinfo.h
index 37cee50..3416221 100644
--- a/linker/linker_soinfo.h
+++ b/linker/linker_soinfo.h
@@ -154,31 +154,31 @@
   size_t module_id = kTlsUninitializedModuleId;
 };
 
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
 #define SOINFO_NAME_LEN 128
 #endif
 
 struct soinfo {
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
  private:
   char old_name_[SOINFO_NAME_LEN];
 #endif
  public:
   const ElfW(Phdr)* phdr;
   size_t phnum;
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
   ElfW(Addr) unused0; // DO NOT USE, maintained for compatibility.
 #endif
   ElfW(Addr) base;
   size_t size;
 
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
   uint32_t unused1;  // DO NOT USE, maintained for compatibility.
 #endif
 
   ElfW(Dyn)* dynamic;
 
-#if defined(__work_around_b_24465209__)
+#if !defined(__LP64__)
   uint32_t unused2; // DO NOT USE, maintained for compatibility
   uint32_t unused3; // DO NOT USE, maintained for compatibility
 #endif
@@ -294,14 +294,12 @@
   bool can_unload() const;
   bool is_gnu_hash() const;
 
+  // TODO: rename this to make it clearer it's always true for LP64.
   bool inline has_min_version(uint32_t min_version __unused) const {
-#if defined(__work_around_b_24465209__)
-    return (flags_ & FLAG_NEW_SOINFO) != 0 && version_ >= min_version;
-#else
-    // If you make this return non-true in the case where
-    // __work_around_b_24465209__ is not defined, you will have to change
-    // memtag_dynamic_entries() and vma_names().
+#if defined(__LP64__)
     return true;
+#else
+    return (flags_ & FLAG_NEW_SOINFO) != 0 && version_ >= min_version;
 #endif
   }
 
@@ -362,13 +360,11 @@
   size_t get_gap_size() const;
 
   const memtag_dynamic_entries_t* memtag_dynamic_entries() const {
-#ifdef __aarch64__
-#ifdef __work_around_b_24465209__
-#error "Assuming aarch64 does not use versioned soinfo."
-#endif
+#if defined(__aarch64__)
     return &memtag_dynamic_entries_;
-#endif
+#else
     return nullptr;
+#endif
   }
   void* memtag_globals() const {
     const memtag_dynamic_entries_t* entries = memtag_dynamic_entries();
@@ -403,13 +399,11 @@
     return !is_linker() && memtag_globals() && memtag_globalssz() > 0 && __libc_mte_enabled();
   }
   std::list<std::string>* vma_names() {
-#ifdef __aarch64__
-#ifdef __work_around_b_24465209__
-#error "Assuming aarch64 does not use versioned soinfo."
-#endif
+#if defined(__aarch64__)
     return &vma_names_;
-#endif
+#else
     return nullptr;
+#endif
 };
 
   void set_should_use_16kib_app_compat(bool should_use_16kib_app_compat) {
