[Object/ELF] Add support for setVisibility()
authorDavide Italiano <davide@freebsd.org>
Thu, 12 Mar 2015 07:48:25 +0000 (07:48 +0000)
committerDavide Italiano <davide@freebsd.org>
Thu, 12 Mar 2015 07:48:25 +0000 (07:48 +0000)
This is a prerequisite to implement symbol visibility for ELF
in lld.

Differential Revision: http://reviews.llvm.org/D8279

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232020 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/ELFTypes.h

index 9a97f7b..5a4e03e 100644 (file)
@@ -189,7 +189,15 @@ struct Elf_Sym_Impl : Elf_Sym_Base<ELFT> {
   }
 
   /// Access to the STV_xxx flag stored in the first two bits of st_other.
+  /// STV_DEFAULT: 0
+  /// STV_INTERNAL: 1
+  /// STV_HIDDEN: 2
+  /// STV_PROTECTED: 3
   unsigned char getVisibility() const { return st_other & 0x3; }
+  void setVisibility(unsigned char v) {
+    assert(v < 4 && "Invalid value for visibility");
+    st_other = (st_other & ~0x3) | v;
+  }
 };
 
 /// Elf_Versym: This is the structure of entries in the SHT_GNU_versym section