[OE-core] pseudo: host user contamination
Seebs
seebs at seebs.net
Tue Mar 27 04:41:08 UTC 2018
On Mon, 26 Mar 2018 19:59:09 -0700
Andre McCurdy <armccurdy at gmail.com> 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
More information about the Openembedded-core
mailing list