TPDE
Loading...
Searching...
No Matches
tpde::FunctionWriter< Derived > Class Template Reference

Helper class to write function text. More...

#include <FunctionWriter.hpp>

Inheritance diagram for tpde::FunctionWriter< Derived >:
tpde::FunctionWriterBase

Public Member Functions

Text Writing
void ensure_space (size_t size)
 Ensure that at least size bytes are available.
 
- Public Member Functions inherited from tpde::FunctionWriterBase
SecRef get_sec_ref () const
 Get the SecRef of the current section.
 
DataSection & get_section () const
 Get the current section.
 
void switch_section (DataSection &new_section)
 Switch section writer to new section; must be flushed.
 
size_t offset () const
 Get the current offset into the section.
 
size_t allocated_size () const
 Get the current allocated size of the section.
 
u8 * begin_ptr ()
 Pointer to beginning of section data.
 
u8 *& cur_ptr ()
 Modifiable pointer to current writing position of the section.
 
void reloc (SymRef sym, u32 type, u64 off, i64 addend=0)
 Record relocation at the given offset.
 
void remove_prologue_bytes (u32 start, u32 size)
 Remove bytes and adjust labels/relocations accordingly.
 
Label label_create ()
 Create a new unplaced label.
 
void label_place (Label label, u32 off)
 Place unplaced label at the specified offset inside the section.
 
void label_ref (Label label, u32 off, LabelFixupKind kind)
 Reference label at given offset inside the code section.
 
void except_add_call_site (u32 text_off, u32 len, Label landing_pad, bool is_cleanup)
 add an entry to the call-site table must be called in strictly increasing order wrt text_off
 
void except_add_cleanup_action ()
 Add a cleanup action to the action table MUST be the last one.
 
void except_add_action (bool first_action, SymRef type_sym)
 add an action to the action table An invalid SymRef signals a catch(...)
 
void eh_advance_raw (u64 size_units)
 Write CFA_advance_loc; size must be scaled by code alignment factor.
 
void eh_advance (u64 size)
 Write CFA_advance_loc with code alignment factor 1.
 

Additional Inherited Members

- Protected Member Functions inherited from tpde::FunctionWriterBase
JumpTable & alloc_jump_table (u32 size, Reg idx, Reg tmp)
 Allocate a jump table for the current location.
 
- Protected Attributes inherited from tpde::FunctionWriterBase
u32 func_begin
 Begin offset of the current function.
 
u32 reloc_begin
 Begin of relocations for current function.
 
u32 label_skew
 Offset to subtract from all label offsets.
 
util::SmallVector< u32 > label_offsets
 Label offsets into section, ~0u indicates unplaced label.
 
util::SmallVector< LabelFixup > label_fixups
 Fixups for labels placed after their first use, processed at function end.
 
u32 growth_size = 0x10000
 Growth size for more_space; adjusted exponentially after every grow.
 

Detailed Description

template<typename Derived>
class tpde::FunctionWriter< Derived >

Helper class to write function text.

Definition at line 312 of file FunctionWriter.hpp.


The documentation for this class was generated from the following file: