[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