public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: "Denis Vnoukov" <imagine@rambler.ru>
To: "cygwin" <cygwin@cygwin.com>
Subject: Combo GCC issues with bugs
Date: Fri, 02 Aug 2019 21:05:00 -0000	[thread overview]
Message-ID: <1564779921.24964.28908.35526@mail.rambler.ru> (raw)

Code Example:
#include <stdlib.h>
#include <stdio.h>
#include <sys/select.h>
#include <windows.h>
#include <stdint.h>
#include <intrin.h>int main()
{
// https://github.com/msys2/MSYS2-packages/issues/1711
char buf[50];
char * str = gcvt(3.141592653589793238462643383279502884197169399375, 49, buf);
printf("buffer: %s", str);// https://github.com/msys2/MSYS2-packages/issues/1270
fd_set read_fd;
FD_ZERO(&read_fd);GetTickCount64();//
https://github.com/msys2/MSYS2-packages/issues/1262
unsigned long index;
uint64_t b = 0xbedabedadeadc0de;
_BitScanForward64(&index, b);
_BitScanReverse64(&index, b);return 0;
}
If we compile it with gcc as .c:
$ gcc main.c
main.c: In function ‘main’:
main.c:16:15: warning: implicit declaration of function ‘gcvt’
[-Wimplicit-function-declaration]
char * str = gcvt(3.141592653589793238462643383279502884197169399375, 49, buf);
^~~~
main.c:16:15: warning: initialization makes pointer from integer without a cast
[-Wint-conversion]
main.c:23:2: warning: implicit declaration of function ‘GetTickCount64’; did you
mean ‘GetTickCount’? [-Wimplicit-function-declaration]
GetTickCount64();
^~~~~~~~~~~~~~
GetTickCount
main.c:28:20: warning: passing argument 1 of ‘_BitScanForward64’ from
incompatible pointer type [-Wincompatible-pointer-types]
_BitScanForward64(&index, b);
^
In file included from /usr/include/w32api/winnt.h:27:0,
from /usr/include/w32api/minwindef.h:163,
from /usr/include/w32api/windef.h:8,
from /usr/include/w32api/windows.h:69,
from main.c:8:
/usr/include/w32api/psdk_inc/intrin-impl.h:749:1: note: expected ‘unsigned int *’
but argument is of type ‘long unsigned int *’
__buildbitscan(_BitScanForward64, unsigned __int64, "bsf{q %[Mask],%[Index] |
%[Index],%[Mask]}")
^
main.c:29:20: warning: passing argument 1 of ‘_BitScanReverse64’ from
incompatible pointer type [-Wincompatible-pointer-types]
_BitScanReverse64(&index, b);
^
In file included from /usr/include/w32api/winnt.h:27:0,
from /usr/include/w32api/minwindef.h:163,
from /usr/include/w32api/windef.h:8,
from /usr/include/w32api/windows.h:69,
from main.c:8:
/usr/include/w32api/psdk_inc/intrin-impl.h:756:1: note: expected ‘unsigned int *’
but argument is of type ‘long unsigned int *’
__buildbitscan(_BitScanReverse64, unsigned __int64, "bsr{q %[Mask],%[Index] |
%[Index],%[Mask]}")
^
So...
1. gcvt function must be into stdlib.h, but we have a warning
2. gcvt function in all standards has declaration like:char *gcvt(double number,
int ndigit, char *buf);but we have a warning about "int-conversion" and get core
dump on line:printf("buffer: %s", str);
3. We have a warning about "implicit declaration of function" GetTickCount64();But
it can be available with windows.hhttps://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-gettickcount64
4. We have a warning about "incompatible pointer type" for _BitScanForward64 and
_BitScanReverse64 functions.But declaration from Microsoft looks like:unsigned
char _BitScanForward64( unsigned long * Index, unsigned __int64 Mask );https://docs.microsoft.com/en-us/cpp/intrinsics/bitscanforward-bitscanforward64?view=vs-2019
Then, let's compile source via g++ with -Wold-style-cast option as .cpp:
$ g++ -Wold-style-cast main.cpp
main.cpp: In function ‘int main()’:
main.cpp:16:15: error: ‘gcvt’ was not declared in this scope
char * str = gcvt(3.141592653589793238462643383279502884197169399375, 49, buf);
^~~~
In file included from /usr/include/sys/types.h:52:0,
from /usr/include/stdio.h:61,
from main.cpp:6:
main.cpp:21:11: warning: use of old-style cast [-Wold-style-cast]
FD_ZERO(&read_fd);
^
main.cpp:23:2: error: ‘GetTickCount64’ was not declared in this scope
GetTickCount64();
^~~~~~~~~~~~~~
main.cpp:23:2: note: suggested alternative: ‘GetTickCount’
GetTickCount64();
^~~~~~~~~~~~~~
GetTickCount
main.cpp:28:29: error: cannot convert ‘long unsigned int*’ to ‘unsigned int*’ for
argument ‘1’ to ‘unsigned char _BitScanForward64(unsigned int*, long long
unsigned int)’
_BitScanForward64(&index, b);
^
main.cpp:29:29: error: cannot convert ‘long unsigned int*’ to ‘unsigned int*’ for
argument ‘1’ to ‘unsigned char _BitScanReverse64(unsigned int*, long long
unsigned int)’
_BitScanReverse64(&index, b);

So...1. error: ‘gcvt’ was not declared in this scopebut it must be into stdlib.h
as well:MSVC:
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/gcvt?view=vs-2019
Linux man: http://man7.org/linux/man-pages/man3/gcvt.3.html
And from IBM:
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.bpxbd00/rgcvt.htm
2.main.cpp:21:11: warning: use of old-style cast [-Wold-style-cast]
FD_ZERO(&read_fd);This is bullshit.
3. error: ‘GetTickCount64’ was not declared in this scopeSee Above.
4. For BitScanForward64/_BitScanReverse64 - error: cannot convert ‘long unsigned
int*’ to ‘unsigned int*’ for argument ‘1’See Above.

--
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:[~2019-08-02 21:05 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-02 21:05 Denis Vnoukov [this message]
2019-08-03 18:59 ` Ken Brown
     [not found] <1564865987.561926.25803.36864@mail.rambler.ru>
2019-08-03 21:02 ` Denis Vnoukov
2019-08-04 15:00   ` Ken Brown

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=1564779921.24964.28908.35526@mail.rambler.ru \
    --to=imagine@rambler.ru \
    --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).