Skip to main content

luaur_code_gen/functions/
align_position.rs

1use crate::functions::writeu_8::writeu_8;
2
3const K_DWARF_ALIGN: usize = core::mem::size_of::<usize>();
4const DW_CFA_NOP: u8 = 0;
5
6pub unsafe fn align_position(start: *mut u8, mut pos: *mut u8) -> *mut u8 {
7    let size = (pos as usize).wrapping_sub(start as usize);
8    let pad = ((size + K_DWARF_ALIGN - 1) & !(K_DWARF_ALIGN - 1)) - size;
9
10    for _ in 0..pad {
11        pos = writeu_8(pos, DW_CFA_NOP);
12    }
13
14    pos
15}