4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-01-19 12:59:21 +08:00

13164 Commits

Author SHA1 Message Date
Johannes Schindelin
bd4fdcc059 Cygwin: path_conv: do not get confused by a directory with .lnk suffix
When trying to create a directory called `xyz` in the presence of a
directory `xyz.lnk`, the Cygwin runtime errors out with an `ENOENT`.

The root cause is actually a bit deeper: the `symlink_info::check()`
method tries to figure out whether the given path refers to a symbolic
link as emulated via `.lnk` files, but since it is a directory, that is
not the case, and that hypothesis is rejected.

However, the `fileattr` field is not cleared, so that a later
`.exists()` call on the instance mistakenly thinks that the symlink
actually exists. Let's clear that field.

This fixes https://github.com/msys2/msys2-runtime/issues/81

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2022-01-18 11:55:44 +01:00
Anton Lavrentiev via Cygwin-patches
e195f51af7 Cygwin: resolver: Added processing of AAAA records
AAAA records returned from Windows resolver were flagged as "No
structure" in debug output because of being processed (although
correctly) in the default catch-all case.  This patch makes the AAAA
records properly recognized.
2022-01-18 11:24:48 +01:00
Anton Lavrentiev via Cygwin-patches
90947659b0 Cygwin: resolver: A little more consistency in debug messages 2022-01-18 11:24:37 +01:00
Anton Lavrentiev via Cygwin-patches
3baaf08324 Cygwin: resolver: Format spec consistency for Windows errors 2022-01-18 11:24:33 +01:00
Anton Lavrentiev via Cygwin-patches
5f40b62709 Cygwin: resolver: Debug to output both IP and port # in native b.o.
Also, change a few other debug output spots for consistency
2022-01-18 11:24:20 +01:00
Anton Lavrentiev via Cygwin-patches
1dd65a9ede Use matching format for NTSTATUS 2022-01-17 11:32:00 +01:00
Anton Lavrentiev via Cygwin-patches
746e7f1b06 Fix format specifier for wide-char string 2022-01-17 11:30:35 +01:00
Takashi Yano
909ed837cc Cygwin: pty: Fix race issue between closing and opening master.
- If the from_master is closed before cleaning up other pipes, such
  as from_slave_nat, the same pty may be allocated and pty master may
  try to open the pipe which is not closed yet, and it will fail.
  This patch fixes the issue.
2022-01-14 23:11:20 +09:00
Takashi Yano
bff4594b08 Cygwin: console: Fix potential deadlock regarding acuqiring mutex.
- Acquiring input_mutex and attach_mutex in console code has potential
  risk of deadlock. This patch fixes the issue.
2022-01-14 23:11:07 +09:00
Takashi Yano
3af461092e Cygwin: pty: Stop closing and recreating attach_mutex.
- Closing attach_mutex and recreating it causes the race issue
  between pty and console codes. With this patch, attach_mutex
  is created only once in a process which opens pty, and never
  closed in order to avoid this issue.

Addresses:
  https://cygwin.com/pipermail/cygwin-developers/2021-December/012548.html
2022-01-14 23:11:01 +09:00
Takashi Yano
4f490c4cef Cygwin: pty: Fix memory leak in master_fwd_thread.
- If master_fwd_thread is terminated by cygthread::terminate_thread(),
  the opportunity to release tmp_pathbuf is missed, resulting in a
  memory leak. This patch fixes the issue.
2022-01-14 23:10:55 +09:00
Takashi Yano
aa49985245 Cygwin: pty, console: Fix deadlock in GDB regarding mutex.
- GDB inferior may be suspended while the inferior grabs mutex.
  This causes deadlock in terminal I/O. With this patch, timeout
  for waiting mutex is set to 0 for the debugger process when the
  process calls CreateProcess() with DEBUG_PROCESS flag to avoid
  deadlock. This may cause the race issue in GDB, however, there
  is no other way than that.

Addresses:
 https://cygwin.com/pipermail/cygwin-developers/2021-December/012542.html
2022-01-14 23:10:47 +09:00
Jon Turney
7e8031a5fd
Cygwin: doc: drop mention of 32-bit installer
Drop mention of 32-bit installer, since it's offically discouraged, and
planned to be dropped soon.

Adjust various references to be something more generic, like 'the Cygwin
Setup program' to accommodate this.
2022-01-12 19:17:10 +00:00
Brian Inglis
bd179c36bf fhandler_proc.cc(format_proc_cpuinfo): add Linux 5.16 Gobble Gobble flags
0x00000007:1 Intel Advanced Matrix eXtensions:
		 EAX:22 amx_bf16 Brain Float 16 dot product
		 EAX:24 amx_tile Tile matrix multiply
		 EAX:25 amx_int8 Int 8 byte dot product
0x80000008:0 AMD EBX:27 cppc      Collaborative Processor Performance Control
2022-01-12 19:43:43 +01:00
Corinna Vinschen
935c33877d posix_spawn: fix get/set uid/gid calls for 32 bit Cygwin
32 bit Cygwin still exports function calls to support old applications.
E. g., when switching from 16 to 32 bit uid/gid values, new function
like getuid32 have been added and the old getuid function still only
provides 16 bit values.  Newly built applications using getuid are
actually calling getuid32.

However, this link magic isn't performed inside Cygwin itself, so if
newlib functions call getuid, they actually call the old getuid, not
the new getuid32.  This leads to truncated uid/gid values.

https://cygwin.com/pipermail/cygwin/2022-January/250453.html reports
how this leads to problems in posix_spawn.

Fix this temporarily. i686 support will go away soon in Cygwin and the
fix can be dropped.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2022-01-12 11:57:35 +01:00
Corinna Vinschen
f574c30857 Cygwin: Makefile: add dependency to newlib's libs
We need deps to newlib's libc.a and libm.a, otherwise changes
in newlib code don't trigger a rebuild of the Cygwin DLL.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2022-01-12 11:45:54 +01:00
Corinna Vinschen
a2bfe7cae6 Cygwin: ACLs: ignore *_INHERIT flags in file ACLs
get_posix_access() creates DEF_*_OBJ aclent_t entries from Windows ACEs
with INHERIT flags set, independent of the file type.  These flags only
make sense on directory objects, but certain Windows functions don't
check the file type and allow INHERIT ACE flags even on non-directories.

As a fix, make sure to ignore the INHERIT flags on non-directory ACLs
and don't propagate the matching DEF_*_OBJ aclent_t entries to callers.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2022-01-11 22:22:03 +01:00
Yaakov Selkowitz
cf8aa43284 Cygwin: do not build MinGW testsuite/cygrun --with-cross-bootstrap 2022-01-10 09:59:08 -05:00
Ken Brown
0ce992c1e4 Cygwin: fhandler_pipe::get_query_hdl_per_process: avoid a crash
NtQueryInformationProcess(ProcessHandleInformation) can return
STATUS_SUCCESS with invalid handle data for certain processes
("minimal" processes on Windows 10).  This can cause a crash when
there's an attempt to access that data.  Fix that by setting
NumberOfHandles to zero before calling NtQueryInformationProcess.

Addresses: https://cygwin.com/pipermail/cygwin-patches/2021q4/011611.html
2021-12-26 18:29:23 -05:00
Jon Turney
3328740799
cygwin: Add cocom and patch to build prerequisites in FAQ
Add patch, and make cocom unconditional in list of build prerequisites.

Even though the products of these tools are checked in, these tools are
required when building in a fresh git checkout, presumably due to the
order in which git creates the files resulting in timestamps which
indicate that the output of rules using these tools are older than
the inputs.

Addresses: https://cygwin.com/pipermail/cygwin/2021-December/250124.html

Also drop a duplicate sentence about 'fetch sources from git'.
2021-12-20 14:00:21 +00:00
Jon Turney
f4a26ececa
Cygwin: Conditionally build documentation
Add a configure option '--disable-doc' to disable building of the
documentation by the 'all' target.

Check for the required tools at configure time, and require them if
building documentation is enabled.

Even if building the documentation was diabled with '--disable-doc',
'make -C doc' at the top-level can still make the documentation, if the
documentation tools were found. If the tools were not found, 'missing'
is used to issue a warning about that.

Update instructions for building Cygwin appropriately.

(Building documentation remains the default to increase the chances of
noticing when building the documentation is broken.)
2021-12-17 22:28:16 +00:00
Takashi Yano
80f4b7d545 Cygwin: pty: Fix input switching failure.
- This patch fixes the failure of input switching between io_handle
  and io_handle_nat. This very rarely happens, however, input is
  wrongly switched to io_handle_nat even though the non-cygwin app
  is in the background.
2021-12-15 12:25:58 +09:00
Takashi Yano
0795f704f7 Cygwin: pty: Fix conditions for input transfer again. 2021-12-14 19:20:34 +09:00
Takashi Yano
720234b78a Cygwin: pty: Fix conditions for input transfer.
- The recent commit "Cygwin: pty: Add missing input transfer when
  switch_to_pcon_in state." causes regression that rlwrap cannot
  work with cmd.exe. This patch fixes the issue.
2021-12-14 12:32:36 +09:00
Jon Turney
90950758eb
Cygwin: Use AS_HELP_STRING for --enable-debugging
Use AS_HELP_STRING in AC_ARG_WITH for --enable-debugging to ensure
correct formatting in 'configure --help' output.
2021-12-13 17:47:54 +00:00
Takashi Yano
8d8724ee1b Cygwin: pty: Fix Ctrl-C handling further for non-cygwin apps.
- The recent commit: "Cygwin: pty: Fix Ctrl-C handling for non-cygwin
  apps in background." causes the problem that cmd.exe is terminated
  by Ctrl-C even if it is running in pseudo console. This patch fixes
  the issue.
2021-12-13 19:43:02 +09:00
Takashi Yano
90788821b7 Cygwin: pipe: Restore blocking mode for cygwin process at startup.
- Set blocking mode properly at startup of cygwin process. This is
  needed if the cygwin process is executed from non-cygwin process.
2021-12-12 22:14:29 +09:00
Ken Brown
451bbfb9f3 Cygwin: Document that the pipe_byte option is now set by default 2021-12-12 22:14:12 +09:00
Ken Brown
d9c1aeaddf Cygwin: fhandler_pipe::raw_read: minor code cleanup
Remove references to STATUS_THREAD_SIGNALED and
STATUS_THREAD_CANCELED, which can't occur any more.
2021-12-12 22:11:06 +09:00
Takashi Yano
9e4d308cd5 Cygwin: pipe: Adopt FILE_SYNCHRONOUS_IO_NONALERT flag for read pipe.
- With this patch, FILE_SYNCHRONOUS_IO_NONALERT flag is applied to
  the read pipe so that native C# programs work with cygwin pipe.
  To handle signals in reading pipe with this flag set, the read
  pipe itself is always set to nonblocking mode and simulates the
  blocking behaviour in raw_read().

- Default to byte mode rather than message mode in order to make
  C# programs work with cygwin pipe.

Addresses: https://cygwin.com/pipermail/cygwin/2021-March/247987.html
2021-12-12 22:11:05 +09:00
Takashi Yano
f3d719c694 Cygwin: console: Fix console mode of non-cygwin apps in background.
- If the non-cygwin app is started in the background in console, the
  console mode is broken for the app. This patch fixes the issue.
2021-12-12 21:46:37 +09:00
Takashi Yano
d593c3e17e Cygwin: pty: Fix console mode of non-cygwin apps in background.
- If the non-cygwin app is started in the background in pseudo
  console, the console mode is broken for the app. This patch fixes
  the issue.
2021-12-12 21:46:31 +09:00
Takashi Yano
e91ea41ef1 Cygwin: pty: Fix Ctrl-C handling for non-cygwin apps in background.
- With pseudo console enabled, if the non-cygwin app is started in
  the background and put it into the foreground, the process cannot
  be stopped by Ctrl-C. This patch fixes the issue.
2021-12-12 21:46:24 +09:00
Takashi Yano
acc44e09d1 Cygwin: pty: Add missing input transfer when switch_to_pcon_in state.
- This patch fixes the bug that input is wrongly sent to io_handle_nat
  rather than io_handle when neither read() nor select() is called
  after the cygwin app is started from non-cygwin app. This happens
  only if psuedo console is disabled.

Addresses:
  https://cygwin.com/pipermail/cygwin-patches/2021q4/011587.html
2021-12-12 21:46:05 +09:00
Takashi Yano
72175bbd28 Cygwin: clipboard: Make intent of the code clearer. 2021-12-11 23:25:16 +09:00
Takashi Yano
5aa2be8ac2 Cygwin: path: Fix path conversion of virtual drive.
- The last change in path.cc introduced a bug that causes an error
  when accessing a virtual drive which mounts UNC path such as
  "\\server\share\dir" rather than "\\server\share". This patch
  fixes the issue.
2021-12-11 22:49:52 +09:00
Jon Turney
366e43a30c
Cygwin: Update configure.ac to use AC_CONFIG_HEADERS
This avoids warning with autoconf >= 2.70:

  configure.ac:47: warning: The macro `AC_CONFIG_HEADER' is obsolete.

AC_CONFIG_HEADERS has been supported since before autconf 2.59, the
minimum version we can be using, controlled by AC_PREREQ.
2021-12-08 14:10:55 +00:00
Takashi Yano
30089b3fbd Cygwin: path: Convert UNC path prefix back to drive letter.
- When symlink_info::check() is called with the path having drive
  letter and UNC path is mounted to the drive, the path is replaced
  with UNC path. With this patch, UNC path prefix is converted back
  to drive letter.  This fixes the issue:
  https://cygwin.com/pipermail/cygwin/2021-November/250087.html
  https://cygwin.com/pipermail/cygwin/2021-December/250103.html
2021-12-08 20:20:30 +09:00
Takashi Yano
69ed8ca20c Cygwin: clipboard: Fix a bug in read().
- Fix a bug in fhandler_dev_clipboard::read() that the second read
  fails with 'Bad address'.

Addresses:
  https://cygwin.com/pipermail/cygwin/2021-December/250141.html
2021-12-07 23:38:50 +09:00
Takashi Yano
8dd641f236 Cygwin: Fix typo in new-features.xml 2021-12-03 12:19:44 +09:00
Corinna Vinschen
fb1fe93203 Cygwin: errno: handle ERROR_CASE_DIFFERING_NAMES_IN_DIR
Rather than special case status code 0xc00004b3, add status and matching
error code to ntdll.h and handle it as part of the standard error mapping.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-12-02 14:16:05 +01:00
Takashi Yano
e1026837dd Cygwin: console: Fix OSC sequence handling.
- Currently, some OSC escape sequences, such as 'OSC 110 BEL', are
  not handled correctly. This patch fixes the issue.
2021-12-02 11:26:26 +09:00
Corinna Vinschen
3edea7cd55 Cygwin: get/setrlimit: move RLIMIT_AS handling into static functions
To keep getrlimit/setrlimit clean, move the RLIMIT_AS code into
local static functions __set_rlimit_as and __get_rlimit_as.

Also, make adding process to the job the last step, to be able to
close and release the job resources if anything failed.  Add matching
comment.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-11-30 12:55:14 +01:00
Corinna Vinschen
670beaed02 Cygwin: setrlimit: Add a permission check
If the incoming soft limit is less restrictive than the current
hard limit, bail out with EPERM.  Given the previous sanity check,
this implies trying to raise the hard limit.  While, theoretically,
this should be allowed for privileged processes, Windows has no
matching concept in terms of job limits

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-11-30 12:55:14 +01:00
Corinna Vinschen
d64cd470ae Cygwin: get_rlimit_stack: add a comment
...just to see what it's used for.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-11-30 12:54:40 +01:00
Corinna Vinschen
3502a6ff2e Cygwin: add 3.4 release messages
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-11-26 17:06:00 +01:00
Corinna Vinschen
1c7384f9d1 Cygwin: get/setrlimit: implement RLIMIT_AS
Code based on the idea implemented by the oneTBB project,
see https://github.com/oneapi-src/oneTBB

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2021-11-26 17:01:28 +01:00
Ken Brown
4f47e64b11 Cygwin: fhandler_fifo::raw_read: handle STATUS_PENDING
NtReadFile can return STATUS_PENDING occasionally even in non-blocking
mode.  Check for this and wait for NtReadFile to complete.  To avoid
code repetition, do this in a static helper function nt_read.
2021-11-23 15:50:01 -05:00
Ken Brown
6d34b62cb8 Cygwin: fhandler_pipe::raw_read: fix handle leak
Slightly rearrange the code to avoid returning without closing the
event handle.
2021-11-23 10:19:49 -05:00
Takashi Yano
e84b43ea93 Cygwin: Fix release note 3.3.3.
- Removes the bug fix entry that was accidentally added to the
  release notes 3.3.3, even though it had been already fixed in
  3.3.2.
2021-11-23 01:19:56 +09:00