16#ifndef LIEF_COFF_PARSER_H
17#define LIEF_COFF_PARSER_H
39 static LIEF_API std::unique_ptr<Binary>
40 parse(std::unique_ptr<BinaryStream> stream,
44 static std::unique_ptr<Binary>
49 std::unique_ptr<VectorStream>(
new VectorStream(std::move(*strm))), config
60 friend bool operator<(
const SymSec& lhs,
const SymSec& rhs) {
61 return lhs.sec_idx < rhs.sec_idx;
64 friend bool operator==(
const SymSec& lhs,
const SymSec& rhs) {
65 return lhs.sec_idx == rhs.sec_idx && lhs.symbol == rhs.symbol;
68 friend bool operator!=(
const SymSec& lhs,
const SymSec& rhs) {
85 Parser(std::unique_ptr<BinaryStream> stream,
const ParserConfig& config,
87 stream_(
std::move(stream)),
99 std::unique_ptr<BinaryStream> stream_;
100 std::unique_ptr<Binary> bin_;
103 std::map<uint32_t, size_t> memoize_coff_str_;
104 std::map<size_t, Symbol*> symbol_idx_;
Class that represents a COFF Binary.
Definition COFF/Binary.hpp:44
Class used to configure the COFF parser.
Definition COFF/ParserConfig.hpp:24
static const ParserConfig & default_conf()
Definition COFF/ParserConfig.hpp:26
static std::unique_ptr< Binary > parse(std::unique_ptr< BinaryStream > stream, const ParserConfig &config=ParserConfig::default_conf())
Parse the COFF binary referenced by the stream argument with the given config.
std::vector< SymSec > SymSecMap
<=> std::unordered_multimap<section index, Symbol*>
Definition COFF/Parser.hpp:74
static std::unique_ptr< Binary > parse(const std::string &file, const ParserConfig &config=ParserConfig::default_conf())
Parse the COFF binary pointed by the file argument with the given config.
Definition COFF/Parser.hpp:45
This class represents a COFF section.
Definition COFF/Section.hpp:39
This class represents a string located in the COFF string table.
Definition String.hpp:34
This class represents a COFF symbol.
Definition COFF/Symbol.hpp:35
Definition VectorStream.hpp:29
static result< VectorStream > from_file(const std::string &file)
Opaque structure that is used by LIEF to avoid writing result<void> f(...). Instead,...
Definition errors.hpp:114
#define LIEF_MAYBE_UNUSED
Definition compiler_attributes.hpp:61
Definition AuxiliarySymbol.hpp:29
LIEF namespace.
Definition Abstract/Binary.hpp:40
#define LIEF_API
Definition visibility.h:43
#define LIEF_LOCAL
Definition visibility.h:44