The class __dir_stream is currently declared in two places: as a top-level forward declaration in directory_iterator.h, and as a friend declaration in class directory_entry, in directory_entry.h.
The former has a _LIBCPP_HIDDEN attribute, but the latter does not, causing the Firefox build to complain about the visibility not matching the previous declaration. This is because Firefox plays games with pushing and popping visibility.
Work around this by making both __dir_stream declarations consistently use _LIBCPP_HIDDEN.