https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80115

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
%si is 16-bit register name, not 8-bit register name.  For that you need to use
16-bit operand, not 8-bit.
Another option is to use a modifier to force some other size.
I don't know what the stap note parser actually cares about, if it doesn't make
any difference between %al, %ax, %eax and grabs the argument size from
somewhere else, you might e.g.
#define _SDT_ARGTMPL(id) %k[id]
instead of %[id]
for defined(__i386__) and then you'll always get %eax, %esi, etc. regardless of
whether the argument is 8-bit, 16-bit, 32-bit or 64-bit.
Or you can use %w[id] to always get %ax, %si, etc. (shorter).

Reply via email to