What does ".hidden" mean in the output of output objdump -t?

c, c++, objdump

Solution

It means that the visibility of the symbol is hidden: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html

Reasons for changing the visibility of symbols include:

- Less risk of symbol collision.

- Smaller binaries.

- Reduced start-up time because the dynamic linker does not need to process as many symbols.

- Opportunities for more efficient code because the compiler knows that a symbol cannot be overridden via an LD_PRELOAD-type system.

- Prevention of third-party software calling into undocumented APIs.

See http://www.gnu.org/software/gnulib/manual/html_node/Exported-Symbols-of-Shared-Libraries.html for more information.

Problem

Example: ``` $ objdump Logger.cpp.o -t 00000000 g F .text 00000000 .hidden __sti___10_Logger_cpp_0b2ae32b ```

Original source