On Jan 9, 2008, at 6:57 AM, Nuno Lopes wrote: >>>> >>>> Yes, I agree. It is quite simple and really useful (it can save a >>>> few >>>> crashes and potential security bugs). I now need to port it to the >>>> liveness >>>> analyzer to get info about unititalized variables. >>>> My initial idea was to extend this to user-space (I even sent a >>>> proposal to >>>> the gcc mailing list some time ago). >>> >>> One random and maybe interesting thought: the linux kernel people >>> are >>> marking pointers as user or kernel and using their 'sparse' tool to >>> flag semantic violations. Instead of adding special support to >>> clang >>> to handle something like this, I wonder if Christopher's alternate >>> address space work could be used to handle this... >> >> Interesting possibility! If this is something you're interested in >> I'll try to get my address spaces clang work committed sooner rather >> than later. >> >> Another use of these types of pointer attributes is Microsoft's >> __ptr32/__ptr64, though I don't think that's so much for analysis as >> pure pointer hackery. > > > Uhm I wonder how this relates with the varargs function checks I was > talking > about.. As you probably know gcc supports the printf checks through an > __attribute__, and I don't know how the address spaces thing could > be used > to parse the format string and so on. (please enlighten me if I'm > wrong!).
Hi Nuno, I think there may be a misunderstanding by what you mean by "extend this to user-space." I agree that the vararg checking and the address space qualifiers are not the same exact topic, although the latter could be used to augment the former. Not everyone has looked at your code, so they may not even be aware of what kinds of problems you were looking for in the use of the PHP interpreter API varargs functions. My understanding you were looking at internal consistency within the interpreter codebase of how these functions were used; from this perspective, I'm not certain what you mean by "user-space." That term is often overloaded; to an OS person the world is often divided into the "kernel" and "user" address spaces, and user-space pointers should never be directly dereferenced within the kernel (this can happen when arguments passed from system calls, etc., are not properly handled in the kernel). My understanding (which I could be wrong) is that this is a completely different concept from what you mean by extending the checking to user- space. If you could clarify a little more about what you mean that would be helpful. I'm also not really clear by what you mean by "porting" it (the varargs checker) to the liveness/uninitialized analyses. Ted _______________________________________________ cfe-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
