public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Csaba Raduly <rcsaba@gmail.com>
To: cygwin list <cygwin@cygwin.com>
Subject: Re: cygwin x86_64: mingw64-g++ 6.4.0 (both i686 and x86_64) issue (bug?) with reinterpret_cast
Date: Wed, 01 Nov 2017 14:25:00 -0000	[thread overview]
Message-ID: <CAEhDDbAydKbO2wv0Mf9ScPHeEirF1Q483Z19mrPmgN_uPRso0Q@mail.gmail.com> (raw)
In-Reply-To: <515e5221f28f4df880916eaa1b25b7aa@SFHDAG5NODE3.st.com>

On Tue, Oct 31, 2017 at 11:00 AM, Paolo ZAMBOTTI  wrote:
> Hi Csaba,
>

Please don't top-post (at least in this mailing list).

> Ok, then the issue are "my" lines of code and the error messages from g++ were not completely clear (and they was confusing me a little bit)...
> But I'm still not sure the issue is not in Cygwin package. I mean, my test code was a very simplified (too much simplified) excerpt from squid source code and, there, the link with header file from cygwin package is more clear.
> Then, let me post another test file where this link is more clear.
>
> Now the failure is as follow (g++ -std=gnu++11 -c -Wall -pedantic -Wextra test.cpp)
>
> In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/winbase.h:19:0,
>                  from /usr/i686-w64-mingw32/sys-root/mingw/include/windows.h:70,
>                  from test.cpp:1:
> test.cpp:6:45: error: reinterpret_cast from integer to pointer
>      static constexpr HANDLE InvalidHandle = INVALID_HANDLE_VALUE;
>                                              ^
>
> The issue is now within the macro definition of INVALID_HANDLE_VALUE in file handleapi.h (which could be, from i686-w64-mingw32, x86_64-w64-mingw32 or w32api)
>
> Now I'm wondering what is really wrong:
>         does the definition of INVALID_HANDLE_VALUE need to be rewritten in order to be compatible with the "static constexpr" line

There's nothing wrong with INVALID_HANDLE_VALUE with regards to
"static constexpr", although a constexpr expression cannot contain
reinterpret_cast-s,
and a C-style cast can resort to be a reinterpret_cast. But this
doesn't seem to be the problem (there's a different error message for
that).

HANDLE is defined as a pointer:

include/wtypesbase.h:52:typedef void *HANDLE;

LONG_PTR is defined as an integer:
basetsd.h:54:typedef long LONG_PTR,*PLONG_PTR;

INVALID_HANDLE_VALUE is defined in handleapi.h:16 as

#define INVALID_HANDLE_VALUE ((HANDLE) (LONG_PTR)-1)

so you have a cast right there. Whenever you use INVALID_HANDLE_VALUE,
the compiler sees a cast from long to void*

I don't know how this could be fixed. You may want to ask on a
mingw-specific mailing list.

You could try adding -isystem /path/to/mingw/headers so mingw-gcc
finds its headers that way (warnings tend to be suppressed for headers
found in directories specified with -isystem rather than -i, although
mingw-gcc's built-in headers should be treated the same way).

(disclaimer: I havent tried this).

>         or
>         does "my" line of code has to be rewritten in order to be compatible with the INVALID_HANDLE_VALUE definition?
>
> In the latest case, any suggestion will be very welcome...
>
> Paolo.

Csaba
-- 
GCS a+ e++ d- C++ ULS$ L+$ !E- W++ P+++$ w++$ tv+ b++ DI D++ 5++
The Tao of math: The numbers you can count are not the real numbers.
Life is complex, with real and imaginary parts.
"Ok, it boots. Which means it must be bug-free and perfect. " -- Linus Torvalds
"People disagree with me. I just ignore them." -- Linus Torvalds

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

  reply	other threads:[~2017-11-01 14:25 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-31 10:01 Paolo ZAMBOTTI
2017-11-01 14:25 ` Csaba Raduly [this message]
  -- strict thread matches above, loose matches on Subject: below --
2017-10-23 14:47 Paolo ZAMBOTTI
2017-10-23 23:26 ` JonY
2017-10-24  9:19 ` Csaba Raduly

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAEhDDbAydKbO2wv0Mf9ScPHeEirF1Q483Z19mrPmgN_uPRso0Q@mail.gmail.com \
    --to=rcsaba@gmail.com \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).