GNU bug report logs -
#78701
Undeclared reference to access on Windows
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Fri, 6 Jun 2025 20:47:51 +0300
with message-id <ea72d585-c0ac-4db5-b923-80553ea4eae8 <at> gmail.com>
and subject line Re: bug#78701: Undeclared reference to access on Windows
has caused the debbugs.gnu.org bug report #78701,
regarding Undeclared reference to access on Windows
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
78701: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=78701
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
Building libltdl on Windows using clang-cl.exe fails with the following diagnostic:
```
H:/git/libtool/libltdl/ltdl.c(781,19): error: call to undeclared function 'access'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
781 | int notfound = access (filename, R_OK);
| ^
H:/git/libtool/libltdl/ltdl.c(781,19): note: did you mean 'accept'?
C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um\winsock.h(739,19): note: 'accept' declared here
739 | SOCKET PASCAL FAR accept (
| ^
```
On native Windows (MSVC/mingw), access is declared in io.h, which is not included. (On mingw, it could be indirectly included from
other header files.)
A solution would be to add
```
#if defined (_WIN32) && !defined (__CYGWIN__)
#include <io.h>
#endif
```
on top of libltdl/ltdl.c.
- Kirill Makurin
[Message part 4 (text/html, inline)]
[Message part 5 (message/rfc822, inline)]
[Message part 6 (text/plain, inline)]
On 05/06/2025 19:22, Kirill Makurin wrote:
> Building libltdl on Windows using clang-cl.exe fails with the following
> diagnostic:
>
> ```
> H:/git/libtool/libltdl/ltdl.c(781,19): error: call to undeclared
> function 'access'; ISO C99 and later do not support implicit function
> declarations [-Wimplicit-function-declaration]
> 781 | int notfound = access (filename, R_OK);
> | ^
> H:/git/libtool/libltdl/ltdl.c(781,19): note: did you mean 'accept'?
> C:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\
> \um\winsock.h(739,19): note: 'accept' declared here
> 739 | SOCKET PASCAL FAR accept (
> | ^
> ```
>
> On native Windows (MSVC/mingw), access is declared in io.h, which is not
> included. (On mingw, it could be indirectly included from
> other header files.)
>
> A solution would be to add
>
> ```
> #if defined (_WIN32) && !defined (__CYGWIN__)
> #include <io.h>
> #endif
> ```
>
> on top of libltdl/ltdl.c.
Thank you for the bug report and suggested patch! I have applied the
change to ltdl.h, and it is on the development branch [1].
[1]
https://cgit.git.savannah.gnu.org/cgit/libtool.git/commit/?h=development&id=a26932a36ecb2c3013be0c1e7fdbf2eb9062e845
--
Ileana Dumitrescu
GPG Public Key: FA26 CA78 4BE1 8892 7F22 B99F 6570 EA01 146F 7354
[OpenPGP_0x6570EA01146F7354.asc (application/pgp-keys, attachment)]
[OpenPGP_signature.asc (application/pgp-signature, attachment)]
This bug report was last modified 35 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.