forked from OSchip/llvm-project
				
			
							parent
							
								
									9cc4b4e042
								
							
						
					
					
						commit
						01ba8b2f7b
					
				| 
						 | 
					@ -51,7 +51,6 @@ public:
 | 
				
			||||||
    kindHeaderObject,         ///< a file for file headers
 | 
					    kindHeaderObject,         ///< a file for file headers
 | 
				
			||||||
    kindEntryObject,          ///< a file for the entry
 | 
					    kindEntryObject,          ///< a file for the entry
 | 
				
			||||||
    kindUndefinedSymsObject,  ///< a file for undefined symbols
 | 
					    kindUndefinedSymsObject,  ///< a file for undefined symbols
 | 
				
			||||||
    kindAliasSymsObject,      ///< a file for alias symbols
 | 
					 | 
				
			||||||
    kindStubHelperObject,     ///< a file for stub helpers
 | 
					    kindStubHelperObject,     ///< a file for stub helpers
 | 
				
			||||||
    kindResolverMergedObject, ///< the resolver merged file.
 | 
					    kindResolverMergedObject, ///< the resolver merged file.
 | 
				
			||||||
    kindSectCreateObject,     ///< a sect create object file (.o)
 | 
					    kindSectCreateObject,     ///< a sect create object file (.o)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,9 +32,7 @@ class LinkingContext;
 | 
				
			||||||
/// and producing a merged graph.
 | 
					/// and producing a merged graph.
 | 
				
			||||||
class Resolver {
 | 
					class Resolver {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  Resolver(LinkingContext &ctx)
 | 
					  Resolver(LinkingContext &ctx) : _ctx(ctx), _result(new MergedFile()) {}
 | 
				
			||||||
      : _ctx(ctx), _symbolTable(), _result(new MergedFile()),
 | 
					 | 
				
			||||||
        _fileIndex(0) {}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // InputFiles::Handler methods
 | 
					  // InputFiles::Handler methods
 | 
				
			||||||
  void doDefinedAtom(const DefinedAtom&);
 | 
					  void doDefinedAtom(const DefinedAtom&);
 | 
				
			||||||
| 
						 | 
					@ -69,7 +67,6 @@ private:
 | 
				
			||||||
  void deadStripOptimize();
 | 
					  void deadStripOptimize();
 | 
				
			||||||
  bool checkUndefines();
 | 
					  bool checkUndefines();
 | 
				
			||||||
  void removeCoalescedAwayAtoms();
 | 
					  void removeCoalescedAwayAtoms();
 | 
				
			||||||
  void checkDylibSymbolCollisions();
 | 
					 | 
				
			||||||
  ErrorOr<bool> forEachUndefines(File &file, bool searchForOverrides,
 | 
					  ErrorOr<bool> forEachUndefines(File &file, bool searchForOverrides,
 | 
				
			||||||
                                 UndefCallback callback);
 | 
					                                 UndefCallback callback);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -94,7 +91,6 @@ private:
 | 
				
			||||||
  // --start-group and --end-group
 | 
					  // --start-group and --end-group
 | 
				
			||||||
  std::vector<File *> _files;
 | 
					  std::vector<File *> _files;
 | 
				
			||||||
  std::map<File *, bool> _newUndefinesAdded;
 | 
					  std::map<File *, bool> _newUndefinesAdded;
 | 
				
			||||||
  size_t _fileIndex;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // List of undefined symbols.
 | 
					  // List of undefined symbols.
 | 
				
			||||||
  std::vector<StringRef> _undefines;
 | 
					  std::vector<StringRef> _undefines;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "lld/Core/DefinedAtom.h"
 | 
					#include "lld/Core/DefinedAtom.h"
 | 
				
			||||||
#include "lld/Core/File.h"
 | 
					#include "lld/Core/File.h"
 | 
				
			||||||
#include "lld/Core/ArchiveLibraryFile.h"
 | 
					 | 
				
			||||||
#include "lld/Core/LinkingContext.h"
 | 
					#include "lld/Core/LinkingContext.h"
 | 
				
			||||||
#include "lld/Core/Reference.h"
 | 
					#include "lld/Core/Reference.h"
 | 
				
			||||||
#include "lld/Core/UndefinedAtom.h"
 | 
					#include "lld/Core/UndefinedAtom.h"
 | 
				
			||||||
| 
						 | 
					@ -81,48 +80,6 @@ private:
 | 
				
			||||||
  AtomVector<AbsoluteAtom> _absolute;
 | 
					  AtomVector<AbsoluteAtom> _absolute;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// \brief Archive library file that may be used as a virtual container
 | 
					 | 
				
			||||||
/// for symbols that should be added dynamically in response to
 | 
					 | 
				
			||||||
/// call to find() method.
 | 
					 | 
				
			||||||
class SimpleArchiveLibraryFile : public ArchiveLibraryFile {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
  SimpleArchiveLibraryFile(StringRef filename)
 | 
					 | 
				
			||||||
      : ArchiveLibraryFile(filename) {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const AtomVector<DefinedAtom> &defined() const override {
 | 
					 | 
				
			||||||
    return _definedAtoms;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const AtomVector<UndefinedAtom> &undefined() const override {
 | 
					 | 
				
			||||||
    return _undefinedAtoms;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const AtomVector<SharedLibraryAtom> &sharedLibrary() const override {
 | 
					 | 
				
			||||||
    return _sharedLibraryAtoms;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const AtomVector<AbsoluteAtom> &absolute() const override {
 | 
					 | 
				
			||||||
    return _absoluteAtoms;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  File *find(StringRef sym, bool dataSymbolOnly) override {
 | 
					 | 
				
			||||||
    // For descendants:
 | 
					 | 
				
			||||||
    // do some checks here and return dynamically generated files with atoms.
 | 
					 | 
				
			||||||
    return nullptr;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  std::error_code
 | 
					 | 
				
			||||||
  parseAllMembers(std::vector<std::unique_ptr<File>> &result) override {
 | 
					 | 
				
			||||||
    return std::error_code();
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
  AtomVector<DefinedAtom> _definedAtoms;
 | 
					 | 
				
			||||||
  AtomVector<UndefinedAtom> _undefinedAtoms;
 | 
					 | 
				
			||||||
  AtomVector<SharedLibraryAtom> _sharedLibraryAtoms;
 | 
					 | 
				
			||||||
  AtomVector<AbsoluteAtom> _absoluteAtoms;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class SimpleReference : public Reference {
 | 
					class SimpleReference : public Reference {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  SimpleReference(Reference::KindNamespace ns, Reference::KindArch arch,
 | 
					  SimpleReference(Reference::KindNamespace ns, Reference::KindArch arch,
 | 
				
			||||||
| 
						 | 
					@ -322,23 +279,6 @@ private:
 | 
				
			||||||
  StringRef _name;
 | 
					  StringRef _name;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SimpleAbsoluteAtom : public AbsoluteAtom {
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
  SimpleAbsoluteAtom(const File &f, StringRef name, Scope s, uint64_t value)
 | 
					 | 
				
			||||||
      : _file(f), _name(name), _scope(s), _value(value) {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  const File &file() const override { return _file; }
 | 
					 | 
				
			||||||
  StringRef name() const override { return _name; }
 | 
					 | 
				
			||||||
  uint64_t value() const override { return _value; }
 | 
					 | 
				
			||||||
  Scope scope() const override { return _scope; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
  const File &_file;
 | 
					 | 
				
			||||||
  StringRef _name;
 | 
					 | 
				
			||||||
  Scope _scope;
 | 
					 | 
				
			||||||
  uint64_t _value;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
} // end namespace lld
 | 
					} // end namespace lld
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -264,7 +264,6 @@ bool Resolver::resolveUndefines() {
 | 
				
			||||||
    case File::kindHeaderObject:
 | 
					    case File::kindHeaderObject:
 | 
				
			||||||
    case File::kindEntryObject:
 | 
					    case File::kindEntryObject:
 | 
				
			||||||
    case File::kindUndefinedSymsObject:
 | 
					    case File::kindUndefinedSymsObject:
 | 
				
			||||||
    case File::kindAliasSymsObject:
 | 
					 | 
				
			||||||
    case File::kindStubHelperObject:
 | 
					    case File::kindStubHelperObject:
 | 
				
			||||||
    case File::kindResolverMergedObject:
 | 
					    case File::kindResolverMergedObject:
 | 
				
			||||||
    case File::kindSectCreateObject: {
 | 
					    case File::kindSectCreateObject: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue