Reject .so files using ELF TLS.

Bug: http://b/74361956
Test: ran tests

(cherry picked from commit 9724e93c196d0dbaa0e60bf45c29971a22da50c9)

Change-Id: I287c926951c337aacd2246940a1e6474e4c661e1
diff --git a/linker/linker.cpp b/linker/linker.cpp
index dd700fe..32df911 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -2784,6 +2784,11 @@
           }
         }
 #endif
+        if (ELF_ST_TYPE(s->st_info) == STT_TLS) {
+          DL_ERR("unsupported ELF TLS symbol \"%s\" referenced by \"%s\"",
+                 sym_name, get_realpath());
+          return false;
+        }
         sym_addr = lsi->resolve_symbol_address(s);
 #if !defined(__LP64__)
         if (protect_segments) {
@@ -3437,6 +3442,11 @@
 
       default:
         if (!relocating_linker) {
+          if (d->d_tag == DT_TLSDESC_GOT || d->d_tag == DT_TLSDESC_PLT) {
+            DL_ERR("unsupported ELF TLS DT entry in \"%s\"", get_realpath());
+            return false;
+          }
+
           const char* tag_name;
           if (d->d_tag == DT_RPATH) {
             tag_name = "DT_RPATH";