Index: llvm/trunk/include/llvm/Object/ELFObjectFile.h =================================================================== --- llvm/trunk/include/llvm/Object/ELFObjectFile.h +++ llvm/trunk/include/llvm/Object/ELFObjectFile.h @@ -409,6 +409,9 @@ if (isExportedToOtherDSO(ESym)) Result |= SymbolRef::SF_Exported; + if (ESym->getVisibility() == ELF::STV_HIDDEN) + Result |= SymbolRef::SF_Hidden; + return Result; } Index: llvm/trunk/include/llvm/Object/SymbolicFile.h =================================================================== --- llvm/trunk/include/llvm/Object/SymbolicFile.h +++ llvm/trunk/include/llvm/Object/SymbolicFile.h @@ -93,6 +93,7 @@ SF_FormatSpecific = 1U << 7, // Specific to the object file format // (e.g. section symbols) SF_Thumb = 1U << 8, // Thumb symbol in a 32-bit ARM binary + SF_Hidden = 1U << 9, // Symbol has hidden visibility }; BasicSymbolRef() : OwningObject(nullptr) { } Index: llvm/trunk/test/Object/objdump-symbol-table.test =================================================================== --- llvm/trunk/test/Object/objdump-symbol-table.test +++ llvm/trunk/test/Object/objdump-symbol-table.test @@ -37,5 +37,7 @@ ELF-shared: shared-object-test.elf-i386: file format ELF-shared: SYMBOL TABLE: ELF-shared: 00000200 l F .text 00000003 local_func +ELF-shared: 000012b8 l *ABS* 00000000 .hidden _GLOBAL_OFFSET_TABLE_ +ELF-shared: 00001248 l *ABS* 00000000 .hidden _DYNAMIC ELF-shared: 000012c4 g .data 00000004 defined_sym ELF-shared: 000001f0 g F .text 00000003 global_func Index: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp +++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp @@ -629,6 +629,7 @@ bool Weak = Flags & SymbolRef::SF_Weak; bool Absolute = Flags & SymbolRef::SF_Absolute; bool Common = Flags & SymbolRef::SF_Common; + bool Hidden = Flags & SymbolRef::SF_Hidden; if (Common) { uint32_t Alignment; @@ -683,8 +684,11 @@ outs() << SectionName; } outs() << '\t' - << format("%08" PRIx64 " ", Size) - << Name + << format("%08" PRIx64 " ", Size); + if (Hidden) { + outs() << ".hidden "; + } + outs() << Name << '\n'; } }