<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 4, 2013 at 2:47 PM, Aaron Ballman <span dir="ltr"><<a href="mailto:aaron@aaronballman.com" target="_blank">aaron@aaronballman.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Thu, Jul 4, 2013 at 9:31 AM, David Cournapeau <<a href="mailto:davidc@enthought.com">davidc@enthought.com</a>> wrote:<br>

> Hi,<br>
><br>
> This simple patch fixes ssize_t definition (that was defined as being 4<br>
> bytes on windows 64), fixes both cmake and configure build (I only tested<br>
> cmake build though).<br>
><br>
> This patch allowed me to build llvmpy on windows 64 bits (python defines its<br>
> own ssize_t, that conflicted with the wrongly defined one in llvm headers).<br>
><br>
> I was not sure how to submit a patch, let me know if I need to do it<br>
> differently,<br>
<br>
</div>The patch generally looks good to me, but:<br>
<br>
> From b4929b4a19969b391048d2c74b2e8b2401c83109 Mon Sep 17 00:00:00 2001<br>
> From: David Cournapeau <<a href="mailto:cournape@gmail.com">cournape@gmail.com</a>><br>
> Date: Thu, 4 Jul 2013 13:43:04 +0100<br>
> Subject: [PATCH] BUG: fix ssize_t definition on windows.<br>
><br>
> ssize_t must be big enough to address a pointer, so it needs to be 64<br>
> bits on 64 bits.<br>
> ---<br>
>  include/llvm/Support/DataTypes.h.cmake | 6 +++++-<br>
>  include/llvm/Support/<a href="http://DataTypes.h.in" target="_blank">DataTypes.h.in</a>    | 7 ++++++-<br>
>  2 files changed, 11 insertions(+), 2 deletions(-)<br>
><br>
> diff --git a/include/llvm/Support/DataTypes.h.cmake b/include/llvm/Support/DataTypes.h.cmake<br>
> index 7484abd..f52b1d6 100644<br>
> --- a/include/llvm/Support/DataTypes.h.cmake<br>
> +++ b/include/llvm/Support/DataTypes.h.cmake<br>
> @@ -101,7 +101,11 @@ typedef short int16_t;<br>
>  typedef unsigned short uint16_t;<br>
>  typedef signed char int8_t;<br>
>  typedef unsigned char uint8_t;<br>
> -typedef signed int ssize_t;<br>
> +#if defined(_WIN64)<br>
> + typedef __int64 ssize_t;<br>
> +#else<br>
> +  typedef long ssize_t;<br>
> +#endif<br>
<br>
Why the change from signed int to long?<br></blockquote><div><br></div><div style>Mostly to be consistent with SSIZE_T: <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx#SSIZE_T">http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx#SSIZE_T</a></div>
<div style><br></div><div style>long vs int on windows only matters for 'weird' architectures that are obsolete, I guess, so that's that argument is mostly red herring, and int would obviously work as well.</div>
<div style><br></div><div style>David</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
>  #ifndef INT8_MAX<br>
>  # define INT8_MAX 127<br>
>  #endif<br>
> diff --git a/include/llvm/Support/<a href="http://DataTypes.h.in" target="_blank">DataTypes.h.in</a> b/include/llvm/Support/<a href="http://DataTypes.h.in" target="_blank">DataTypes.h.in</a><br>
> index b9fb48a..6acd679 100644<br>
> --- a/include/llvm/Support/<a href="http://DataTypes.h.in" target="_blank">DataTypes.h.in</a><br>
> +++ b/include/llvm/Support/<a href="http://DataTypes.h.in" target="_blank">DataTypes.h.in</a><br>
> @@ -98,7 +98,12 @@ typedef short int16_t;<br>
>  typedef unsigned short uint16_t;<br>
>  typedef signed char int8_t;<br>
>  typedef unsigned char uint8_t;<br>
> -typedef signed int ssize_t;<br>
> +#if defined(_WIN64)<br>
> + typedef __int64 ssize_t;<br>
> +#else<br>
> +  typedef long ssize_t;<br>
> +#endif<br>
<br>
Here as well.<br>
<span class=""><font color="#888888"><br>
~Aaron<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>blog: <a href="http://cournape.wordpress.com" target="_blank">http://cournape.wordpress.com</a><div>code: <a href="https://github.com/cournape" target="_blank">https://github.com/cournape</a></div>
<div>twitter: @cournape</div>
</div></div>