unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
@ 2008-08-14 16:57 ` Francis Litterio
  2008-08-14 19:24   ` Eli Zaretskii
                     ` (3 more replies)
  0 siblings, 4 replies; 13+ messages in thread
From: Francis Litterio @ 2008-08-14 16:57 UTC (permalink / raw)
  To: bug-gnu-emacs

When building CVS Emacs on Windows XP SP2 using Visual Studio 6.0, the
following patch is needed to prevent the compiler from displaying an
error about unsigned __int64 not being convertable to double.
--
Fran


--- w32.c~	2008-08-11 13:51:58.372421800 -0400
+++ w32.c	2008-08-14 12:54:29.192936600 -0400
@@ -3817,7 +3817,7 @@
                  attrs);
 
   if (global_memory_status_ex (&memstex))
-    totphys = memstex.ullTotalPhys / 1024.0;
+    totphys = (signed __int64)memstex.ullTotalPhys / 1024.0;
   else if (global_memory_status (&memst))
     totphys = memst.dwTotalPhys / 1024.0;
 







^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-14 16:57 ` bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2 Francis Litterio
@ 2008-08-14 19:24   ` Eli Zaretskii
  2008-08-14 19:54   ` Stefan Monnier
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 13+ messages in thread
From: Eli Zaretskii @ 2008-08-14 19:24 UTC (permalink / raw)
  To: Francis Litterio, 720; +Cc: bug-gnu-emacs

> Date: Thu, 14 Aug 2008 12:57:56 -0400
> From: Francis Litterio <flitterio@gmail.com>
> Cc: 
> 
> When building CVS Emacs on Windows XP SP2 using Visual Studio 6.0, the
> following patch is needed to prevent the compiler from displaying an
> error about unsigned __int64 not being convertable to double.

Thank you for your report.  Can you show the error text?

> -    totphys = memstex.ullTotalPhys / 1024.0;
> +    totphys = (signed __int64)memstex.ullTotalPhys / 1024.0;

Does it help to use 1024.0L here instead of just 1024.0?






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-14 16:57 ` bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2 Francis Litterio
  2008-08-14 19:24   ` Eli Zaretskii
@ 2008-08-14 19:54   ` Stefan Monnier
  2008-08-14 20:20     ` Eli Zaretskii
       [not found]   ` <mailman.16704.1218743250.18990.bug-gnu-emacs@gnu.org>
  2008-08-15 17:45   ` bug#720: marked as done (Patch to fix CVS Emacs compilation error on Windows XP SP2.) Emacs bug Tracking System
  3 siblings, 1 reply; 13+ messages in thread
From: Stefan Monnier @ 2008-08-14 19:54 UTC (permalink / raw)
  To: Francis Litterio; +Cc: bug-gnu-emacs, 720

> When building CVS Emacs on Windows XP SP2 using Visual Studio 6.0, the
> following patch is needed to prevent the compiler from displaying an
> error about unsigned __int64 not being convertable to double.

Wouldn't it be better to cast to (double) ?


        Stefan







^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
       [not found]   ` <mailman.16704.1218743250.18990.bug-gnu-emacs@gnu.org>
@ 2008-08-14 20:15     ` Francis Litterio
  2008-08-15  8:22       ` Eli Zaretskii
       [not found]       ` <mailman.16768.1218790062.18990.bug-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 13+ messages in thread
From: Francis Litterio @ 2008-08-14 20:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bug-gnu-emacs, 720

Eli Zaretskii wrote:

>> From: Francis Litterio
>> 
>> When building CVS Emacs on Windows XP SP2 using Visual Studio 6.0, the
>> following patch is needed to prevent the compiler from displaying an
>> error about unsigned __int64 not being convertable to double.
>
> Thank you for your report.  Can you show the error text?

Sorry for omitting that.  The error was:

	w32.c(3820) : error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64

>> -    totphys = memstex.ullTotalPhys / 1024.0;
>> +    totphys = (signed __int64)memstex.ullTotalPhys / 1024.0;
>
> Does it help to use 1024.0L here instead of just 1024.0?

Nope.  Same error.

Else-thread, Stefan Monnier asked:

> Wouldn't it be better to cast to (double) ?

That doesn't help either.  Each of these variations causes the same error:

	    totphys = (double)(memstex.ullTotalPhys / 1024.0);

	    totphys = memstex.ullTotalPhys / (double)1024.0;

	    totphys = (double)memstex.ullTotalPhys / 1024.0L;

	    totphys = (double)memstex.ullTotalPhys / (double)1024.0;
--
Fran






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-14 19:54   ` Stefan Monnier
@ 2008-08-14 20:20     ` Eli Zaretskii
  2008-08-15 19:31       ` Stefan Monnier
  0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2008-08-14 20:20 UTC (permalink / raw)
  To: Stefan Monnier, 720; +Cc: bug-gnu-emacs, flitterio

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Thu, 14 Aug 2008 15:54:44 -0400
> Cc: bug-gnu-emacs@gnu.org, 720@emacsbugs.donarmstrong.com
> 
> > When building CVS Emacs on Windows XP SP2 using Visual Studio 6.0, the
> > following patch is needed to prevent the compiler from displaying an
> > error about unsigned __int64 not being convertable to double.
> 
> Wouldn't it be better to cast to (double) ?

Wouldn't that be doing the same mistake?  The compiler probably has a
point: an unsigned 64-bit number has more bits than a simple double
can handle.






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-14 20:15     ` Francis Litterio
@ 2008-08-15  8:22       ` Eli Zaretskii
  2008-08-15 19:34         ` Stefan Monnier
       [not found]       ` <mailman.16768.1218790062.18990.bug-gnu-emacs@gnu.org>
  1 sibling, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2008-08-15  8:22 UTC (permalink / raw)
  To: Francis Litterio; +Cc: bug-gnu-emacs, 720

> Cc: 720@emacsbugs.donarmstrong.com, bug-gnu-emacs@gnu.org,
>         Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Thu, 14 Aug 2008 16:15:04 -0400
> From: Francis Litterio <flitterio@gmail.com>
> 
> 	w32.c(3820) : error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64

"Not implemented"?  I'm not sure we want to support such a deficient
compiler.  How about this:

  DWORD tot_hi = memstex.ullTotalPhys >> 32;
  DWORD tot_md = (memstex.ullTotalPhys & 0x00000000ffffffffLL) >> 10;
  DWORD tot_lo = memstex.ullTotalPhys % 1024LL;
  totphys = tot_hi * 4194304.0 + tot_md + tot_lo / 1024.0;

Does this work?






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
       [not found]       ` <mailman.16768.1218790062.18990.bug-gnu-emacs@gnu.org>
@ 2008-08-15 13:22         ` Francis Litterio
  2008-08-15 16:15           ` Eli Zaretskii
  0 siblings, 1 reply; 13+ messages in thread
From: Francis Litterio @ 2008-08-15 13:22 UTC (permalink / raw)
  To: Eli Zaretskii, 720

Eli Zaretskii wrote:

>> From: Francis Litterio
>> 
>> 	w32.c(3820) : error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64
>
> "Not implemented"?  I'm not sure we want to support such a deficient
> compiler.

I would happily use a newer compiler.  The file emacs/nt/INSTALL says
this:

   To compile Emacs, you will need either Microsoft Visual C++ 2.0, or
   later up to 7.0, and nmake

I didn't realize that I could use a version of VC++ newer than 6.0.  I
would be happy to abandon 6.0 for building Emacs on Windows.  Is VC++
7.0 the compiler that comes with Visual Studio 2003?

What compiler do the Emacs developers use to build on Windows?

> How about this:
>
>   DWORD tot_hi = memstex.ullTotalPhys >> 32;
>   DWORD tot_md = (memstex.ullTotalPhys & 0x00000000ffffffffLL) >> 10;
>   DWORD tot_lo = memstex.ullTotalPhys % 1024LL;
>   totphys = tot_hi * 4194304.0 + tot_md + tot_lo / 1024.0;
>
> Does this work?

Nope:

  w32.c(3823) : error C2059: syntax error : 'bad suffix on number'
  w32.c(3823) : error C2146: syntax error : missing ')' before identifier 'L'
  w32.c(3823) : error C2059: syntax error : ')'
  w32.c(3824) : error C2059: syntax error : 'bad suffix on number'
  w32.c(3824) : error C2146: syntax error : missing ';' before identifier 'L'
  w32.c(3824) : error C2065: 'L' : undeclared identifier

Here's the relevant code with line numbers:

  3819	  if (global_memory_status_ex (&memstex))
  3820	#if 1
  3821	  {
  3822	    DWORD tot_hi = memstex.ullTotalPhys >> 32;
  3823	    DWORD tot_md = (memstex.ullTotalPhys & 0x00000000ffffffffLL) >> 10;
  3824	    DWORD tot_lo = memstex.ullTotalPhys % 1024LL;
  3825	    totphys = tot_hi * 4194304.0 + tot_md + tot_lo / 1024.0;
  3826	  }
  3827	#else
  3828	    totphys = (signed __int64)memstex.ullTotalPhys / 1024.0;
  3829	#endif

--
Fran






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-15 13:22         ` Francis Litterio
@ 2008-08-15 16:15           ` Eli Zaretskii
  2008-08-15 17:11             ` Fran Litterio
  0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2008-08-15 16:15 UTC (permalink / raw)
  To: Francis Litterio; +Cc: 720

> Date: Fri, 15 Aug 2008 09:22:31 -0400
> From: Francis Litterio <flitterio@gmail.com>
> 
> Eli Zaretskii wrote:
> 
> >> From: Francis Litterio
> >> 
> >> 	w32.c(3820) : error C2520: conversion from unsigned __int64 to double not implemented, use signed __int64
> >
> > "Not implemented"?  I'm not sure we want to support such a deficient
> > compiler.
> 
> I would happily use a newer compiler.  The file emacs/nt/INSTALL says
> this:
> 
>    To compile Emacs, you will need either Microsoft Visual C++ 2.0, or
>    later up to 7.0, and nmake
> 
> I didn't realize that I could use a version of VC++ newer than 6.0.  I
> would be happy to abandon 6.0 for building Emacs on Windows.  Is VC++
> 7.0 the compiler that comes with Visual Studio 2003?

Yes.

> What compiler do the Emacs developers use to build on Windows?

The MinGW port of GCC.

> > How about this:
> >
> >   DWORD tot_hi = memstex.ullTotalPhys >> 32;
> >   DWORD tot_md = (memstex.ullTotalPhys & 0x00000000ffffffffLL) >> 10;
> >   DWORD tot_lo = memstex.ullTotalPhys % 1024LL;
> >   totphys = tot_hi * 4194304.0 + tot_md + tot_lo / 1024.0;
> >
> > Does this work?
> 
> Nope:
> 
>   w32.c(3823) : error C2059: syntax error : 'bad suffix on number'
>   w32.c(3823) : error C2146: syntax error : missing ')' before identifier 'L'
>   w32.c(3823) : error C2059: syntax error : ')'
>   w32.c(3824) : error C2059: syntax error : 'bad suffix on number'
>   w32.c(3824) : error C2146: syntax error : missing ';' before identifier 'L'
>   w32.c(3824) : error C2065: 'L' : undeclared identifier

Does it mean that the LL suffix is not supported in VS 6?  Can you try
the same without the 2 LL suffixes?






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-15 16:15           ` Eli Zaretskii
@ 2008-08-15 17:11             ` Fran Litterio
  2008-08-15 17:37               ` Eli Zaretskii
  0 siblings, 1 reply; 13+ messages in thread
From: Fran Litterio @ 2008-08-15 17:11 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 720

[-- Attachment #1: Type: text/plain, Size: 1134 bytes --]

On Fri, Aug 15, 2008 at 12:15 PM, Eli Zaretskii <eliz@gnu.org> wrote:

> > > How about this:
> > >
> > >   DWORD tot_hi = memstex.ullTotalPhys >> 32;
> > >   DWORD tot_md = (memstex.ullTotalPhys & 0x00000000ffffffffLL) >> 10;
> > >   DWORD tot_lo = memstex.ullTotalPhys % 1024LL;
> > >   totphys = tot_hi * 4194304.0 + tot_md + tot_lo / 1024.0;
> > >
> > > Does this work?
> >
> > Nope:
> >
> >   w32.c(3823) : error C2059: syntax error : 'bad suffix on number'
> >   w32.c(3823) : error C2146: syntax error : missing ')' before identifier
> 'L'
> >   w32.c(3823) : error C2059: syntax error : ')'
> >   w32.c(3824) : error C2059: syntax error : 'bad suffix on number'
> >   w32.c(3824) : error C2146: syntax error : missing ';' before identifier
> 'L'
> >   w32.c(3824) : error C2065: 'L' : undeclared identifier
>
> Does it mean that the LL suffix is not supported in VS 6?


I think so.


> Can you try
> the same without the 2 LL suffixes?
>

Yes, omitting the LL suffixes compiles with VS 6, though with several of
these warnings:

   warning C4244: '=' : conversion from 'long double ' to 'long ', possible
loss of data
--
Fran

[-- Attachment #2: Type: text/html, Size: 1878 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-15 17:11             ` Fran Litterio
@ 2008-08-15 17:37               ` Eli Zaretskii
  0 siblings, 0 replies; 13+ messages in thread
From: Eli Zaretskii @ 2008-08-15 17:37 UTC (permalink / raw)
  To: Fran Litterio; +Cc: 720

> Date: Fri, 15 Aug 2008 13:11:45 -0400
> From: "Fran Litterio" <flitterio@gmail.com>
> Cc: 720@emacsbugs.donarmstrong.com
> 
> > >   w32.c(3823) : error C2059: syntax error : 'bad suffix on number'
> > >   w32.c(3823) : error C2146: syntax error : missing ')' before identifier
> > 'L'
> > >   w32.c(3823) : error C2059: syntax error : ')'
> > >   w32.c(3824) : error C2059: syntax error : 'bad suffix on number'
> > >   w32.c(3824) : error C2146: syntax error : missing ';' before identifier
> > 'L'
> > >   w32.c(3824) : error C2065: 'L' : undeclared identifier
> >
> > Does it mean that the LL suffix is not supported in VS 6?
> 
> 
> I think so.
> 
> 
> > Can you try
> > the same without the 2 LL suffixes?
> >
> 
> Yes, omitting the LL suffixes compiles with VS 6, though with several of
> these warnings:
> 
>    warning C4244: '=' : conversion from 'long double ' to 'long ', possible
> loss of data

Thanks, I installed the version without LL suffixes.






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: marked as done (Patch to fix CVS Emacs compilation error on Windows XP SP2.)
  2008-08-14 16:57 ` bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2 Francis Litterio
                     ` (2 preceding siblings ...)
       [not found]   ` <mailman.16704.1218743250.18990.bug-gnu-emacs@gnu.org>
@ 2008-08-15 17:45   ` Emacs bug Tracking System
  3 siblings, 0 replies; 13+ messages in thread
From: Emacs bug Tracking System @ 2008-08-15 17:45 UTC (permalink / raw)
  To: Eli Zaretskii

[-- Attachment #1: Type: text/plain, Size: 818 bytes --]


Your message dated Fri, 15 Aug 2008 20:39:57 +0300
with message-id <uskt6dvo2.fsf@gnu.org>
and subject line Bug fixed
has caused the Emacs bug report #720,
regarding Patch to fix CVS Emacs compilation error on Windows XP SP2.
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact don@donarmstrong.com
immediately.)


-- 
720: http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=720
Emacs Bug Tracking System
Contact don@donarmstrong.com with problems

[-- Attachment #2: Type: message/rfc822, Size: 2891 bytes --]

From: Francis Litterio <flitterio@gmail.com>
To: bug-gnu-emacs@gnu.org
Subject: Patch to fix CVS Emacs compilation error on Windows XP SP2.
Date: Thu, 14 Aug 2008 12:57:56 -0400
Message-ID: <u3al78rai.fsf@gmail.com>

When building CVS Emacs on Windows XP SP2 using Visual Studio 6.0, the
following patch is needed to prevent the compiler from displaying an
error about unsigned __int64 not being convertable to double.
--
Fran


--- w32.c~	2008-08-11 13:51:58.372421800 -0400
+++ w32.c	2008-08-14 12:54:29.192936600 -0400
@@ -3817,7 +3817,7 @@
                  attrs);
 
   if (global_memory_status_ex (&memstex))
-    totphys = memstex.ullTotalPhys / 1024.0;
+    totphys = (signed __int64)memstex.ullTotalPhys / 1024.0;
   else if (global_memory_status (&memst))
     totphys = memst.dwTotalPhys / 1024.0;
 




[-- Attachment #3: Type: message/rfc822, Size: 1025 bytes --]

From: Eli Zaretskii <eliz@gnu.org>
To: 720-done@emacsbugs.donarmstrong.com
Subject: Bug fixed
Date: Fri, 15 Aug 2008 20:39:57 +0300
Message-ID: <uskt6dvo2.fsf@gnu.org>

This bug is fixed.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-14 20:20     ` Eli Zaretskii
@ 2008-08-15 19:31       ` Stefan Monnier
  0 siblings, 0 replies; 13+ messages in thread
From: Stefan Monnier @ 2008-08-15 19:31 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bug-gnu-emacs, 720, flitterio

>> > When building CVS Emacs on Windows XP SP2 using Visual Studio 6.0, the
>> > following patch is needed to prevent the compiler from displaying an
>> > error about unsigned __int64 not being convertable to double.
>> Wouldn't it be better to cast to (double) ?
> Wouldn't that be doing the same mistake?  The compiler probably has a
> point: an unsigned 64-bit number has more bits than a simple double
> can handle.

Yes, it's a good reason for not doing the conversion automatically, but
IIUC we need a double, so we don't have much of a choice, and that's
what the cast to (double) would tell the compiler.


        Stefan






^ permalink raw reply	[flat|nested] 13+ messages in thread

* bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2.
  2008-08-15  8:22       ` Eli Zaretskii
@ 2008-08-15 19:34         ` Stefan Monnier
  0 siblings, 0 replies; 13+ messages in thread
From: Stefan Monnier @ 2008-08-15 19:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: bug-gnu-emacs, 720, Francis Litterio

> "Not implemented"?  I'm not sure we want to support such a deficient
> compiler.

Indeed we don't.

> How about this:

>   DWORD tot_hi = memstex.ullTotalPhys >> 32;
>   DWORD tot_md = (memstex.ullTotalPhys & 0x00000000ffffffffLL) >> 10;
>   DWORD tot_lo = memstex.ullTotalPhys % 1024LL;
>   totphys = tot_hi * 4194304.0 + tot_md + tot_lo / 1024.0;

> Does this work?

Please don't install such hideous code just to work around a deficiency
in an obsolete proprietary compiler.  Especially since there's
a perfectly good Free alternative available.


        Stefan







^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2008-08-15 19:34 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <uskt6dvo2.fsf@gnu.org>
2008-08-14 16:57 ` bug#720: Patch to fix CVS Emacs compilation error on Windows XP SP2 Francis Litterio
2008-08-14 19:24   ` Eli Zaretskii
2008-08-14 19:54   ` Stefan Monnier
2008-08-14 20:20     ` Eli Zaretskii
2008-08-15 19:31       ` Stefan Monnier
     [not found]   ` <mailman.16704.1218743250.18990.bug-gnu-emacs@gnu.org>
2008-08-14 20:15     ` Francis Litterio
2008-08-15  8:22       ` Eli Zaretskii
2008-08-15 19:34         ` Stefan Monnier
     [not found]       ` <mailman.16768.1218790062.18990.bug-gnu-emacs@gnu.org>
2008-08-15 13:22         ` Francis Litterio
2008-08-15 16:15           ` Eli Zaretskii
2008-08-15 17:11             ` Fran Litterio
2008-08-15 17:37               ` Eli Zaretskii
2008-08-15 17:45   ` bug#720: marked as done (Patch to fix CVS Emacs compilation error on Windows XP SP2.) Emacs bug Tracking System

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).