Index: include/lld/Common/Version.h =================================================================== --- include/lld/Common/Version.h +++ include/lld/Common/Version.h @@ -18,7 +18,7 @@ #include "llvm/ADT/StringRef.h" namespace lld { -/// \brief Retrieves a string representing the complete lld version. +/// Retrieves a string representing the complete lld version. std::string getLLDVersion(); } Index: include/lld/Core/DefinedAtom.h =================================================================== --- include/lld/Core/DefinedAtom.h +++ include/lld/Core/DefinedAtom.h @@ -18,7 +18,7 @@ namespace lld { class File; -/// \brief The fundamental unit of linking. +/// The fundamental unit of linking. /// /// A C function or global variable is an atom. An atom has content and /// attributes. The content of a function atom is the instructions that @@ -179,10 +179,10 @@ }; enum DynamicExport { - /// \brief The linker may or may not export this atom dynamically depending + /// The linker may or may not export this atom dynamically depending /// on the output type and other context of the link. dynamicExportNormal, - /// \brief The linker will always export this atom dynamically. + /// The linker will always export this atom dynamically. dynamicExportAlways, }; @@ -212,26 +212,26 @@ } }; - /// \brief returns a value for the order of this Atom within its file. + /// returns a value for the order of this Atom within its file. /// /// This is used by the linker to order the layout of Atoms so that the /// resulting image is stable and reproducible. virtual uint64_t ordinal() const = 0; - /// \brief the number of bytes of space this atom's content will occupy in the + /// the number of bytes of space this atom's content will occupy in the /// final linked image. /// /// For a function atom, it is the number of bytes of code in the function. virtual uint64_t size() const = 0; - /// \brief The size of the section from which the atom is instantiated. + /// The size of the section from which the atom is instantiated. /// /// Merge::mergeByLargestSection is defined in terms of section size /// and not in terms of atom size, so we need this function separate /// from size(). virtual uint64_t sectionSize() const { return 0; } - /// \brief The visibility of this atom to other atoms. + /// The visibility of this atom to other atoms. /// /// C static functions have scope scopeTranslationUnit. Regular C functions /// have scope scopeGlobal. Functions compiled with visibility=hidden have @@ -239,48 +239,48 @@ /// not by the OS loader. virtual Scope scope() const = 0; - /// \brief Whether the linker should use direct or indirect access to this + /// Whether the linker should use direct or indirect access to this /// atom. virtual Interposable interposable() const = 0; - /// \brief how the linker should handle if multiple atoms have the same name. + /// how the linker should handle if multiple atoms have the same name. virtual Merge merge() const = 0; - /// \brief The type of this atom, such as code or data. + /// The type of this atom, such as code or data. virtual ContentType contentType() const = 0; - /// \brief The alignment constraints on how this atom must be laid out in the + /// The alignment constraints on how this atom must be laid out in the /// final linked image (e.g. 16-byte aligned). virtual Alignment alignment() const = 0; - /// \brief Whether this atom must be in a specially named section in the final + /// Whether this atom must be in a specially named section in the final /// linked image, or if the linker can infer the section based on the /// contentType(). virtual SectionChoice sectionChoice() const = 0; - /// \brief If sectionChoice() != sectionBasedOnContent, then this return the + /// If sectionChoice() != sectionBasedOnContent, then this return the /// name of the section the atom should be placed into. virtual StringRef customSectionName() const = 0; - /// \brief constraints on whether the linker may dead strip away this atom. + /// constraints on whether the linker may dead strip away this atom. virtual DeadStripKind deadStrip() const = 0; - /// \brief Under which conditions should this atom be dynamically exported. + /// Under which conditions should this atom be dynamically exported. virtual DynamicExport dynamicExport() const { return dynamicExportNormal; } - /// \brief Code model used by the atom. + /// Code model used by the atom. virtual CodeModel codeModel() const { return codeNA; } - /// \brief Returns the OS memory protections required for this atom's content + /// Returns the OS memory protections required for this atom's content /// at runtime. /// /// A function atom is R_X, a global variable is RW_, and a read-only constant /// is R__. virtual ContentPermissions permissions() const; - /// \brief returns a reference to the raw (unrelocated) bytes of this Atom's + /// returns a reference to the raw (unrelocated) bytes of this Atom's /// content. virtual ArrayRef rawContent() const = 0; @@ -317,10 +317,10 @@ const void *_it; }; - /// \brief Returns an iterator to the beginning of this Atom's References. + /// Returns an iterator to the beginning of this Atom's References. virtual reference_iterator begin() const = 0; - /// \brief Returns an iterator to the end of this Atom's References. + /// Returns an iterator to the end of this Atom's References. virtual reference_iterator end() const = 0; /// Adds a reference to this atom. @@ -361,11 +361,11 @@ ~DefinedAtom() override = default; - /// \brief Returns a pointer to the Reference object that the abstract + /// Returns a pointer to the Reference object that the abstract /// iterator "points" to. virtual const Reference *derefIterator(const void *iter) const = 0; - /// \brief Adjusts the abstract iterator to "point" to the next Reference + /// Adjusts the abstract iterator to "point" to the next Reference /// object for this Atom. virtual void incrementIterator(const void *&iter) const = 0; }; Index: include/lld/Core/File.h =================================================================== --- include/lld/Core/File.h +++ include/lld/Core/File.h @@ -43,7 +43,7 @@ public: virtual ~File(); - /// \brief Kinds of files that are supported. + /// Kinds of files that are supported. enum Kind { kindErrorObject, ///< a error object file (.o) kindNormalizedObject, ///< a normalized file (.o) @@ -59,7 +59,7 @@ kindArchiveLibrary ///< archive (.a) }; - /// \brief Returns file kind. Need for dyn_cast<> on File objects. + /// Returns file kind. Need for dyn_cast<> on File objects. Kind kind() const { return _kind; } @@ -172,19 +172,19 @@ AtomVector &_v; }; - /// \brief Must be implemented to return the AtomVector object for + /// Must be implemented to return the AtomVector object for /// all DefinedAtoms in this File. virtual const AtomRange defined() const = 0; - /// \brief Must be implemented to return the AtomVector object for + /// Must be implemented to return the AtomVector object for /// all UndefinedAtomw in this File. virtual const AtomRange undefined() const = 0; - /// \brief Must be implemented to return the AtomVector object for + /// Must be implemented to return the AtomVector object for /// all SharedLibraryAtoms in this File. virtual const AtomRange sharedLibrary() const = 0; - /// \brief Must be implemented to return the AtomVector object for + /// Must be implemented to return the AtomVector object for /// all AbsoluteAtoms in this File. virtual const AtomRange absolute() const = 0; @@ -194,7 +194,7 @@ /// of a different file. We need to destruct all atoms before any files. virtual void clearAtoms() = 0; - /// \brief If a file is parsed using a different method than doParse(), + /// If a file is parsed using a different method than doParse(), /// one must use this method to set the last error status, so that /// doParse will not be called twice. Only YAML reader uses this /// (because YAML reader does not read blobs but structured data). @@ -212,12 +212,12 @@ } protected: - /// \brief only subclasses of File can be instantiated + /// only subclasses of File can be instantiated File(StringRef p, Kind kind) : _path(p), _kind(kind), _ordinal(UINT64_MAX), _nextAtomOrdinal(0) {} - /// \brief Subclasses should override this method to parse the + /// Subclasses should override this method to parse the /// memory buffer passed to this file's constructor. virtual std::error_code doParse() { return std::error_code(); } Index: include/lld/Core/Instrumentation.h =================================================================== --- include/lld/Core/Instrumentation.h +++ include/lld/Core/Instrumentation.h @@ -8,7 +8,7 @@ //===----------------------------------------------------------------------===// /// /// \file -/// \brief Provide an Instrumentation API that optionally uses VTune interfaces. +/// Provide an Instrumentation API that optionally uses VTune interfaces. /// //===----------------------------------------------------------------------===// @@ -24,7 +24,7 @@ namespace lld { #ifdef LLD_HAS_VTUNE -/// \brief A unique global scope for instrumentation data. +/// A unique global scope for instrumentation data. /// /// Domains last for the lifetime of the application and cannot be destroyed. /// Multiple Domains created with the same name represent the same domain. @@ -38,7 +38,7 @@ __itt_domain *operator->() const { return _domain; } }; -/// \brief A global reference to a string constant. +/// A global reference to a string constant. /// /// These are uniqued by the ITT runtime and cannot be deleted. They are not /// specific to a domain. @@ -54,7 +54,7 @@ operator __itt_string_handle *() const { return _handle; } }; -/// \brief A task on a single thread. Nests within other tasks. +/// A task on a single thread. Nests within other tasks. /// /// Each thread has its own task stack and tasks nest recursively on that stack. /// A task cannot transfer threads. @@ -68,7 +68,7 @@ ScopedTask &operator=(const ScopedTask &) = delete; public: - /// \brief Create a task in Domain \p d named \p s. + /// Create a task in Domain \p d named \p s. ScopedTask(const Domain &d, const StringHandle &s) : _domain(d) { __itt_task_begin(d, __itt_null, __itt_null, s); } @@ -83,7 +83,7 @@ return *this; } - /// \brief Prematurely end this task. + /// Prematurely end this task. void end() { if (_domain) __itt_task_end(_domain); @@ -93,7 +93,7 @@ ~ScopedTask() { end(); } }; -/// \brief A specific point in time. Allows metadata to be associated. +/// A specific point in time. Allows metadata to be associated. class Marker { public: Marker(const Domain &d, const StringHandle &s) { Index: include/lld/Core/LinkingContext.h =================================================================== --- include/lld/Core/LinkingContext.h +++ include/lld/Core/LinkingContext.h @@ -31,7 +31,7 @@ class Node; class SharedLibraryFile; -/// \brief The LinkingContext class encapsulates "what and how" to link. +/// The LinkingContext class encapsulates "what and how" to link. /// /// The base class LinkingContext contains the options needed by core linking. /// Subclasses of LinkingContext have additional options needed by specific Index: include/lld/Core/PassManager.h =================================================================== --- include/lld/Core/PassManager.h +++ include/lld/Core/PassManager.h @@ -20,7 +20,7 @@ class SimpleFile; class Pass; -/// \brief Owns and runs a collection of passes. +/// Owns and runs a collection of passes. /// /// This class is currently just a container for passes and a way to run them. /// @@ -40,7 +40,7 @@ } private: - /// \brief Passes in the order they should run. + /// Passes in the order they should run. std::vector> _passes; }; } // end namespace lld Index: include/lld/Core/Reader.h =================================================================== --- include/lld/Core/Reader.h +++ include/lld/Core/Reader.h @@ -32,7 +32,7 @@ class LinkingContext; class MachOLinkingContext; -/// \brief An abstract class for reading object files, library files, and +/// An abstract class for reading object files, library files, and /// executable files. /// /// Each file format (e.g. mach-o, etc) has a concrete subclass of Reader. @@ -46,14 +46,14 @@ /// 2) the whole file content buffer if the above is not enough. virtual bool canParse(llvm::file_magic magic, MemoryBufferRef mb) const = 0; - /// \brief Parse a supplied buffer (already filled with the contents of a + /// Parse a supplied buffer (already filled with the contents of a /// file) and create a File object. /// The resulting File object takes ownership of the MemoryBuffer. virtual ErrorOr> loadFile(std::unique_ptr mb, const class Registry &) const = 0; }; -/// \brief An abstract class for handling alternate yaml representations +/// An abstract class for handling alternate yaml representations /// of object files. /// /// The YAML syntax allows "tags" which are used to specify the type of Index: include/lld/Core/Resolver.h =================================================================== --- include/lld/Core/Resolver.h +++ include/lld/Core/Resolver.h @@ -28,7 +28,7 @@ class Atom; class LinkingContext; -/// \brief The Resolver is responsible for merging all input object files +/// The Resolver is responsible for merging all input object files /// and producing a merged graph. class Resolver { public: @@ -50,7 +50,7 @@ // Handle a shared library file. llvm::Error handleSharedLibrary(File &); - /// @brief do work of merging and resolving and return list + /// do work of merging and resolving and return list bool resolve(); std::unique_ptr resultFile() { return std::move(_result); } @@ -61,7 +61,7 @@ bool undefinesAdded(int begin, int end); File *getFile(int &index); - /// \brief The main function that iterates over the files to resolve + /// The main function that iterates over the files to resolve bool resolveUndefines(); void updateReferences(); void deadStripOptimize(); Index: include/lld/Core/Simple.h =================================================================== --- include/lld/Core/Simple.h +++ include/lld/Core/Simple.h @@ -8,7 +8,7 @@ //===----------------------------------------------------------------------===// /// /// \file -/// \brief Provide simple implementations for Atoms and File. +/// Provide simple implementations for Atoms and File. /// //===----------------------------------------------------------------------===// Index: include/lld/Core/SymbolTable.h =================================================================== --- include/lld/Core/SymbolTable.h +++ include/lld/Core/SymbolTable.h @@ -27,35 +27,35 @@ class SharedLibraryAtom; class UndefinedAtom; -/// \brief The SymbolTable class is responsible for coalescing atoms. +/// The SymbolTable class is responsible for coalescing atoms. /// /// All atoms coalescable by-name or by-content should be added. /// The method replacement() can be used to find the replacement atom /// if an atom has been coalesced away. class SymbolTable { public: - /// @brief add atom to symbol table + /// add atom to symbol table bool add(const DefinedAtom &); - /// @brief add atom to symbol table + /// add atom to symbol table bool add(const UndefinedAtom &); - /// @brief add atom to symbol table + /// add atom to symbol table bool add(const SharedLibraryAtom &); - /// @brief add atom to symbol table + /// add atom to symbol table bool add(const AbsoluteAtom &); - /// @brief returns atom in symbol table for specified name (or nullptr) + /// returns atom in symbol table for specified name (or nullptr) const Atom *findByName(StringRef sym); - /// @brief returns vector of remaining UndefinedAtoms + /// returns vector of remaining UndefinedAtoms std::vector undefines(); - /// @brief if atom has been coalesced away, return replacement, else return atom + /// if atom has been coalesced away, return replacement, else return atom const Atom *replacement(const Atom *); - /// @brief if atom has been coalesced away, return true + /// if atom has been coalesced away, return true bool isCoalescedAway(const Atom *); private: Index: include/lld/Core/Writer.h =================================================================== --- include/lld/Core/Writer.h +++ include/lld/Core/Writer.h @@ -20,17 +20,17 @@ class LinkingContext; class MachOLinkingContext; -/// \brief The Writer is an abstract class for writing object files, shared +/// The Writer is an abstract class for writing object files, shared /// library files, and executable files. Each file format (e.g. mach-o, etc) /// has a concrete subclass of Writer. class Writer { public: virtual ~Writer(); - /// \brief Write a file from the supplied File object + /// Write a file from the supplied File object virtual llvm::Error writeFile(const File &linkedFile, StringRef path) = 0; - /// \brief This method is called by Core Linking to give the Writer a chance + /// This method is called by Core Linking to give the Writer a chance /// to add file format specific "files" to set of files to be linked. This is /// how file format specific atoms can be added to the link. virtual void createImplicitFiles(std::vector> &) {} Index: include/lld/ReaderWriter/MachOLinkingContext.h =================================================================== --- include/lld/ReaderWriter/MachOLinkingContext.h +++ include/lld/ReaderWriter/MachOLinkingContext.h @@ -201,7 +201,7 @@ uint32_t swiftVersion() const { return _swiftVersion; } - /// \brief Checks whether a given path on the filesystem exists. + /// Checks whether a given path on the filesystem exists. /// /// When running in -test_file_usage mode, this method consults an /// internally maintained list of files that exist (provided by -path_exists) @@ -211,7 +211,7 @@ /// Like pathExists() but only used on files - not directories. bool fileExists(StringRef path) const; - /// \brief Adds any library search paths derived from the given base, possibly + /// Adds any library search paths derived from the given base, possibly /// modified by -syslibroots. /// /// The set of paths added consists of approximately all syslibroot-prepended @@ -219,7 +219,7 @@ /// for whatever reason. With various edge-cases for compatibility. void addModifiedSearchDir(StringRef libPath, bool isSystemPath = false); - /// \brief Determine whether -lFoo can be resolve within the given path, and + /// Determine whether -lFoo can be resolve within the given path, and /// return the filename if so. /// /// The -lFoo option is documented to search for libFoo.dylib and libFoo.a in @@ -228,7 +228,7 @@ llvm::Optional searchDirForLibrary(StringRef path, StringRef libName) const; - /// \brief Iterates through all search path entries looking for libName (as + /// Iterates through all search path entries looking for libName (as /// specified by -lFoo). llvm::Optional searchLibrary(StringRef libName) const; @@ -236,11 +236,11 @@ /// the path with syslibroot. void addFrameworkSearchDir(StringRef fwPath, bool isSystemPath = false); - /// \brief Iterates through all framework directories looking for + /// Iterates through all framework directories looking for /// Foo.framework/Foo (when fwName = "Foo"). llvm::Optional findPathForFramework(StringRef fwName) const; - /// \brief The dylib's binary compatibility version, in the raw uint32 format. + /// The dylib's binary compatibility version, in the raw uint32 format. /// /// When building a dynamic library, this is the compatibility version that /// gets embedded into the result. Other Mach-O binaries that link against @@ -249,28 +249,28 @@ /// installed dynamic library. uint32_t compatibilityVersion() const { return _compatibilityVersion; } - /// \brief The dylib's current version, in the the raw uint32 format. + /// The dylib's current version, in the the raw uint32 format. /// /// When building a dynamic library, this is the current version that gets /// embedded into the result. Other Mach-O binaries that link against /// this library will store the compatibility version in its load command. uint32_t currentVersion() const { return _currentVersion; } - /// \brief The dylib's install name. + /// The dylib's install name. /// /// Binaries that link against the dylib will embed this path into the dylib /// load command. When loading the binaries at runtime, this is the location /// on disk that the loader will look for the dylib. StringRef installName() const { return _installName; } - /// \brief Whether or not the dylib has side effects during initialization. + /// Whether or not the dylib has side effects during initialization. /// /// Dylibs marked as being dead strippable provide the guarantee that loading /// the dylib has no side effects, allowing the linker to strip out the dylib /// when linking a binary that does not use any of its symbols. bool deadStrippableDylib() const { return _deadStrippableDylib; } - /// \brief Whether or not to use flat namespace. + /// Whether or not to use flat namespace. /// /// MachO usually uses a two-level namespace, where each external symbol /// referenced by the target is associated with the dylib that will provide @@ -282,7 +282,7 @@ /// loaded flat_namespace dylibs must be resolvable at build time. bool useFlatNamespace() const { return _flatNamespace; } - /// \brief How to handle undefined symbols. + /// How to handle undefined symbols. /// /// Options are: /// * error: Report an error and terminate linking. @@ -294,7 +294,7 @@ /// runtime. UndefinedMode undefinedMode() const { return _undefinedMode; } - /// \brief The path to the executable that will load the bundle at runtime. + /// The path to the executable that will load the bundle at runtime. /// /// When building a Mach-O bundle, this executable will be examined if there /// are undefined symbols after the main link phase. It is expected that this @@ -331,7 +331,7 @@ /// Add section alignment constraint on final layout. void addSectionAlignment(StringRef seg, StringRef sect, uint16_t align); - /// \brief Add a section based on a command-line sectcreate option. + /// Add a section based on a command-line sectcreate option. void addSectCreateSection(StringRef seg, StringRef sect, std::unique_ptr content); Index: lib/ReaderWriter/FileArchive.cpp =================================================================== --- lib/ReaderWriter/FileArchive.cpp +++ lib/ReaderWriter/FileArchive.cpp @@ -38,7 +38,7 @@ namespace { -/// \brief The FileArchive class represents an Archive Library file +/// The FileArchive class represents an Archive Library file class FileArchive : public lld::ArchiveLibraryFile { public: FileArchive(std::unique_ptr mb, const Registry ®, @@ -46,7 +46,7 @@ : ArchiveLibraryFile(path), _mb(std::shared_ptr(mb.release())), _registry(reg), _logLoading(logLoading) {} - /// \brief Check if any member of the archive contains an Atom with the + /// Check if any member of the archive contains an Atom with the /// specified name and return the File object for that member, or nullptr. File *find(StringRef name) override { auto member = _symbolMemberMap.find(name); @@ -77,7 +77,7 @@ return file; } - /// \brief parse each member + /// parse each member std::error_code parseAllMembers(std::vector> &result) override { if (std::error_code ec = parse()) Index: unittests/DriverTests/DarwinLdDriverTest.cpp =================================================================== --- unittests/DriverTests/DarwinLdDriverTest.cpp +++ unittests/DriverTests/DarwinLdDriverTest.cpp @@ -8,7 +8,7 @@ //===----------------------------------------------------------------------===// /// /// \file -/// \brief Darwin's ld driver tests. +/// Darwin's ld driver tests. /// //===----------------------------------------------------------------------===//