34 std::vector<std::shared_ptr<Section>>
sections;
84 void Append(std::shared_ptr<Section> section);
88 offset_t
WriteFile(std::ostream& out, offset_t size, offset_t offset = 0)
const;
92 offset_t
WriteFile(std::ostream& out)
const;
96 offset_t
WriteFile(
Writer& wr, offset_t count, offset_t offset = 0)
const override;
102 size_t ReadData(
size_t bytes, offset_t offset,
void * buffer)
const override;
134 void ShiftAddress(int64_t amount);
141 std::shared_ptr<Segment> shared_from_this();
144 std::ostream& operator<<(std::ostream& out,
const Segment& segment);
A class representing a sequence of sections that must be written to the output file as a group.
Definition segment.h:25
std::string name
The name of the segment.
Definition segment.h:30
void Append(std::shared_ptr< Section > section)
Appends section to segment.
Definition segment.cc:41
offset_t zero_fill
Extra zero filled space following filled data.
Definition segment.h:56
offset_t GetEndAddress()
Returns end address (GetStartAddress() + TotalSize())
Definition segment.cc:179
void AlignEndAddress(offset_t align)
Aligns the end of the segment.
Definition segment.cc:211
offset_t base_address
Address where segment starts.
Definition segment.h:38
size_t ReadData(size_t bytes, offset_t offset, void *buffer) const override
Attempts to fill a buffer with data.
Definition segment.cc:134
offset_t WriteFile(std::ostream &out, offset_t size, offset_t offset=0) const
Writes data of non-zero filled sections.
Definition segment.cc:87
std::vector< std::shared_ptr< Section > > sections
Sequence of sections belonging to the segment.
Definition segment.h:34
void RealignEnd(offset_t align)
Aligns end of segment by increasing size of last section.
Definition segment.cc:27
void Fill()
Fills zero filled sections with zero data, making them non-zero filled in the sense that they have to...
Definition segment.cc:13
offset_t data_size
Cached value of the non-filled data for the entire segment.
Definition segment.h:49
offset_t optional_extra
Optional extra space after zero filled data.
Definition segment.h:60
offset_t ImageSize() const override
Retrieves size of all data in segment, as present in the binary image.
Definition segment.cc:162
void SetStartAddress(offset_t address)
Forcibly resets starting address of segment.
Definition segment.cc:234
offset_t TotalSize()
Retrieves total size of segment.
Definition segment.cc:157
bool IsMissing()
Segment that contains neither non zero filled, nor zero filled, nor optional extra data.
Definition segment.cc:8
void SetEndAddress(offset_t address)
Increases final section to end on specified address.
Definition segment.cc:184
offset_t GetStartAddress()
Returns starting address (base_address)
Definition segment.cc:174
offset_t align
Alignment requirements of segment.
Definition segment.h:42
A helper class, encapsulating functionality needed to export binary data.
Definition writer.h:15