[llvm-objdump] Map STT_TLS to ST_Other (previously ST_Data)

ST_Data is used to model BFD `BFD_OBJECT`.
A STT_TLS symbol does not have the `BFD_OBJECT` flag in BFD.
This makes sense because a STT_TLS symbol is like in a different address space,
normal data/object properties do not apply on them.

With this change, a STT_TLS symbol will not be displayed as 'O'.
This new behavior matches objdump.

Differential Revision: https://reviews.llvm.org/D96735

GitOrigin-RevId: 018a484cd26d72fb4c9e7fd75e5f5bc7838dfc73
diff --git a/include/llvm/Object/ELFObjectFile.h b/include/llvm/Object/ELFObjectFile.h
index fed53ee..0999d4b 100644
--- a/include/llvm/Object/ELFObjectFile.h
+++ b/include/llvm/Object/ELFObjectFile.h
@@ -670,8 +670,8 @@
     return SymbolRef::ST_Function;
   case ELF::STT_OBJECT:
   case ELF::STT_COMMON:
-  case ELF::STT_TLS:
     return SymbolRef::ST_Data;
+  case ELF::STT_TLS:
   default:
     return SymbolRef::ST_Other;
   }
diff --git a/test/tools/llvm-objdump/ELF/symbol-table.test b/test/tools/llvm-objdump/ELF/symbol-table.test
index 98196bf..507641e 100644
--- a/test/tools/llvm-objdump/ELF/symbol-table.test
+++ b/test/tools/llvm-objdump/ELF/symbol-table.test
@@ -14,7 +14,7 @@
 # CHECK-NEXT:0000000000000000 g     O .data	0000000000000010 object
 # CHECK-NEXT:0000000000000000 g     F .text	000000000000000f func
 # CHECK-NEXT:0000000000000000 g     O *COM*	0000000000000000 common
-# CHECK-NEXT:0000000000000000 g     O .data	0000000000000000 tls
+# CHECK-NEXT:0000000000000000 g       .data	0000000000000000 tls
 # CHECK-NEXT:0000000000000000 g   i   .text	0000000000000000 ifunc
 # CHECK-NEXT:0000000000000000 g       .text	0000000000000000 invalid_type
 # CHECK-NEXT:0000000000000000 g       .text	0000000000000000 STT_HIOS