LIEF: Library to Instrument Executable Formats
Version 0.17.0
Loading...
Searching...
No Matches
lief-install
x86_64
static
include
LIEF
COFF
BigObjHeader.hpp
Go to the documentation of this file.
1
/* Copyright 2017 - 2025 R. Thomas
2
* Copyright 2017 - 2025 Quarkslab
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
#ifndef LIEF_COFF_BIGOBJ_HEADER_H
17
#define LIEF_COFF_BIGOBJ_HEADER_H
18
#include <cstdint>
19
#include <array>
20
21
#include "
LIEF/COFF/Header.hpp
"
22
23
#include "
LIEF/visibility.h
"
24
#include "
LIEF/span.hpp
"
25
26
namespace
LIEF
{
27
namespace
COFF
{
28
class
LIEF_API
BigObjHeader
:
public
Header
{
35
public
:
36
static
constexpr
auto
UUID_SZ = 16;
37
BigObjHeader
() :
38
Header(KIND::BIGOBJ)
39
{}
40
41
static
std::unique_ptr<BigObjHeader>
create
(BinaryStream& stream);
42
43
BigObjHeader&
operator=
(
const
BigObjHeader&) =
default
;
44
BigObjHeader
(
const
BigObjHeader&) =
default
;
45
46
BigObjHeader&
operator=
(BigObjHeader&&) =
default
;
47
BigObjHeader
(BigObjHeader&&) =
default
;
48
49
std::unique_ptr<Header>
clone
()
const override
{
50
return
std::unique_ptr<Header>(
new
BigObjHeader(*
this
));
51
}
52
uint16_t
version
()
const
{
55
return
version_;
56
}
57
span<const uint8_t>
uuid
()
const
{
60
return
uuid_;
61
}
62
uint32_t
sizeof_data
()
const
{
65
return
sizeof_data_;
66
}
67
uint32_t
flags
()
const
{
70
return
flags_;
71
}
72
uint32_t
metadata_size
()
const
{
75
return
metadata_size_;
76
}
77
uint32_t
metadata_offset
()
const
{
80
return
metadata_offset_;
81
}
82
83
void
version
(uint16_t value) {
84
version_ = value;
85
}
86
87
void
sizeof_data
(uint32_t value) {
88
sizeof_data_ = value;
89
}
90
91
void
flags
(uint32_t value) {
92
flags_ = value;
93
}
94
95
void
metadata_size
(uint32_t value) {
96
metadata_size_ = value;
97
}
98
99
void
metadata_offset
(uint32_t value) {
100
metadata_offset_ = value;
101
}
102
103
static
bool
classof
(
const
Header* header) {
104
return
header->
kind
() == Header::KIND::BIGOBJ;
105
}
106
107
~BigObjHeader
()
override
=
default
;
108
109
std::string
to_string
()
const override
;
110
111
protected
:
112
uint16_t version_ = 0;
113
std::array<uint8_t, UUID_SZ> uuid_ = {};
114
115
uint32_t sizeof_data_ = 0;
116
uint32_t flags_ = 0;
117
uint32_t metadata_size_ = 0;
118
uint32_t metadata_offset_ = 0;
119
};
120
121
}
122
}
123
#endif
Header.hpp
LIEF::COFF::BigObjHeader
This class represents the header for a COFF object compiled with /bigobj support (i....
Definition
BigObjHeader.hpp:34
LIEF::COFF::BigObjHeader::metadata_size
uint32_t metadata_size() const
Size of CLR metadata.
Definition
BigObjHeader.hpp:74
LIEF::COFF::BigObjHeader::flags
void flags(uint32_t value)
Definition
BigObjHeader.hpp:91
LIEF::COFF::BigObjHeader::flags
uint32_t flags() const
1 means that it contains metadata
Definition
BigObjHeader.hpp:69
LIEF::COFF::BigObjHeader::create
static std::unique_ptr< BigObjHeader > create(BinaryStream &stream)
LIEF::COFF::BigObjHeader::sizeof_data
uint32_t sizeof_data() const
Size of data that follows the header.
Definition
BigObjHeader.hpp:64
LIEF::COFF::BigObjHeader::BigObjHeader
BigObjHeader()
Definition
BigObjHeader.hpp:37
LIEF::COFF::BigObjHeader::version
void version(uint16_t value)
Definition
BigObjHeader.hpp:83
LIEF::COFF::BigObjHeader::to_string
std::string to_string() const override
LIEF::COFF::BigObjHeader::clone
std::unique_ptr< Header > clone() const override
Definition
BigObjHeader.hpp:49
LIEF::COFF::BigObjHeader::sizeof_data
void sizeof_data(uint32_t value)
Definition
BigObjHeader.hpp:87
LIEF::COFF::BigObjHeader::metadata_size
void metadata_size(uint32_t value)
Definition
BigObjHeader.hpp:95
LIEF::COFF::BigObjHeader::classof
static bool classof(const Header *header)
Definition
BigObjHeader.hpp:103
LIEF::COFF::BigObjHeader::uuid
span< const uint8_t > uuid() const
Originally named ClassID, this uuid should match: {D1BAA1C7-BAEE-4ba9-AF20-FAF66AA4DCB8}
Definition
BigObjHeader.hpp:59
LIEF::COFF::BigObjHeader::metadata_offset
void metadata_offset(uint32_t value)
Definition
BigObjHeader.hpp:99
LIEF::COFF::BigObjHeader::operator=
BigObjHeader & operator=(BigObjHeader &&)=default
LIEF::COFF::BigObjHeader::operator=
BigObjHeader & operator=(const BigObjHeader &)=default
LIEF::COFF::BigObjHeader::BigObjHeader
BigObjHeader(BigObjHeader &&)=default
LIEF::COFF::BigObjHeader::BigObjHeader
BigObjHeader(const BigObjHeader &)=default
LIEF::COFF::BigObjHeader::metadata_offset
uint32_t metadata_offset() const
Offset of CLR metadata.
Definition
BigObjHeader.hpp:79
LIEF::COFF::BigObjHeader::~BigObjHeader
~BigObjHeader() override=default
LIEF::COFF::BigObjHeader::version
uint16_t version() const
The version of this header which must be >= 2.
Definition
BigObjHeader.hpp:54
LIEF::COFF::Header
Class that represents the COFF header. It is subclassed by LIEF::COFF::RegularHeader and LIEF::COFF::...
Definition
COFF/Header.hpp:33
LIEF::COFF::Header::kind
KIND kind() const
The type of this header: whether it is regular or using the /bigobj format.
Definition
COFF/Header.hpp:64
LIEF::COFF
Definition
AuxiliarySymbol.hpp:29
LIEF
LIEF namespace.
Definition
Abstract/Binary.hpp:39
span.hpp
visibility.h
LIEF_API
#define LIEF_API
Definition
visibility.h:41
Generated by
1.13.0