16#ifndef LIEF_PE_EXCEPTION_INFO_H
17#define LIEF_PE_EXCEPTION_INFO_H
36 uint64_t size, uint64_t nb_scopes);
38 uint64_t size, uint64_t nb_scopes,
49 virtual std::unique_ptr<ExceptionInfo>
clone()
const = 0;
88 static_assert(std::is_base_of_v<ExceptionInfo, T>,
89 "Require ExceptionInfo inheritance");
90 if (T::classof(
this)) {
91 return static_cast<T*
>(
this);
102 void offset(uint64_t value) {
108 os << info.to_string();
113 ARCH arch_ = ARCH::UNKNOWN;
115 uint32_t offset_ = 0;
Class that is used to a read stream of data from different sources.
Definition BinaryStream.hpp:35
uint32_t rva_start() const
Function start address.
Definition ExceptionInfo.hpp:71
virtual std::string to_string() const =0
ExceptionInfo(const ExceptionInfo &)=default
ExceptionInfo(ARCH arch)
Definition ExceptionInfo.hpp:62
const T * as() const
Definition ExceptionInfo.hpp:97
T * as()
Helper to downcast an ExceptionInfo into a concrete implementation.
Definition ExceptionInfo.hpp:87
ExceptionInfo & operator=(ExceptionInfo &&)=default
ARCH
Arch discriminator for the subclasses.
Definition ExceptionInfo.hpp:52
ARCH arch() const
Target architecture of this exception.
Definition ExceptionInfo.hpp:66
virtual std::unique_ptr< ExceptionInfo > clone() const =0
static std::unique_ptr< ExceptionInfo > parse(Parser &ctx, BinaryStream &strm, uint64_t size, uint64_t nb_scopes, Header::MACHINE_TYPES arch)
ExceptionInfo(ExceptionInfo &&)=default
friend std::ostream & operator<<(std::ostream &os, const ExceptionInfo &info)
Definition ExceptionInfo.hpp:106
virtual ~ExceptionInfo()=default
ExceptionInfo & operator=(const ExceptionInfo &)=default
uint64_t offset() const
Offset in the binary where the raw exception information associated with this entry is defined.
Definition ExceptionInfo.hpp:77
ExceptionInfo(ARCH arch, uint64_t rva)
Definition ExceptionInfo.hpp:58
static std::unique_ptr< ExceptionInfo > parse(Parser &ctx, BinaryStream &strm, uint64_t size, uint64_t nb_scopes)
Main interface to parse PE binaries. In particular, the static Parser::parse functions should be used...
Definition PE/Parser.hpp:54
Namespace related to the LIEF's PE module.
Definition Abstract/Header.hpp:32
@ T
Definition AcceleratorCodes.hpp:97
LIEF namespace.
Definition Abstract/Binary.hpp:42
#define LIEF_API
Definition visibility.h:45