This is one of the ELF visibility directives. The other two are .hidden (Section 8.42 .hidden names) and .internal (Section 8.49 .internal names).
This directive overrides the named symbols default visibility (which is set by their binding: local, global or weak). The directive sets the visibility to protected which means that any references to the symbols from within the components that defines them must be resolved to the definition in that component, even if a definition in another component would normally preempt this.