[OE-core] pseudo: host user contamination
enrico.scholz at sigma-chemnitz.de
Tue Mar 27 16:26:05 UTC 2018
Seebs <seebs at seebs.net> writes:
>> >> Since the man page gave the ia64 example, I went and checked, and
>> >> it is indeed the case that calls other than syscall(2) will
>> >> clobber r10 after system calls,
>> I think you are misinterpreting the man-page. In "Architecture
>> calling conventions" it documents the calling convention into the
>> kernel. syscall(2) itself is an ordinary function which has to
>> follow the userspace ABI; after jumping into the kernel and setting
>> 'errno' in error case, it restores registers as needed.
> I don't think this is what it's talking about.
Perhaps we have different man pages but e.g.  mentions only registers
in the context of the kernel interface but not when entering/leaving
>> Some ABIs allow functions to clobber registers (they are not restored
>> after leaving the function and do not carry a return value); e.g. on
>> ARM, these are r0-r3 and r12. That's probably the case for r10 in
>> ia64 too.
> Maybe you missed the previous message where I pointed out that this
> behavior is, at least on MIPS, an explicit step taken by glibc's
> syscall implementation (and many other system calls).
When, then this is completely undocumented and a glibc-only thing.
Other implementations follow the behavior described in the man page
and do not set some magic registers on return.
I did not found the glibc syscall implementation for MIPS atm.
More information about the Openembedded-core