GCC Middle and Back End API Reference
|
Public Member Functions | |
asan_redzone_buffer (rtx shadow_mem, HOST_WIDE_INT prev_offset) | |
void | emit_redzone_byte (HOST_WIDE_INT offset, unsigned char value) |
void | flush_redzone_payload (void) |
Data Fields | |
auto_vec< unsigned char > | m_shadow_bytes |
Private Member Functions | |
void | flush_if_full (void) |
Private Attributes | |
rtx | m_shadow_mem |
HOST_WIDE_INT | m_prev_offset |
HOST_WIDE_INT | m_original_offset |
ASAN redzone buffer container that handles emission of shadow bytes.
|
inline |
void asan_redzone_buffer::emit_redzone_byte | ( | HOST_WIDE_INT | offset, |
unsigned char | value ) |
Emit VALUE shadow byte at a given OFFSET.
References adjust_address, ASAN_RED_ZONE_SIZE, ASAN_SHADOW_GRANULARITY, ASAN_SHADOW_SHIFT, flush_if_full(), flush_redzone_payload(), gcc_assert, i, m_prev_offset, m_shadow_bytes, m_shadow_mem, offset, and RZ_BUFFER_SIZE.
Referenced by asan_emit_stack_protection().
|
private |
Flush if the content of the buffer is full (equal to RZ_BUFFER_SIZE).
References flush_redzone_payload(), m_shadow_bytes, and RZ_BUFFER_SIZE.
Referenced by emit_redzone_byte().
void asan_redzone_buffer::flush_redzone_payload | ( | void | ) |
Emit RTX emission of the content of the buffer.
References adjust_address, ASAN_RED_ZONE_SIZE, dump_file, dump_flags, emit_move_insn(), gcc_assert, gen_int_mode(), i, m_original_offset, m_prev_offset, m_shadow_bytes, m_shadow_mem, PRId64, RZ_BUFFER_SIZE, and TDF_DETAILS.
Referenced by emit_redzone_byte(), and flush_if_full().
|
private |
Referenced by flush_redzone_payload().
|
private |
Referenced by emit_redzone_byte(), and flush_redzone_payload().
auto_vec<unsigned char> asan_redzone_buffer::m_shadow_bytes |
Referenced by asan_emit_stack_protection(), emit_redzone_byte(), flush_if_full(), and flush_redzone_payload().
|
private |
Referenced by emit_redzone_byte(), and flush_redzone_payload().