]> sourceware.org Git - newlib-cygwin.git/log
newlib-cygwin.git
4 years agoCygwin: AF_UNIX: fix creating shared mem region in dup
Corinna Vinschen [Fri, 28 Feb 2020 11:39:41 +0000 (12:39 +0100)]
Cygwin: AF_UNIX: fix creating shared mem region in dup

reopen_shmem is accidentally called on the parent fhandler
rather than the child fhandler, and it's called too early.
Make sure to call it on the child and only after its shmem_handle
is valid.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: Update dumper for bfd API changes
Jon Turney [Wed, 26 Feb 2020 18:48:51 +0000 (18:48 +0000)]
Cygwin: Update dumper for bfd API changes

Update dumper for bfd API changes in binutils 2.34

libbfd doesn't guarantee API stability, so we've just been lucky this
hasn't broken more often.

See binutils commit fd361982.

4 years agoCygwin: console: Add emulation of CSI3J on Win10 1809.
Takashi Yano [Wed, 26 Feb 2020 15:33:02 +0000 (00:33 +0900)]
Cygwin: console: Add emulation of CSI3J on Win10 1809.

- This patch add emulation of CSI3J, which is broken in Win10 1809,
  rather than ignoring it as before.

4 years agoCygwin: console: Add support for REP escape sequence to xterm mode.
Takashi Yano [Wed, 26 Feb 2020 15:33:01 +0000 (00:33 +0900)]
Cygwin: console: Add support for REP escape sequence to xterm mode.

- In Win10 upto 1809, xterm compatible mode does not have REP
  escape sequence which terminfo declares. This patch adds support
  for "CSI Ps b" (REP). With this patch, bvi (binary editor) works
  normally in Win10 1809. Also, xterm compatible mode does not have
  "CSI Pm `" (HPA), "CSI Pm a" (HPR) and "CSI Ps e" (VPR). However,
  they do not appear to be declared by terminfo. Therefore, these
  have been pending.

4 years agoCygwin: console: Unify workaround code for CSI3J and CSI?1049h/l.
Takashi Yano [Wed, 26 Feb 2020 15:33:00 +0000 (00:33 +0900)]
Cygwin: console: Unify workaround code for CSI3J and CSI?1049h/l.

- This patch unifies workaround code for CSI3J and CSI?1049h/l into
  the code handling other escape sequences in xterm mode.

4 years agoCygwin: console: Add workaround for broken IL/DL in xterm mode.
Takashi Yano [Wed, 26 Feb 2020 15:32:59 +0000 (00:32 +0900)]
Cygwin: console: Add workaround for broken IL/DL in xterm mode.

- Cygwin console with xterm compatible mode causes problem reported
  in https://www.cygwin.com/ml/cygwin-patches/2020-q1/msg00212.html
  if background/foreground colors are set to gray/black respectively
  in Win10 1903/1909. This is caused by "CSI Ps L" (IL), "CSI Ps M"
  (DL) and "ESC M" (RI) control sequences which are broken. This
  patch adds a workaround for the issue.

4 years agoCygwin: ps: fix compiler warning in ttynam
Corinna Vinschen [Wed, 26 Feb 2020 20:08:51 +0000 (21:08 +0100)]
Cygwin: ps: fix compiler warning in ttynam

The helper function ttynam creates a tty name by using sprintf wrongly
on a pretty short buffer.  The foramt string only specifies a minimum
field length, not a maximum field length, so gcc-9.2.0 complains:

  ps.cc:101:23: warning: 'sprintf' may write a terminating nul past the
  end of the destination [-Wformat-overflow=]

Fix this thoroughly by specifying a maximum field width as well as by
using snprintf with a fixed buffer length.  Also, drop using a static
buffer in favor of using a buffer in the caller.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: cygserver: drop useless packed attribute
Corinna Vinschen [Wed, 26 Feb 2020 19:52:55 +0000 (20:52 +0100)]
Cygwin: cygserver: drop useless packed attribute

...from structs used for data exchange between clients and cygserver.
All of the structs have the same size and member offsets, packed or
unpacked.  Keeping the packed attribute results in ominous warnings
from gcc-9.2.0:

  cygserver.cc:259:10: warning: taking address of packed member of
  'client_request_attach_tty::request_attach_tty' may result in an
  unaligned pointer value [-Waddress-of-packed-member]

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: Makefile.in: add -fno-builtin-execve CFLAG when building exec.o
Corinna Vinschen [Wed, 26 Feb 2020 16:02:01 +0000 (17:02 +0100)]
Cygwin: Makefile.in: add -fno-builtin-execve CFLAG when building exec.o

gcc-9.2.0 has an execve builtin which uses the nothrow attribute.
This results in an error when aliasing execve to _execve for newlib:

exec.cc:88:23: error: 'int _execve(const char*, char* const*, char*
const*)' specifies less restrictive attribute than its target
'int execve(const char*, char* const*, char* const*)': 'nothrow'
[-Werror=missing-attributes]
   88 | EXPORT_ALIAS (execve, _execve) /* For newlib */

Add the -fno-builtin-execve CFLAGS when building exec.o to override
the gcc builtin.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: posix timers: fix uninitialized variable
Corinna Vinschen [Wed, 26 Feb 2020 15:50:34 +0000 (16:50 +0100)]
Cygwin: posix timers: fix uninitialized variable

The variable returning the overrun count from the tracker object after
disarming the overrun counter was not correctly initialized.  For some
reason this has only been noticed by gcc-9.2.0, not by the formerly used
gcc-7.4.0.

This problem should not have had any runtime impact.  The method
timer_tracker::disarm_overrun_event is supposed to be called in
lock-step with timer_tracker::arm_overrun_event, which in turn
results in the variable getting a valid value.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agocpuinfo:power management: add proc_feedback, acc_power
Brian Inglis [Tue, 25 Feb 2020 23:44:16 +0000 (16:44 -0700)]
cpuinfo:power management: add proc_feedback, acc_power

linux 4.6 x86/cpu: Add advanced power management bits
Bit 11 of CPUID 8000_0007 edx is processor feedback interface.
Bit 12 of CPUID 8000_0007 edx is accumulated power.

Print proper names in /proc/cpuinfo

[missed enabling this 2016 change during previous major cpuinfo update
as no power related changes were made to the Linux files since then]

4 years agox86_64/i386 fenv: Replace symlink with include fenv_stub.c
Joel Sherrill [Tue, 25 Feb 2020 13:38:33 +0000 (07:38 -0600)]
x86_64/i386 fenv: Replace symlink with include fenv_stub.c

Having symlinks for these files led to an issue reported to the RTEMS
Project that showed up using some tar for native Windows to unpack the
newlib sources.  It creates symlinks in the tar file as copies of the
files the symlinks point to.  If the links appear in the tar file before
the source exists, it cannot copy the file.

The solution in this patch is to convert the files that are symbolic
links into simple files which include the file they were linked to.
This should be more portable and avoids the symbolinc link problem.

4 years agoCygwin: console: Fix segfault on shared_console_info access.
Takashi Yano [Mon, 24 Feb 2020 16:12:16 +0000 (01:12 +0900)]
Cygwin: console: Fix segfault on shared_console_info access.

- Accessing shared_console_info before initialization causes access
  violation because it is a NULL pointer. The cause of the problem
  reported in https://cygwin.com/ml/cygwin/2020-02/msg00197.html is
  this NULL pointer access in request_xterm_mode_output() when it is
  called from close(). This patch makes sure that shared_console_info
  is not NULL before calling request_xterm_mode_output().

4 years agofhandler_proc/cpuinfo: support fast short REP MOVSB
Brian Inglis [Fri, 21 Feb 2020 21:28:08 +0000 (14:28 -0700)]
fhandler_proc/cpuinfo: support fast short REP MOVSB

Added in Linux 5.6:
Check FSRM and use REP MOVSB for short copies on systems that have it.

>From the Intel Optimization Reference Manual:

3.7.6.1 Fast Short REP MOVSB
Beginning with processors based on Ice Lake Client microarchitecture,
REP MOVSB performance is enhanced with string lengths up to 128 bytes.
Support for fast-short REP MOVSB is indicated by the CPUID feature flag:
CPUID [EAX=7H, ECX=0H).EDX.FAST_SHORT_REP_MOVSB[bit 4] = 1.
There is no change in the REP STOS performance.

4 years agoCygwin: add release message for NUL character bugs
Corinna Vinschen [Fri, 21 Feb 2020 09:57:10 +0000 (10:57 +0100)]
Cygwin: add release message for NUL character bugs

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: don't move cursor on NUL char at all
Corinna Vinschen [Fri, 21 Feb 2020 09:26:25 +0000 (10:26 +0100)]
Cygwin: don't move cursor on NUL char at all

Add a comment instead to explain that this behaviour contradicts
the terminfo entry.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: fhandler_console.cc: fix minor style issues
Corinna Vinschen [Thu, 20 Feb 2020 13:57:26 +0000 (14:57 +0100)]
Cygwin: fhandler_console.cc: fix minor style issues

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: console: ignore NUL byte on write in xterm emulation mode as well
Corinna Vinschen [Thu, 20 Feb 2020 13:48:03 +0000 (14:48 +0100)]
Cygwin: console: ignore NUL byte on write in xterm emulation mode as well

A NUL byte in the output stream got accidentally not handled as IGN char
in xterm console mode.  The internal mbtowc conversion doesn't handle
embedded NUL values gracefully, it always stops converting at NUL bytes.
This broke the output of strings with embedded NUL bytes.

Fix this by always skipping IGN chars in the "normal char output loop"
and make sure not to move the cursor one position to the right, as in
legacy console mode.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agonewlib/libc/include/devctl.h: Add extern "C" wrapper
Joel Sherrill [Wed, 19 Feb 2020 14:03:40 +0000 (08:03 -0600)]
newlib/libc/include/devctl.h: Add extern "C" wrapper

Adding this was necessary to allow posix_devctl() from C++.

4 years agoBump DLL version to 3.1.5
Corinna Vinschen [Wed, 19 Feb 2020 12:38:42 +0000 (13:38 +0100)]
Bump DLL version to 3.1.5

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: console: Add guard for set/unset xterm compatible mode. cygwin-3_1_4-release
Takashi Yano [Tue, 18 Feb 2020 09:12:54 +0000 (18:12 +0900)]
Cygwin: console: Add guard for set/unset xterm compatible mode.

- Setting / unsetting xterm compatible mode may cause race issue
  between multiple processes. This patch adds guard for that.

4 years agoCygwin: console: Fix ioctl() FIONREAD.
Takashi Yano [Tue, 18 Feb 2020 04:05:07 +0000 (13:05 +0900)]
Cygwin: console: Fix ioctl() FIONREAD.

- ioctl() FIONREAD for console does not return correct value since
  commit cfb517f39a8bcf2d995a732d250563917600408a. This patch fixes
  the issue.

4 years agoCygwin: add @cjksingle to release docs
Corinna Vinschen [Tue, 18 Feb 2020 10:32:47 +0000 (11:32 +0100)]
Cygwin: add @cjksingle to release docs

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: describe new locale modifier @cjksingle for user guide
Thomas Wolff [Sun, 16 Feb 2020 23:00:00 +0000 (00:00 +0100)]
Cygwin: describe new locale modifier @cjksingle for user guide

4 years agoLocale modifier "@cjksingle" to enforce single-width CJK width.
Thomas Wolff [Sun, 16 Feb 2020 23:00:00 +0000 (00:00 +0100)]
Locale modifier "@cjksingle" to enforce single-width CJK width.

This option follows a proposal in the Terminals Working Group Specifications
(https://gitlab.freedesktop.org/terminal-wg/specifications/issues/9#note_406682).
It makes locale width consistent with the corresponding mintty feature.

4 years agoCygwin: rename NSIG to _NSIG, change visibility of NSIG to MISC
Corinna Vinschen [Tue, 18 Feb 2020 10:17:43 +0000 (11:17 +0100)]
Cygwin: rename NSIG to _NSIG, change visibility of NSIG to MISC

NSIG is a deprecated symbol only visible under MISC visibility.
_NSIG is used widely instead, and on most systems NSIG is
defined in terms of _NSIG.

Follow suit: Change NSIG to _NSIG throughout and change visiblity
of NSIG to be defined only in __MISC_VISIBLE case.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: move 3.1.3 to 3.1.4 release document
Corinna Vinschen [Tue, 18 Feb 2020 10:19:23 +0000 (11:19 +0100)]
Cygwin: move 3.1.3 to 3.1.4 release document

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: console: Fix code for restoring console mode.
Takashi Yano [Mon, 17 Feb 2020 12:46:27 +0000 (21:46 +0900)]
Cygwin: console: Fix code for restoring console mode.

- Commit 774b8996d1f3e535e8267be4eb8e751d756c2cec has a bug that
  restores console output mode into console input. This patch fixes
  the issue.

4 years agoCygwin: Bump DLL version to 3.1.4
Corinna Vinschen [Mon, 17 Feb 2020 12:56:44 +0000 (13:56 +0100)]
Cygwin: Bump DLL version to 3.1.4

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: console: Change timing of set/unset xterm compatible mode. cygwin-3_1_3-release
Takashi Yano [Mon, 17 Feb 2020 10:29:07 +0000 (19:29 +0900)]
Cygwin: console: Change timing of set/unset xterm compatible mode.

- If two cygwin programs are executed simultaneousley with pipes
  in cmd.exe, xterm compatible mode is accidentally disabled by
  the process which ends first. After that, escape sequences are
  not handled correctly in the other app. This is the problem 2
  reported in https://cygwin.com/ml/cygwin/2020-02/msg00116.html.
  This patch fixes the issue. This patch also fixes the problem 3.
  For these issues, the timing of setting and unsetting xterm
  compatible mode is changed. For read, xterm compatible mode is
  enabled only within read() or select() functions. For write, it
  is enabled every time write() is called, and restored on close().

4 years agopow: fix pow(-1.0, NaN)
Nicolas Brunie [Fri, 14 Feb 2020 09:12:25 +0000 (10:12 +0100)]
pow: fix pow(-1.0, NaN)

I think I may have encountered a bug in the implementation of pow:
pow(-1.0, NaN) returns 1.0 when it should return NaN.
Because ix is used to check input vs 1.0 rather than hx, -1.0 is
mistaken for 1.0

4 years agoCygwin: pty: Add error handling in setup_pseudoconsole().
Takashi Yano [Mon, 10 Feb 2020 17:45:14 +0000 (02:45 +0900)]
Cygwin: pty: Add error handling in setup_pseudoconsole().

- In setup_pseudoconsole(), many error handling was omitted. This
  patch adds missing error handling.

4 years agoOnly pass the minimum number of syscall arguments
Georg Sauthoff [Mon, 10 Feb 2020 20:19:58 +0000 (21:19 +0100)]
Only pass the minimum number of syscall arguments

Previously, __internal_syscall() compiled into asm-code that unconditionally
sets the syscall argument registers a0 to a5.

For example, the instruction sequence for a exit syscall looked like
this:

    li    a0, 1   # in ther caller of exit()
    # ...         # in newlib:
    li    a1, 0   # unused arguments
    li    a2, 0
    li    a3, 0
    li    a4, 0
    li    a5, 0
    li    a7, 93  # exit syscall number

(i.e. the binary contains then 5 superfluous instructions for this
one argument syscall)

This commit changes the RISC-V syscall code such that only the required
syscall argument registers are set.

GCC detects that argc is known at compile time and thus evaluates all the
if-statements where argc is used at compile time (tested with -O2 and -Os).

4 years agoCygwin: pty: Prevent potential errno overwriting.
Takashi Yano [Mon, 10 Feb 2020 11:42:45 +0000 (20:42 +0900)]
Cygwin: pty: Prevent potential errno overwriting.

- In push_to_pcon_screenbuffer(), open() and ioctl() are called.
  Since push_to_pcon_screenbuffer() is called in read() and write(),
  errno which is set in read() and write() code may be overwritten
  in open() or ioctl() call. This patch prevent this situation.

4 years agoCygwin: pty: Fix state mismatch caused in mintty.
Takashi Yano [Sun, 9 Feb 2020 14:47:30 +0000 (23:47 +0900)]
Cygwin: pty: Fix state mismatch caused in mintty.

- PTY has a bug reported in:
  https://cygwin.com/ml/cygwin/2020-02/msg00067.html.
  This is the result of state mismatch between real pseudo console
  attaching state and state variable. This patch fixes the issue.

4 years agoCygwin: pty: Inherit typeahead data between two input pipes.
Takashi Yano [Sun, 9 Feb 2020 14:46:59 +0000 (23:46 +0900)]
Cygwin: pty: Inherit typeahead data between two input pipes.

- PTY has a problem that the key input, which is typed during
  windows native app is running, disappear when it returns to shell.
  (Problem 3 in https://cygwin.com/ml/cygwin/2020-02/msg00007.html)
  This is beacuse pty has two input pipes, one is for cygwin apps
  and the other one is for native windows apps. The key input during
  windows native program is running is sent to the second input pipe
  while cygwin shell reads input from the first input pipe.
  This patch realize transfering input data between these two pipes.

4 years agoCygwin: pty: Add missing member initialization for struct pipe_reply.
Takashi Yano [Sun, 9 Feb 2020 14:46:03 +0000 (23:46 +0900)]
Cygwin: pty: Add missing member initialization for struct pipe_reply.

- For pseudo console support, struct pipe_reply was changed in the
  past, however, the initialization was not fixed.

4 years agoCygwin: pty: Remove debug codes and organize related codes.
Takashi Yano [Sun, 9 Feb 2020 14:46:02 +0000 (23:46 +0900)]
Cygwin: pty: Remove debug codes and organize related codes.

- Debug codes used in the early stage of pseudo console support are
  removed. (Regarding ALWAYS_USE_PCON and USE_API_HOOK) Along with
  this, the codes related to this change are organized.

4 years agoCygwin: pty: Avoid screen distortion on slave read.
Takashi Yano [Sun, 9 Feb 2020 14:46:01 +0000 (23:46 +0900)]
Cygwin: pty: Avoid screen distortion on slave read.

- Echo back print is distorted when the cygwin program which calls
  Win32 console API directly calls slave read(). This patch fixes
  the issue.

4 years agoCygwin: pty: Define mask_switch_to_pcon_in() in fhandler_tty.cc.
Takashi Yano [Sun, 9 Feb 2020 14:46:00 +0000 (23:46 +0900)]
Cygwin: pty: Define mask_switch_to_pcon_in() in fhandler_tty.cc.

- This patch moves the definition of mask_switch_to_pcon() from
  fhandler.h to fhandler_tty.cc.

4 years agoCygwin: pty: Use pinfo() rather than kill() with signal 0.
Takashi Yano [Thu, 6 Feb 2020 10:48:17 +0000 (19:48 +0900)]
Cygwin: pty: Use pinfo() rather than kill() with signal 0.

- PTY code has a problem that tcsh is terminated if the following
  command is executed.
    true; chcp &
  This seems to be caused by invalid pointer access which occurs
  when the process exits during the kill() code is execuetd. This
  patch avoids the issue by not using kill().

4 years agoTypo in license for newlib/libc/stdio/flags.c
Keith Packard [Wed, 5 Feb 2020 06:48:19 +0000 (22:48 -0800)]
Typo in license for newlib/libc/stdio/flags.c

Fix spelling:

MERCHANT I BILITY -> MERCHANT A BILITY

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agoTypo in license terms for newlib/libm/common/log2.c
Keith Packard [Wed, 5 Feb 2020 06:48:18 +0000 (22:48 -0800)]
Typo in license terms for newlib/libm/common/log2.c

The closing quotes were in the wrong place

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agolibgloss: Fix lseek semihosting bug on nios2 and m68k
Sandra Loosemore [Wed, 5 Feb 2020 04:34:13 +0000 (21:34 -0700)]
libgloss: Fix lseek semihosting bug on nios2 and m68k

When off_t is 32 bits, the value needs to be sign-extended to 64 bits
before shifting right to extract the high-order word.  Previously
negative offsets were incorrectly encoded.

Signed-off-by: Sandra Loosemore <sandra@codesourcery.com>
4 years agoCygwin: pty: Remove meaningless pointer increment.
Takashi Yano [Tue, 4 Feb 2020 12:25:52 +0000 (21:25 +0900)]
Cygwin: pty: Remove meaningless pointer increment.

- Since commit 73742508fcd8e994450582c1b7296c709da66764, a pointer
  increment in master write code which has no effect was remaining.

4 years agoCygwin: console: Revise color setting codes in legacy console mode.
Takashi Yano [Sat, 1 Feb 2020 04:28:39 +0000 (13:28 +0900)]
Cygwin: console: Revise color setting codes in legacy console mode.

- With this patch, foreground color and background color are allowed
  to be set simultaneously by 24 bit color escape sequence such as
  ESC[38;2;0;0;255;48;2;128;128;0m in legacy console mode.

4 years agoCygwin: fhandler_fifo.cc: add commentary
Ken Brown [Sat, 1 Feb 2020 21:36:31 +0000 (16:36 -0500)]
Cygwin: fhandler_fifo.cc: add commentary

4 years agoCygwin: fstat_helper: always use handle in call to get_file_attribute
Ken Brown [Thu, 30 Jan 2020 15:08:21 +0000 (10:08 -0500)]
Cygwin: fstat_helper: always use handle in call to get_file_attribute

When fhandler_base::fstat_helper is called, the handle h returned by
get_stat_handle() should be pc.handle() and should be safe to use for
getting the file information.  Previously, the call to
get_file_attribute() for FIFOs set the first argument to NULL instead
of h, thereby forcing the file to be opened for fetching the security
descriptor in get_file_sd().

4 years agoRISC-V: Use newlib nano specific libm.
Jim Wilson [Wed, 29 Jan 2020 22:46:17 +0000 (14:46 -0800)]
RISC-V: Use newlib nano specific libm.

The libm gamma functions use the _gamma_signgam field of the reentrant
structure, which changes offset with the --enable-newlib-reent-small
configure option, which means we need to use a newlib nano specific
version of libm in addition to libc in the nano.specs file.  Reported
by Keith Packard.  There is a riscv-gnu-toolchain patch that goes
along with this to create the new libm_nano.a file.

Signed-off-by: Jim Wilson <jimw@sifive.com>
4 years agoCygwin: document recent changes
Ken Brown [Wed, 29 Jan 2020 17:09:49 +0000 (12:09 -0500)]
Cygwin: document recent changes

4 years agoCygwin: AF_LOCAL: fix fcntl and dup if O_PATH is set
Ken Brown [Sat, 25 Jan 2020 18:08:00 +0000 (13:08 -0500)]
Cygwin: AF_LOCAL: fix fcntl and dup if O_PATH is set

Make fhandler_socket_local::dup and fhandler_socket_local::fcntl (a
new method) call fhandler_base::dup and fhandler_base::fcntl if O_PATH
is set.

We're viewing the socket as a disk file here, but there's no need to
implement the actions of fhandler_disk_file::dup and
fhandler_disk_file::fcntl, which do nothing useful in this case beyond
what the fhandler_base methods do.  (The extra actions are only useful
when I/O is going to be done on the file.)

4 years agoCygwin: AF_LOCAL::fstatvfs: use our handle if O_PATH is set
Ken Brown [Sat, 25 Jan 2020 12:45:10 +0000 (07:45 -0500)]
Cygwin: AF_LOCAL::fstatvfs: use our handle if O_PATH is set

If O_PATH is set, then the fhandler_socket_local object has a handle
that can be used for getting the statvfs information.  Use it by
calling fhandler_base::fstatvfs_by_handle.  Without this change,
fhandler_disk_file::fstatfvs would be called on a new fhandler_disk
object, which would then have to be opened.

4 years agoCygwin: AF_LOCAL: set appropriate errno on system calls
Ken Brown [Thu, 23 Jan 2020 20:11:15 +0000 (15:11 -0500)]
Cygwin: AF_LOCAL: set appropriate errno on system calls

If an AF_LOCAL socket is opened with O_PATH, all socket system calls
that take a file descriptor argument fail on the resulting descriptor.
Make sure that errno is set as on Linux for those calls that are
implemented on Linux.  In almost all cases it is ENOTSOCK.  There are
two exceptions:

- sockatatmark(3); errno is EBADF.

- bindresvport(3); errno is EAFNOSUPPORT if the second argument sin
  (of type struct sockaddr_in *) is non-NULL and satisfies
  sin->sin_family == AF_INET.

Finally, there are two BSD socket system calls implemented on Cygwin
but not Linux: getpeereid(3) and bindresvport_sa(3).  Set errno to
ENOTSOCK for these for consistency with the majority of the other
calls.

4 years agoCygwin: AF_LOCAL: allow opening with the O_PATH flag
Ken Brown [Thu, 23 Jan 2020 19:39:15 +0000 (14:39 -0500)]
Cygwin: AF_LOCAL: allow opening with the O_PATH flag

If that flag is not set, or if an attempt is made to open a different
type of socket, the errno is now EOPNOTSUPP instead of ENXIO.  This is
consistent with POSIX, starting with the 2016 edition.  Earlier
editions were silent on this issue.

Opening is done in a (new) fhandler_socket_local::open method by
calling fhandler_base::open_fs.

Also add a corresponding fhandler_socket_local::close method.

4 years agoUse remove-advertising-clause script to edit BSD licenses
Keith Packard [Tue, 28 Jan 2020 18:54:53 +0000 (10:54 -0800)]
Use remove-advertising-clause script to edit BSD licenses

This edits licenses held by Berkeley and NetBSD, both of which
have removed the advertising requirement from their licenses.

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agoRevert "newlib: fix fseek optimization with SEEK_CUR"
Corinna Vinschen [Wed, 29 Jan 2020 17:47:33 +0000 (18:47 +0100)]
Revert "newlib: fix fseek optimization with SEEK_CUR"

This reverts commit 59362c80e3a02c011fd0ef3d7f07a20098d2a9d5.

This breaks gnulib's autoconf test for POSIX compatibility of
fflush/fseek.  After fflush/fseek, ftello and lseek are out of
sync, with lseek having the wrong offset.  This breaks backward
compatibility with Cygwin applications.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: stat: fix st_mode of fifos
Corinna Vinschen [Wed, 29 Jan 2020 14:14:05 +0000 (15:14 +0100)]
Cygwin: stat: fix st_mode of fifos

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: remove CYGWIN=dos_file_warning option
Corinna Vinschen [Tue, 28 Jan 2020 20:59:22 +0000 (21:59 +0100)]
Cygwin: remove CYGWIN=dos_file_warning option

This option has been disabled long ago and nobody missed it.
Removing drops a bit of unneeded code

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: FIFO: fstatvfs: use our handle if O_PATH is set
Ken Brown [Fri, 24 Jan 2020 20:09:03 +0000 (15:09 -0500)]
Cygwin: FIFO: fstatvfs: use our handle if O_PATH is set

If O_PATH is set, then the fhandler_fifo object has a handle that can
be used for getting the statvfs information.  Use it by calling
fhandler_base::fstatvfs_by_handle.  Before this change,
fhandler_disk_file::fstatfvs was called on a new fhandler_disk_file
object, which would then have to be opened.

4 years agoCygwin: fhandler_disk_file::fstatvfs: refactor
Ken Brown [Fri, 24 Jan 2020 21:02:57 +0000 (16:02 -0500)]
Cygwin: fhandler_disk_file::fstatvfs: refactor

Define a new method fhandler_base::fstatvfs_by_handle, extracted from
fhandler_disk_file::fstatvfs, which gets the statvfs information when
a handle is available.

This will be used in future commits for special files that have been
opened with O_PATH.

4 years agoCygwin: fhandler_base::fstat_fs: accomodate the O_PATH flag
Ken Brown [Fri, 24 Jan 2020 19:54:47 +0000 (14:54 -0500)]
Cygwin: fhandler_base::fstat_fs: accomodate the O_PATH flag

Treat a special file opened with O_PATH the same as a regular file,
i.e., use its handle to get the stat information.

Before this change, fstat_fs opened the file a second time, with the
wrong flags and without closing the existing handle.  A side effect
was to change the openflags of the file, possibly causing further
system calls to fail.

Currently this change only affects FIFOs, but it will affect
AF_LOCAL/AF_UNIX sockets too once they support O_PATH.

4 years agoCygwin: symlink/mknod: fix ACL handling
Corinna Vinschen [Tue, 28 Jan 2020 16:57:50 +0000 (17:57 +0100)]
Cygwin: symlink/mknod: fix ACL handling

mknod32 actually creates a path_conv, just to call mknod_worker
with a win32 path.  This doesn't only require to create path_conv
twice, it also breaks permissions on filesystems supporting ACLs.

Fix this by passing the path_conv created in the caller down to
symlink_worker.  Also, while at it, simplify the handling of trailing
slashes and move it out of symlink_worker.  Especially use the
new PC_SYM_NOFOLLOW_DIR flag to avoid fiddeling with creating
a new path copy without the trailing slash.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: path_conv: add PC_SYM_NOFOLLOW_DIR flag
Corinna Vinschen [Tue, 28 Jan 2020 16:40:40 +0000 (17:40 +0100)]
Cygwin: path_conv: add PC_SYM_NOFOLLOW_DIR flag

Usually a trailing slash requires to follow an existing symlink,
even with PC_SYM_NOFOLLOW.  The reason is that "foo/" is equivalent
to "foo/." so the symlink is in fact not the last path component,
"." is.  This is default for almost all scenarios.

PC_SYM_NOFOLLOW_DIR now allows the caller to request not to
follow the symlink even if a trailing slash is given.  This can
be used in callers to perform certain functions Linux-compatible.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: add short comments to path_conv options
Corinna Vinschen [Tue, 28 Jan 2020 15:10:13 +0000 (16:10 +0100)]
Cygwin: add short comments to path_conv options

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: drop __stdcall from close_all_files
Corinna Vinschen [Tue, 28 Jan 2020 14:33:53 +0000 (15:33 +0100)]
Cygwin: drop __stdcall from close_all_files

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: move chmod_device declaration to winsup.h
Corinna Vinschen [Tue, 28 Jan 2020 14:33:05 +0000 (15:33 +0100)]
Cygwin: move chmod_device declaration to winsup.h

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: pty: Revise code waiting for forwarding again.
Takashi Yano [Mon, 27 Jan 2020 11:22:24 +0000 (20:22 +0900)]
Cygwin: pty: Revise code waiting for forwarding again.

- After commit 6cc299f0e20e4b76f7dbab5ea8c296ffa4859b62, outputs of
  cygwin programs which call both printf() and WriteConsole() are
  frequently distorted. This patch fixes the issue.

4 years agoCygwin: console: Share readahead buffer within the same process.
Takashi Yano [Mon, 27 Jan 2020 12:14:32 +0000 (21:14 +0900)]
Cygwin: console: Share readahead buffer within the same process.

- The cause of the problem reported in
  https://www.cygwin.com/ml/cygwin/2020-01/msg00220.html is that the
  chars input before dup() cannot be read from the new file descriptor.
  This is because the readahead buffer (rabuf) in the console is newly
  created by dup(), and does not inherit from the parent. This patch
  fixes the issue.

4 years agoCygwin: FIFO: tweak fcntl and dup when O_PATH is set
Ken Brown [Thu, 23 Jan 2020 16:31:05 +0000 (16:31 +0000)]
Cygwin: FIFO: tweak fcntl and dup when O_PATH is set

fhandler_fifo::fcntl and fhandler_fifo::dup now call the corresponding
fhandler_base methods if the FIFO was opened with the O_PATH flag.

4 years agoCygwin: re-implement fhandler_fifo::open with O_PATH
Ken Brown [Thu, 23 Jan 2020 16:31:04 +0000 (16:31 +0000)]
Cygwin: re-implement fhandler_fifo::open with O_PATH

If the O_PATH flag is set, fhandler_fifo::open now simply calls
fhandler_base::open_fs.

The previous attempt to handle O_PATH in commit aa55d22c, "Cygwin:
honor the O_PATH flag when opening a FIFO", fixed a hang but otherwise
didn't do anything useful.

4 years agoCygwin: device_access_denied: return false if O_PATH is set
Ken Brown [Thu, 23 Jan 2020 16:31:04 +0000 (16:31 +0000)]
Cygwin: device_access_denied: return false if O_PATH is set

If O_PATH is set in the flags argument of
fhandler_base::device_access_denied, return false.  No
read/write/execute access should be required in this case.

Previously, the call to device_access_denied in open(2) would lead to
an attempt to open the file with read access even if the O_PATH flag
was set.

4 years agoCygwin: Bump DLL version to 3.1.3
Corinna Vinschen [Fri, 24 Jan 2020 09:17:31 +0000 (10:17 +0100)]
Cygwin: Bump DLL version to 3.1.3

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agofhandler_proc.cc:format_proc_cpuinfo add rdpru flag
Brian Inglis [Thu, 23 Jan 2020 09:06:27 +0000 (02:06 -0700)]
fhandler_proc.cc:format_proc_cpuinfo add rdpru flag

rdpru flag is cpuid xfn 80000008 ebx bit 4 added in linux 5.5;
see AMD64 Architecture Programmer's Manual Volume 3:
General-Purpose and System Instructions
https://www.amd.com/system/files/TechDocs/24594.pdf#page=329
and elsewhere in that document

4 years agoCygwin: pty: Remove close() call just before reopening slave.
Takashi Yano [Thu, 23 Jan 2020 11:34:25 +0000 (20:34 +0900)]
Cygwin: pty: Remove close() call just before reopening slave.

- After commit da4ee7d60b9ff0bcdc081609a4467adb428d58e6, the issue
  reported in https://www.cygwin.com/ml/cygwin/2020-01/msg00209.html
  occurs. This patch fixes the issue.

4 years agoadd pseudo console fixes to release text newlib-3.3.0
Corinna Vinschen [Wed, 22 Jan 2020 10:05:51 +0000 (11:05 +0100)]
add pseudo console fixes to release text

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: pty: Introduce disable_pcon in environment CYGWIN.
Takashi Yano [Tue, 21 Jan 2020 13:25:13 +0000 (22:25 +0900)]
Cygwin: pty: Introduce disable_pcon in environment CYGWIN.

- For programs which does not work properly with pseudo console,
  disable_pcon in environment CYGWIN is introduced. If disable_pcon
  is set, pseudo console support is disabled.

4 years agoCygwin: pty: Fix reopening slave in push_to_pcon_screenbuffer().
Takashi Yano [Tue, 21 Jan 2020 14:41:44 +0000 (23:41 +0900)]
Cygwin: pty: Fix reopening slave in push_to_pcon_screenbuffer().

- For programs compiled with -mwindows option, reopening slave is
  needed in push_to_pcon_screenbuffer(), however, it was not at
  appropriate place. This causes the problem reported in
  https://www.cygwin.com/ml/cygwin/2020-01/msg00161.html. This
  patch fixes the issue.

4 years agoBump up newlib release to 3.3.0
Jeff Johnston [Tue, 21 Jan 2020 20:17:43 +0000 (15:17 -0500)]
Bump up newlib release to 3.3.0

4 years agoChange the reent verify check option to document disabling it
Jeff Johnston [Tue, 21 Jan 2020 20:12:34 +0000 (15:12 -0500)]
Change the reent verify check option to document disabling it

- also change the handling of default_newlib_reent_check_verify to
  be the same as other default variables in configure.host
- regenerate newlib/configure

4 years agoDefault newlib_reent_check_verify to yes in configure.host
Jeff Johnston [Tue, 21 Jan 2020 19:54:49 +0000 (14:54 -0500)]
Default newlib_reent_check_verify to yes in configure.host

4 years agoCygwin: pty: Revise code waiting for forwarding by master_fwd_thread.
Takashi Yano [Tue, 21 Jan 2020 02:22:02 +0000 (11:22 +0900)]
Cygwin: pty: Revise code waiting for forwarding by master_fwd_thread.

- Though this rarely happens, sometimes the first printing of non-
  cygwin process does not displayed correctly. To fix this issue,
  the code for waiting for forwarding by master_fwd_thread is revised.

4 years agoriscv: Map between ieeefp.h exception bits and RISC-V FCSR bits
Keith Packard [Tue, 21 Jan 2020 06:46:36 +0000 (22:46 -0800)]
riscv: Map between ieeefp.h exception bits and RISC-V FCSR bits

If we had architecture-specific exception bits, we could just set them
to match the processor, but instead ieeefp.h is shared by all targets
so we need to map between the public values and the register contents.

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agoriscv: Add 'break' statements to fpsetround switch
Keith Packard [Tue, 21 Jan 2020 06:46:35 +0000 (22:46 -0800)]
riscv: Add 'break' statements to fpsetround switch

This makes the fpsetround function actually do something rather than
just return -1 due to the default 'fall-through' behavior of the switch
statement.

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agoriscv: Use current pseudo-instructions to access the FCSR register
Keith Packard [Tue, 21 Jan 2020 06:46:34 +0000 (22:46 -0800)]
riscv: Use current pseudo-instructions to access the FCSR register

Use fscsr and frcsr to store and read the FCSR register instead of
fssr and frsr.

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agoCygwin: document recent changes
Ken Brown [Fri, 17 Jan 2020 15:52:54 +0000 (10:52 -0500)]
Cygwin: document recent changes

4 years agoCygwin: fstatat, fchownat: support the AT_EMPTY_PATH flag
Ken Brown [Fri, 27 Dec 2019 22:38:32 +0000 (17:38 -0500)]
Cygwin: fstatat, fchownat: support the AT_EMPTY_PATH flag

Following Linux, allow the pathname argument to be an empty string if
the AT_EMPTY_PATH flag is specified.  In this case the dirfd argument
can refer to any type of file, not just a directory, and the call
operates on that file.  In particular, dirfd can refer to a symlink
that was opened with O_PATH | O_NOFOLLOW.

4 years agoCygwin: readlinkat: allow pathname to be empty
Ken Brown [Fri, 27 Dec 2019 22:17:35 +0000 (17:17 -0500)]
Cygwin: readlinkat: allow pathname to be empty

Following Linux, allow the pathname argument to be an empty string,
provided the dirfd argument refers to a symlink opened with
O_PATH | O_NOFOLLOW.  The readlinkat call then operates on that
symlink.

4 years agoCygwin: allow opening a symlink with O_PATH | O_NOFOLLOW
Ken Brown [Fri, 27 Dec 2019 16:43:58 +0000 (11:43 -0500)]
Cygwin: allow opening a symlink with O_PATH | O_NOFOLLOW

Up to now, opening a symlink with O_NOFOLLOW fails with ELOOP.
Following Linux, allow this to succeed if O_PATH is also specified.

4 years agoCygwin: normalize_win32_path: allow drive without trailing backslash
Ken Brown [Wed, 15 Jan 2020 15:49:21 +0000 (10:49 -0500)]
Cygwin: normalize_win32_path: allow drive without trailing backslash

Commit 283cb372, "Cygwin: normalize_win32_path: improve error
checking", required a prefix '\\?\' or '\??\' in the source path to be
followed by 'UNC\' or 'X:\', where X is a drive letter.  That was too
restrictive, since it disallowed the paths '\\?\X: and '\??\X:'.  This
caused problems when a user tried to use the root of a drive as the
Cygwin installation root, as reported here:

  https://cygwin.com/ml/cygwin/2020-01/msg00111.html

Modify the requirement so that '\??\X:' and '\\?\X:' are now allowed
as source paths, without a trailing backslash.

4 years agoCygwin: pty: Fix state mismatch caused in octave gui.
Takashi Yano [Thu, 16 Jan 2020 11:04:47 +0000 (20:04 +0900)]
Cygwin: pty: Fix state mismatch caused in octave gui.

- In octave gui, sometimes state mismatch between real pty state
  and state variable occurs. For example, this occurs when 'ls'
  command is executed in octave gui. This patch fixes the issue.

4 years agoCygwin: pty: Set console code page only if pseudo console is enabled.
Takashi Yano [Fri, 10 Jan 2020 11:47:12 +0000 (20:47 +0900)]
Cygwin: pty: Set console code page only if pseudo console is enabled.

- Input UTF-8 chars are garbled in ConEmu with cygwin connector if
  the environment does not support pseudo console. This patch fixes
  the issue.

4 years agoCygwin: pty: Disable FreeConsole() on close for non cygwin process.
Takashi Yano [Fri, 10 Jan 2020 11:46:26 +0000 (20:46 +0900)]
Cygwin: pty: Disable FreeConsole() on close for non cygwin process.

- After commit e1a0775dc0545b5f9c81b09a327fc110c538b7b4, the problem
  reported in https://www.cygwin.com/ml/cygwin/2020-01/msg00093.html
  occurs. For Gnu scren and tmux, calling FreeConsole() on pty close
  is necessary. However, if FreeConsole() is called, cygwin setup
  with '-h' option does not work. Therefore, the commit
  e1a0775dc0545b5f9c81b09a327fc110c538b7b4 delayed closing pty.
  This is the cause of the problem above. Now, instead of delaying
  pty close, FreeConsole() is not called if the process is non cygwin
  processes such as cygwin setup.

4 years agoCygwin: console: Add code to restore console mode on close.
Takashi Yano [Thu, 2 Jan 2020 13:17:16 +0000 (22:17 +0900)]
Cygwin: console: Add code to restore console mode on close.

- The console with 24bit color support has a problem that console
  mode is changed if cygwin process is executed in cmd.exe which
  started in cygwin shell. For example, cursor keys become not
  working if bash -> cmd -> true are executed in this order.
  This patch fixes the issue.

4 years agoCygwin: console: Add workaround for broken CSI3J in Win10 1809.
Takashi Yano [Tue, 14 Jan 2020 01:53:59 +0000 (10:53 +0900)]
Cygwin: console: Add workaround for broken CSI3J in Win10 1809.

- In Win10 1809, the cursor position sometimes goes out of screen
  by clear command in console. This seems to be caused by escape
  sequence CSI3J (ESC[3J). This happens only for 1809. This patch
  is a workaround for the issue.

4 years agoCygwin: console: Disable xterm mode for non cygwin process only.
Takashi Yano [Tue, 14 Jan 2020 02:09:42 +0000 (11:09 +0900)]
Cygwin: console: Disable xterm mode for non cygwin process only.

- Special function keys such as arrow keys or function keys do not
  work in ConEmu with cygwin-connector after commit
  6a06c6bc8f8492ea09aa3ae180fe94e4ac265611. This patch fixes the
  issue.

4 years agoCygwin: pty: Add missing CloseHandle() calls.
Takashi Yano [Tue, 14 Jan 2020 02:50:04 +0000 (11:50 +0900)]
Cygwin: pty: Add missing CloseHandle() calls.

- PTY code which support pseudo console has a problem that causes
  handle leaks. Four of these are bug in pty code, and the other
  one seems to be a bug of Windows10. ClosePseudoConsole() fails
  to close one internal handle. This patch fixes the issue.

4 years agoCygwin: pty: Fix the issue regarding open and close multiple PTYs.
Takashi Yano [Tue, 14 Jan 2020 04:10:54 +0000 (13:10 +0900)]
Cygwin: pty: Fix the issue regarding open and close multiple PTYs.

- If two PTYs are opened in the same process and the first one
  is closed, the helper process for the first PTY remains running.
  This patch fixes the issue.

4 years agoCygwin: select: Speed up select() call for pty, pipe and fifo.
Takashi Yano [Mon, 6 Jan 2020 14:38:34 +0000 (23:38 +0900)]
Cygwin: select: Speed up select() call for pty, pipe and fifo.

- The slowing down issue of X11 forwarding using ssh -Y, reported
  in https://www.cygwin.com/ml/cygwin/2019-12/msg00295.html,
  is due to the change of select() code for pty in the commit
  915fcd0ae8d83546ce135131cd25bf6795d97966. cygthread::detach()
  takes at most about 10msec because Sleep() is used in the thread.
  For this issue, this patch uses cygwait() instead of Sleep() and
  introduces an event to abort the wait. For not only pty, but pipe
  and fifo also have the same problem potentially, so this patch
  applies same strategy to them as well.

4 years agoCygwin: console: Make suspending process work properly.
Takashi Yano [Sun, 5 Jan 2020 13:25:55 +0000 (22:25 +0900)]
Cygwin: console: Make suspending process work properly.

- After commit f4b47827cf87f055687a0c52a3485d42b3e2b941, suspending
  process by Ctrl-Z does not work in console and results in hang up.
  This patch fixes the issue.

4 years agoCygwin: pty: Revise the code for setting code page of pseudo console.
Takashi Yano [Wed, 1 Jan 2020 06:50:36 +0000 (15:50 +0900)]
Cygwin: pty: Revise the code for setting code page of pseudo console.

- Fix the problem which overrides the code page setting, reported
  in https://www.cygwin.com/ml/cygwin/2019-12/msg00292.html.

This page took 0.065331 seconds and 5 git commands to generate.