RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
Loading...
Searching...
No Matches
module_collector.h
1#ifndef MODULE_COLLECTOR_H
2#define MODULE_COLLECTOR_H
3
4#include <map>
5#include <memory>
6#include <set>
7#include <string>
8#include <vector>
9#include "symbol_definition.h"
10
11namespace Linker
12{
13 class Module;
14 class InputFormat;
15 class OutputFormat;
16
19 {
20 public:
26 void SetupOptions(char special_char, std::shared_ptr<OutputFormat> output_format);
27
28 std::shared_ptr<Module> CreateModule(std::shared_ptr<const InputFormat> input_format, std::string file_name = "");
29 private:
30 /* GNU assembler can use '$', NASM must use '?' */
31 char special_prefix_char = '$';
32 std::weak_ptr<OutputFormat> output_format;
33
34 public:
36 {
38 std::weak_ptr<Module> module;
39 };
40 std::vector<std::shared_ptr<Module>> modules;
41 std::set<std::string> required_symbols;
42 std::map<std::string, definition> symbol_definitions;
43
44 void AddModule(std::shared_ptr<Module> module, bool is_library = false);
45 void AddLibraryModule(std::shared_ptr<Module> module);
46 void CombineModulesInto(Module& output_module);
47
48 private:
52 void IncludeModule(std::shared_ptr<Module> module);
53 };
54}
55
56#endif /* MODULE_COLLECTOR_H */
Helper class that collects object files and libraries, and includes library objects for required symb...
Definition module_collector.h:19
void SetupOptions(char special_char, std::shared_ptr< OutputFormat > output_format)
Initializes the reader for linking purposes.
Definition module_collector.cc:8
Encodes an object module file as a collection of sections, symbols and relocations.
Definition module.h:24
binding_type
Definition symbol_definition.h:20
Definition module_collector.h:36