On Mon, 26 Mar 2018 19:59:09 -0700 Andre McCurdy <[email protected]> wrote:
> The syscall manpage is from the kernel manpages, not glibc. > http://man7.org/linux/man-pages/man2/syscall.2.html And yet! glibc is setting those registers in its code. Why? If that's a kernel thing and libc doesn't need to do it, why is libc doing it? If it's "useful background information", what exactly is it "useful" for? > Personally, I've read the manpage, I've read code in glibc and musl, > I've straced coreutils mv and various little test programs on 32bit > ARM plus 32bit and 64bit x86 and written a wrapper for libc syscall() > which either intercepts or passes through syscalls. Okay, you've read the code in glibc and understand it. So, why does the glibc code have that register-setting assembly, if that register-setting assembly doesn't matter? You've told me several times that we don't need to think about the register-setting code. So why did glibc include it? > Everything I've > found seems to be consistent to the point that I've satisfied myself > that I have a pretty clear understanding of how libc syscall() works, > including why ARM EABI sometimes needs an extra argument to offset > 64bit values - and when it matters for a wrapper and when it doesn't. > I don't think there's much more I can do. Okay, you say you understand why ARM EABI "sometimes" needs an argument to offset things. What are the circumstances? Is it specific to 32-bit targets? On a target with 64-bit pointers, would it apply also to 64-bit pointers, or is it exclusively for 64-bit integers? Because it seems to me that on a 64-bit target, renameat2() would in fact be passing a 64-bit object as the second argument. And if there's a reason that this doesn't count as a 64-bit argument passed after an odd number of 32-bit arguments, I'd like to know specifically what that reason is before I go relying on it to stay true forever. -s -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
