Speaking of wrapping the syscall and INTR_MSG_TRAP, I might need a
little help — is there a proper way to tell GCC that my inline
assembly needs a specific register as input _and_ clobbers it? In
Rust, this would be, for instance,

asm!("whatever", inout("rdi") msg => _)

but GCC doesn't like

asm volatile ("whatever" : : "D"(msg) : "rdi");

and it's explicitly documented to not work. I guess I could try either

void *clobber;
asm volatile ("whatever" : "=D"(clobber) : "D"(msg));
// Never use clobber again

or

void *tmp = msg;
asm volatile ("whatever" : "+D"(tmp));
// Never use tmp again

but I'm wondering if there's a proper way to do this. Any tips? If
not, any preference among the two above options?

Sergey

Reply via email to