[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: [tor-dev] building from source in a 64-bit windows environment..
On 2013-05-17 10:07 PM, not me wrote:
Hi,
It seems fairly self-evident that tor hasn't been build for 64-bit
windows and questionable whether it's ever been built in an
environment that doesn't utilize mingw. There are literally hundreds
of thousands of warnings about integer truncation, at least some of
which seem somewhat problematic (64-bit pointer being stored in a
32-bit integer (why?! why?!)), a small amount of signed/unsigned
comparisons or sign extensions, and a bunch of calls to functions
without including the proper header files or using the correct
function name ('open()' vs '_open()' without including io.h) and so
on.
This of course is ignoring all the calls to
str{,n}cpy/{v,}s{,n}printf/etc and posix function names long since
deprecated (fileno() vs _fileno()) and so on. Errors relating to MSVC
finally including a stdint header (cstdint) and typedef's for intptr_t
not producing the right size primitive, etc.
Please understand that we can turn every single one of these complaints
on its head and make it a failing of Windows:
* Win64 is the *only* flat-memory-space ABI ever promulgated in
which pointers cannot safely be converted to 'unsigned long'
and back without loss of information. This is a willful
violation of requirements in C89 and is IMNSHO sufficient
justification to refuse to port to this platform, all by itself.
* The POSIX functions 'open', 'close', 'fcntl', etc are not deprecated
and do not have underscores in their names. That Windows provides
headers that *purport* to provide a subset of POSIX functionality,
but with all the symbols renamed (and claiming that the renames were
necessary for C89 conformance, which is not true) can only be
interpreted as a deliberate snub to people attempting to write
code which runs on both Windows and Unix systems. It would have
been more honest not to provide these functions at all.
* The "security enhanced" functions that I suspect you think we should
be using are not actually a security enhancement over proper use of
functions that already existed. In fact, most of the _s functions are
just new, less-portable names for existing functions, sometimes with
gratuitous and inconvenient interface changes on top. For instance,
snprintf is secure when used correctly, and snprintf_s provides no
additional benefit whatsoever. I will grant you that strcpy is easy
to misuse, but I expect that if you check you will find that in
*this* codebase it is used safely.
Now, I don't mean to discourage you by saying all that; I only want you
to understand why the Windows port is not our favorite thing to hack on
ourselves. We probably *would* take patches to allow Tor to build and
operate correctly using current MSVC. I am not sure whether we would
take patches to allow Tor to build as a Win64 program; it depends how
invasive they are and whether it would make life harder for people
maintaining other platforms.
It is not clear to me why you need Tor to be 64-bit. It runs as a
separate process and acts as a local network proxy. It should be able
to do that just fine for 64-bit processes while continuing to be 32-bit
itself. Please clarify.
zw
_______________________________________________
tor-dev mailing list
tor-dev@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev