mirror of
https://github.com/rui314/mold.git
synced 2024-09-21 18:08:01 +03:00
wip
This commit is contained in:
parent
acad56a4c7
commit
60d142102a
2
main.cc
2
main.cc
@ -65,7 +65,7 @@ static ObjectFile<E> *new_object_file(Context<E> &ctx, MemoryMappedFile<E> *mb,
|
||||
|
||||
template <typename E>
|
||||
static SharedFile<E> *new_shared_file(Context<E> &ctx, MemoryMappedFile<E> *mb) {
|
||||
SharedFile<E> *file = new SharedFile<E>(ctx, mb);
|
||||
SharedFile<E> *file = SharedFile<E>::create(ctx, mb);
|
||||
ctx.tg.run([file, &ctx]() { file->parse(ctx); });
|
||||
if (ctx.arg.trace)
|
||||
SyncOut(ctx) << "trace: " << *file;
|
||||
|
7
mold.h
7
mold.h
@ -915,7 +915,8 @@ private:
|
||||
template <typename E>
|
||||
class SharedFile : public InputFile<E> {
|
||||
public:
|
||||
SharedFile(Context<E> &ctx, MemoryMappedFile<E> *mb);
|
||||
static SharedFile<E> *create(Context<E> &ctx, MemoryMappedFile<E> *mb);
|
||||
|
||||
void parse(Context<E> &ctx);
|
||||
void resolve_symbols(Context<E> &ctx);
|
||||
std::vector<Symbol<E> *> find_aliases(Symbol<E> *sym);
|
||||
@ -927,6 +928,8 @@ public:
|
||||
std::vector<const ElfSym<E> *> elf_syms;
|
||||
|
||||
private:
|
||||
SharedFile(Context<E> &ctx, MemoryMappedFile<E> *mb);
|
||||
|
||||
std::string_view get_soname(Context<E> &ctx);
|
||||
void maybe_override_symbol(Symbol<E> &sym, const ElfSym<E> &esym);
|
||||
std::vector<std::string_view> read_verdef(Context<E> &ctx);
|
||||
@ -1299,7 +1302,7 @@ struct Context {
|
||||
FileCache<E, SharedFile<E>> dso_cache;
|
||||
|
||||
tbb::concurrent_vector<std::unique_ptr<ObjectFile<E>>> owning_objs;
|
||||
tbb::concurrent_vector<std::unique_ptr<ObjectFile<E>>> owning_dsos;
|
||||
tbb::concurrent_vector<std::unique_ptr<SharedFile<E>>> owning_dsos;
|
||||
tbb::concurrent_vector<std::unique_ptr<std::vector<u8>>> owning_bufs;
|
||||
|
||||
// Symbol auxiliary data
|
||||
|
@ -1110,6 +1110,14 @@ std::ostream &operator<<(std::ostream &out, const InputFile<E> &file) {
|
||||
return out;
|
||||
}
|
||||
|
||||
template <typename E>
|
||||
SharedFile<E> *
|
||||
SharedFile<E>::create(Context<E> &ctx, MemoryMappedFile<E> *mb) {
|
||||
SharedFile<E> *obj = new SharedFile(ctx, mb);
|
||||
ctx.owning_dsos.push_back(std::unique_ptr<SharedFile<E>>(obj));
|
||||
return obj;
|
||||
}
|
||||
|
||||
template <typename E>
|
||||
SharedFile<E>::SharedFile(Context<E> &ctx, MemoryMappedFile<E> *mb)
|
||||
: InputFile<E>(ctx, mb) {
|
||||
|
Loading…
Reference in New Issue
Block a user