diff options
Diffstat (limited to 'lib/ReaderWriter/MachO/FlatNamespaceFile.h')
| -rw-r--r-- | lib/ReaderWriter/MachO/FlatNamespaceFile.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/lib/ReaderWriter/MachO/FlatNamespaceFile.h b/lib/ReaderWriter/MachO/FlatNamespaceFile.h new file mode 100644 index 000000000000..6c6a9262ba2e --- /dev/null +++ b/lib/ReaderWriter/MachO/FlatNamespaceFile.h @@ -0,0 +1,61 @@ +//===- lib/ReaderWriter/MachO/FlatNamespaceFile.h -------------------------===// +// +// The LLVM Linker +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLD_READER_WRITER_MACHO_FLAT_NAMESPACE_FILE_H +#define LLD_READER_WRITER_MACHO_FLAT_NAMESPACE_FILE_H + +#include "lld/Core/SharedLibraryFile.h" +#include "llvm/Support/Debug.h" + +namespace lld { +namespace mach_o { + +// +// A FlateNamespaceFile instance may be added as a resolution source of last +// resort, depending on how -flat_namespace and -undefined are set. +// +class FlatNamespaceFile : public SharedLibraryFile { +public: + FlatNamespaceFile(const MachOLinkingContext &context) + : SharedLibraryFile("flat namespace") { } + + const SharedLibraryAtom *exports(StringRef name, + bool dataSymbolOnly) const override { + _sharedLibraryAtoms.push_back( + new (allocator()) MachOSharedLibraryAtom(*this, name, getDSOName(), + false)); + + return _sharedLibraryAtoms.back(); + } + + StringRef getDSOName() const override { return "flat-namespace"; } + + const AtomVector<DefinedAtom> &defined() const override { + return _noDefinedAtoms; + } + const AtomVector<UndefinedAtom> &undefined() const override { + return _noUndefinedAtoms; + } + + const AtomVector<SharedLibraryAtom> &sharedLibrary() const override { + return _sharedLibraryAtoms; + } + + const AtomVector<AbsoluteAtom> &absolute() const override { + return _noAbsoluteAtoms; + } + +private: + mutable AtomVector<SharedLibraryAtom> _sharedLibraryAtoms; +}; + +} // namespace mach_o +} // namespace lld + +#endif // LLD_READER_WRITER_MACHO_FLAT_NAMESPACE_FILE_H |
