]> sourceware.org Git - newlib-cygwin.git/log
newlib-cygwin.git
4 years agofhandler_proc.cc(format_proc_cpuinfo): use _small_sprintf %X for microcode
Brian Inglis [Tue, 4 Aug 2020 06:51:56 +0000 (00:51 -0600)]
fhandler_proc.cc(format_proc_cpuinfo): use _small_sprintf %X for microcode

microcode is unsigned long long, printed by _small_sprintf using %x;
Cygwin32 used last 4 bytes of microcode for next field MHz, printing 0;
use correct _small_sprintf format %X to print microcode, producing
correct MHz value under Cygwin32

4 years agofhandler_proc.cc(format_proc_cpuinfo): add SERIALIZE instruction flag
Brian Inglis [Mon, 3 Aug 2020 16:22:46 +0000 (10:22 -0600)]
fhandler_proc.cc(format_proc_cpuinfo): add SERIALIZE instruction flag

CPUID 7:0 EDX[14] serialize added in linux-next 5.8 by Ricardo Neri-Calderon:
The Intel architecture defines a set of Serializing Instructions (a
detailed definition can be found in Vol.3 Section 8.3 of the Intel "main"
manual, SDM). However, these instructions do more than what is required,
have side effects and/or may be rather invasive. Furthermore, some of
these instructions are only available in kernel mode or may cause VMExits.
Thus, software using these instructions only to serialize execution (as
defined in the manual) must handle the undesired side effects.

As indicated in the name, SERIALIZE is a new Intel architecture
Serializing Instruction. Crucially, it does not have any of the mentioned
side effects. Also, it does not cause VMExit and can be used in user mode.

This new instruction is currently documented in the latest "extensions"
manual (ISE). It will appear in the "main" manual in the future.

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/arch/x86/include/asm/cpufeatures.h?id=85b23fbc7d88f8c6e3951721802d7845bc39663d

4 years agolibm/math: Use __math_xflow in obsolete math code [v2]
Keith Packard [Thu, 30 Jul 2020 23:41:05 +0000 (16:41 -0700)]
libm/math: Use __math_xflow in obsolete math code [v2]

C compilers may fold const values at compile time, so expressions
which try to elicit underflow/overflow by performing simple
arithemetic on suitable values will not generate the required
exceptions.

Work around this by replacing code which does these arithmetic
operations with calls to the existing __math_xflow functions that are
designed to do this correctly.

Signed-off-by: Keith Packard <keithp@keithp.com>
----

v2:
libm/math: Pass sign to __math_xflow instead of muliplying result

4 years agoselect.h: update FD macros to latest FreeBSD, fix type conversion warning
Corinna Vinschen [Mon, 3 Aug 2020 10:40:43 +0000 (12:40 +0200)]
select.h: update FD macros to latest FreeBSD, fix type conversion warning

Compiling

#include <sys/select.h>
void f(int X)
{
  fd_set set;
  FD_ZERO(&set);
  FD_SET(X,&set);
  FD_CLR(X+1,&set);
  (void)FD_ISSET(X+2,&set);
}

results in plenty of gcc warnings when compiled with
-Wconversion -Wsign-conversion:

  fds.c:7:2: warning: conversion to ‘long unsigned int’ from ‘int’ may
    FD_SET(X,&set);
    ^~~~~~
  [...]

The unsigned NFDBITS macro combined with the signed 1L constant
are causing lots of implicit signed/unsigned type conversions.

Fix this by updating the FD_* macro code to the latest from FreeBSD
and adding an (int) cast to _NFDBITS.

As a side-effect, this fixes the visibility of NFDBITS and
fds_bits (only if __BSD_VISIBLE).

This also eliminates the old, outdated fd_set workaround.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: posix_spawn: add Cygwin-specific code fixing process synchronisation
Corinna Vinschen [Sat, 1 Aug 2020 19:35:58 +0000 (21:35 +0200)]
Cygwin: posix_spawn: add Cygwin-specific code fixing process synchronisation

Newlib's posix_spawn has been taken from FreeBSD.  The code relies on
BSD-specific behaviour of vfork, namely the fact that vfork blocks
the parent until the child exits or calls execve as well as the fact
that the child shares parent memory in non-COW mode.

This behaviour can't be emulated by Cygwin.  Cygwin's vfork is
equivalent to fork.  This is POSIX-compliant, but it's lacking BSD's
vfork ingrained synchronization of the parent to wait for the child
calling execve, or the chance to just write a variable and the parent
will see the result.

So this requires a Cygwin-specific solution.  The core function of
posix_spawn, called do_posix_spawn is now implemented twice, once using
the BSD method, and once for Cygwin using Windows synchronization under
the hood waiting for the child to call execve and signalling errors
upstream.  The Windows specifics are hidden inside Cygwin, so newlib
only calls internal Cygwin functions.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: Speed up dumper
Jon Turney [Mon, 6 Jul 2020 14:10:40 +0000 (15:10 +0100)]
Cygwin: Speed up dumper

Stop after we've written the dump in response to the initial breakpoint
EXCEPTION_DEBUG_EVENT we recieve for attaching to the process.

(rather than bogusly sitting there for 20 seconds waiting for more debug
events from a stopped process after we've already written the dump).

4 years agoCygwin: Remove synchronization event from dumper
Jon Turney [Mon, 6 Jul 2020 14:02:39 +0000 (15:02 +0100)]
Cygwin: Remove synchronization event from dumper

The use of the 'cygwin_error_start_event' for synchronization with
dumper was removed from the DLL in commit 8abeff1e (April 2001).

4 years agoCygwin: Add --nokill dumper option
Jon Turney [Mon, 6 Jul 2020 13:51:32 +0000 (14:51 +0100)]
Cygwin: Add --nokill dumper option

Add --nokill option to dumper, for compatibility with minidumper, and to
assist with testing.

4 years agoarm: Fix include to avoid undefined reference
Sebastian Huber [Wed, 29 Jul 2020 14:24:13 +0000 (16:24 +0200)]
arm: Fix include to avoid undefined reference

ld: libm.a(lib_a-fesetenv.o): in function `fesetenv':
newlib/libm/machine/arm/fesetenv.c:38: undefined reference to `vmsr_fpscr'

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
4 years agoarm: Split fenv.c into multiple files
Eshan dhawan [Thu, 23 Jul 2020 19:06:46 +0000 (00:36 +0530)]
arm: Split fenv.c into multiple files

Use the already existing stub files if possible.  These files are
necessary to override the stub implementation with the machine-specific
implementation through the build system.

Reviewed-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
4 years agoarm: Fix fenv support
Eshan dhawan [Sat, 18 Jul 2020 19:52:53 +0000 (01:22 +0530)]
arm: Fix fenv support

The previous fenv support for ARM used the soft-float implementation of
FreeBSD.  Newlib uses the one from libgcc by default.  They are not
compatible.  Having an GCC incompatible soft-float fenv support in
Newlib makes no sense.  A long-term solution could be to provide a
libgcc compatible soft-float support.  This likely requires changes in
the GCC configuration.  For now, provide a stub implementation for
soft-float multilibs similar to RISC-V.

Move implementation to one file and delete now unused files.  Hide
implementation details.  Remove function parameter names from header
file to avoid name conflicts.

Provide VFP support if __SOFTFP__ is not defined like glibc.

Reviewed-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
4 years agoCygwin: Decorate NtQueryVirtualMemory() to fix 32-bit build
Jon Turney [Tue, 28 Jul 2020 12:25:00 +0000 (13:25 +0100)]
Cygwin: Decorate NtQueryVirtualMemory() to fix 32-bit build

Decorate NtQueryVirtualMemory() with NTAPI (for stdcall) to fix 32-bit
build.

Reported-by: Takashi Yano <takashi.yano@nifty.ne.jp>
4 years agoriscv: fix integer wraparound in memcpy
PkmX via Newlib [Fri, 24 Jul 2020 11:07:45 +0000 (19:07 +0800)]
riscv: fix integer wraparound in memcpy

This patch fixes a bug in RISC-V's memcpy implementation where an
integer wraparound occurs when src + size < 8 * sizeof(long), causing
the word-sized copy loop to be incorrectly entered.

Signed-off-by: Chih-Mao Chen <cmchen@andestech.com>
4 years agofhandler_proc.cc(format_proc_cpuinfo): add flags and TLB size
Brian Inglis [Wed, 22 Jul 2020 19:22:54 +0000 (13:22 -0600)]
fhandler_proc.cc(format_proc_cpuinfo): add flags and TLB size

update to Linux-next 5.8 order fields and flags:
add amd_dcm, arch_lbr, arch_perfmon, art, cpuid, extd_apicid, ibpb,
ibrs, ibrs_enhanced, nonstop_tsc_s3, nopl, rep_good, ring3mwait, ssbd,
stibp, tsc_known_freq, tsc_reliable, xtopology flags;
add TLB size line;
add ftuprint macro for feature test unconditional flag print;
add commented out flags requiring CR or MSR access in print order with
comment explaining issue;
make cpuid leaf numbers consistent 8 hex digits for searching

4 years agoCygwin: mmap: Remove AT_ROUND_TO_PAGE workaround
Corinna Vinschen [Mon, 20 Jul 2020 18:55:43 +0000 (20:55 +0200)]
Cygwin: mmap: Remove AT_ROUND_TO_PAGE workaround

It's working on 32 bit OSes only anyway. It even fails on WOW64.

Drop unsupported NtMapViewOfSection flags.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: mmap: document recent bugfix
Ken Brown [Tue, 21 Jul 2020 21:57:37 +0000 (17:57 -0400)]
Cygwin: mmap: document recent bugfix

4 years agoCygwin: Use MEMORY_WORKING_SET_EX_INFORMATION in dumper
Jon Turney [Tue, 7 Jul 2020 19:54:27 +0000 (20:54 +0100)]
Cygwin: Use MEMORY_WORKING_SET_EX_INFORMATION in dumper

Use the (undocumented) MEMORY_WORKING_SET_EX_INFORMATION in dumper to
determine if a MEM_IMAGE region is unsharable, and hence has been
modified.

After this, we will end up dumping memory regions where:

- state is MEM_COMMIT (i.e. is not MEM_RESERVE or MEM_FREE), and
-- type is MEM_PRIVATE and protection allows reads (i.e. not a guardpage), or
-- type is MEM_IMAGE and attribute is non-sharable (i.e. it was WC, got
   written to, and is now a RW copy)

4 years agoCygwin: Don't dump non-writable image regions
Jon Turney [Sun, 5 Jul 2020 13:42:59 +0000 (14:42 +0100)]
Cygwin: Don't dump non-writable image regions

After this, we will end up dumping memory regions where:

- state is MEM_COMMIT (i.e. is not MEM_RESERVE or MEM_FREE), and
-- type is MEM_PRIVATE and protection allows reads (i.e. not a guardpage), or
-- type is MEM_IMAGE and protection allows writes

Making this decision based on the current protection isn't 100% correct,
because it may have been changed using VirtualProtect().  But we don't
know how to determine if a region is shareable.

(As a practical matter, anything which gets us the stack (MEM_PRIVATE)
and .data/.bss (RW MEM_IMAGE) is going to be enough for 99% of cases)

4 years agoCygwin: Drop excluded regions list from dumper
Jon Turney [Sat, 4 Jul 2020 14:57:31 +0000 (15:57 +0100)]
Cygwin: Drop excluded regions list from dumper

Drop excluded regions, now it's always empty

4 years agoCygwin: Remove reading of PE for section flags from dumper
Jon Turney [Sat, 4 Jul 2020 14:51:14 +0000 (15:51 +0100)]
Cygwin: Remove reading of PE for section flags from dumper

4 years agoCygwin: Show details of all memory regions in dumper debug output
Jon Turney [Wed, 1 Jul 2020 15:08:59 +0000 (16:08 +0100)]
Cygwin: Show details of all memory regions in dumper debug output

4 years agoCygwin: mmap: constify pagesize throughout
Corinna Vinschen [Mon, 20 Jul 2020 15:53:29 +0000 (17:53 +0200)]
Cygwin: mmap: constify pagesize throughout

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: mmap: fix mapping beyond EOF on 64 bit
Ken Brown [Mon, 20 Jul 2020 12:59:09 +0000 (08:59 -0400)]
Cygwin: mmap: fix mapping beyond EOF on 64 bit

Commit 605bdcd410384dda6db66b9b8cd19e863702e1bb enabled mapping beyond
EOF in 64 bit environments.  But the variable 'orig_len' did not get
rounded up to a multiple of 64K.  This rounding was done on 32 bit
only.  Fix this by rounding up orig_len on 64 bit, in the same place
where 'len' is rounded up.

Rounding up is needed to make sigbus_page_len a multiple of the
allocation granularity.

In addition, failing to round up could cause orig_len to be smaller
than len.  Since these are both unsigned values, the statement
'orig_len -= len' could then cause orig_len to be huge, and mmap would
fail with errno EFBIG.

I observed this failure while debugging the problem reported in

  https://sourceware.org/pipermail/cygwin/2020-July/245557.html.

The failure can be seen by running the test case in that report under
gdb or strace.

4 years agoCygwin: pty: Fix a bug on redirecting something to /dev/pty*.
Takashi Yano via Cygwin-patches [Sat, 18 Jul 2020 04:48:47 +0000 (13:48 +0900)]
Cygwin: pty: Fix a bug on redirecting something to /dev/pty*.

- After commit 0365031ce1347600d854a23f30f1355745a1765c, key input
  becomes not working by following steps.
   1) Start cmd.exe in mintty.
   2) Open another mintty.
   3) Execute "echo AAA > /dev/pty*" (pty* is the pty opened in 1.)
  This patch fixes the issue.

4 years agoCygwin: sockets: Rearrange check for connect failure
Corinna Vinschen [Mon, 20 Jul 2020 07:49:07 +0000 (09:49 +0200)]
Cygwin: sockets: Rearrange check for connect failure

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: FIFO: document recent fixes
Ken Brown [Thu, 16 Jul 2020 20:21:03 +0000 (16:21 -0400)]
Cygwin: FIFO: document recent fixes

4 years agoCygwin: FIFO: update commentary
Ken Brown [Sat, 11 Jul 2020 19:43:44 +0000 (15:43 -0400)]
Cygwin: FIFO: update commentary

4 years agoCygwin: FIFO: clean up
Ken Brown [Wed, 15 Jul 2020 20:58:18 +0000 (16:58 -0400)]
Cygwin: FIFO: clean up

Remove the fhandler_fifo::get_me method, which is no longer used.
Make the methods get_owner, set_owner, owner_lock, and owner_unlock
private.

4 years agoCygwin: FIFO: allow take_ownership to be interrupted
Ken Brown [Mon, 13 Jul 2020 11:01:57 +0000 (07:01 -0400)]
Cygwin: FIFO: allow take_ownership to be interrupted

Use cygwait in take_ownership to allow interruption while waiting to
become owner.  Return the cygwait return value or a suitable value to
indicate an error.

raw_read now checks the return value and acts accordingly.

4 years agoCygwin: fhandler_fifo::take_ownership: don't set event unnecessarily
Ken Brown [Sun, 12 Jul 2020 22:11:38 +0000 (18:11 -0400)]
Cygwin: fhandler_fifo::take_ownership: don't set event unnecessarily

Don't set update_needed_evt if there's currently no owner.  This will
cause unnecessary churn once I'm the owner and am listening for
connections.

4 years agoCygwin: FIFO: add missing lock
Ken Brown [Wed, 15 Jul 2020 20:13:47 +0000 (16:13 -0400)]
Cygwin: FIFO: add missing lock

4 years agoCygwin: FIFO: make certain errors non-fatal
Ken Brown [Sat, 11 Jul 2020 19:20:45 +0000 (15:20 -0400)]
Cygwin: FIFO: make certain errors non-fatal

If update_my_handlers fails to duplicate one or more handles, just
mark the corresponding handlers as being in an error state.

But if update_my_handlers is unable to open the process of the
previous owner, it's likely that something serious has gone wrong, so
we continue to make that a fatal error.

4 years agoCygwin: FIFO: fix indentation
Ken Brown [Sat, 11 Jul 2020 18:55:39 +0000 (14:55 -0400)]
Cygwin: FIFO: fix indentation

4 years agoCygwin: FIFO: improve taking ownership in fifo_reader_thread
Ken Brown [Sat, 11 Jul 2020 18:52:55 +0000 (14:52 -0400)]
Cygwin: FIFO: improve taking ownership in fifo_reader_thread

When a reader takes ownership in fifo_reader_thread, it now goes
directly to the part of the main loop that listens for a connection.
Previously it went back to the beginning of the loop.

Also, if the reader has to delay taking ownership because the previous
owner has not finished updating the shared fifo_client handlers, it
now checks to see if cancel_evt has been set.  Previously it might
have had to spin its wheels unnecessarily only to eventually find that
its thread had been canceled.

4 years agoCygwin: FIFO: reduce I/O interleaving
Ken Brown [Sat, 11 Jul 2020 18:34:24 +0000 (14:34 -0400)]
Cygwin: FIFO: reduce I/O interleaving

Add a bool member 'last_read' to the fifo_client_handler structure,
which is set to true on a successful read.  This is used by raw_read
as follows.

When raw_read is called, it first locates the writer (if any) for
which last_read is true.  raw_read tries to read from that writer and
returns if there is input available.  Otherwise, it proceeds to poll
all the writers, as before.

The effect of this is that if a writer writes some data that is only
partially read, the next attempt to read will continue to read from
the same writer.  This should reduce the interleaving of output from
different writers.

4 years agoCygwin: fhandler_fifo::hit_eof: improve reliability
Ken Brown [Sat, 11 Jul 2020 18:23:11 +0000 (14:23 -0400)]
Cygwin: fhandler_fifo::hit_eof: improve reliability

Use the writer count introduced in the previous commit to help detect
EOF.  Drop the maybe_eof method, which is no longer needed.

4 years agoCygwin: FIFO: keep a writer count in shared memory
Ken Brown [Sat, 11 Jul 2020 18:05:23 +0000 (14:05 -0400)]
Cygwin: FIFO: keep a writer count in shared memory

When a reader opens, it needs to block if there are no writers open
(unless is is opened with O_NONBLOCK).  This is easy for the first
reader to test, since it can just wait for a writer to signal that it
is open (via the write_ready event).  But when a second reader wants
to open, all writers might have closed.

To check this, use a new '_nwriters' member of struct fifo_shmem_t,
which keeps track of the number of open writers.  This should be more
reliable than the previous method.

Add nwriters_lock to control access to shmem->_nwriters, and remove
reader_opening_lock, which is no longer needed.

Previously only readers had access to the shared memory, but now
writers access it too so that they can increment _nwriters during
open/dup/fork/exec and decrement it during close.

Add an optional 'only_open' argument to create_shmem for use by
writers, which only open the shared memory rather than first trying to
create it.  Since writers don't need to access the shared memory until
they have successfully connected to a pipe instance, they can safely
assume that a reader has already created the shared memory.

For debugging purposes, change create_shmem to return 1 instead of 0
when a reader successfully opens the shared memory after finding that
it had already been created.

Remove check_write_ready_evt, write_ready_ok_evt, and
check_write_ready(), which are no longer needed.

When opening a writer and looping to try to get a connection, recheck
read_ready at the top of the loop since the number of readers might
have changed.

To slightly speed up the process of opening the first reader, take
ownership immediately rather than waiting for the fifo_reader_thread
to handle it.

4 years agoCygwin: FIFO: fix problems finding new owner
Ken Brown [Wed, 15 Jul 2020 13:46:42 +0000 (09:46 -0400)]
Cygwin: FIFO: fix problems finding new owner

When the owning reader closes and there are still readers open, the
owner needs to wait for a new owner to be found before closing its
fifo_client handlers.  This involves a loop in which dec_nreaders is
called at the beginning and inc_nreaders is called at the end.  Any
other reader that tries to access shmem->_nreaders during this loop
will therefore get an inaccurate answer.

Fix this by adding an nreaders method and using it instead of
dec_nreaders and inc_nreaders.  Also add nreaders_lock to control
access to the shmem->_nreaders.

Make various other changes to improve the reliability of finding a new
owner.

4 years agoctype.h: Fix unused variable warnings
Aschref Ben Thabet [Thu, 16 Jul 2020 08:28:49 +0000 (10:28 +0200)]
ctype.h: Fix unused variable warnings

If __HAVE_LOCALE_INFO__ is not defined, then the locale in the
locale-specific ctype functions is ignored.  In the previous
implementation this resulted in compiler warnings.  For example:

int main()
{
  locale_t locale;
  locale = duplocale(uselocale((locale_t)0));
  isspace_l('x', locale);
  return 0;
}

gcc -Wall main.c
main.c: In function 'main':
main.c:6:11: warning: variable 'locale' set but not used [-Wunused-but-set-variable]
    6 |  locale_t locale;
      |           ^~~~~~

4 years agoCygwin: document previous poll/select patch
Corinna Vinschen [Thu, 16 Jul 2020 08:58:40 +0000 (10:58 +0200)]
Cygwin: document previous poll/select patch

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: make sure failed sockets always signal writability
Marc Hoersken [Wed, 15 Jul 2020 18:53:21 +0000 (20:53 +0200)]
Cygwin: make sure failed sockets always signal writability

Since FD_CONNECT is only given once, we manually need to set
FD_WRITE for connection failed sockets to have consistent
behaviour in programs calling poll/select multiple times.

Example test to non-listening port: curl -v 127.0.0.1:47

4 years agoCygwin: FAQ 1.6: Update "Who's behind the project?"
Brian Inglis [Mon, 13 Jul 2020 13:30:07 +0000 (07:30 -0600)]
Cygwin: FAQ 1.6: Update "Who's behind the project?"

winsup/doc/faq-what.xml: remove Red Hat, Net, Win32 references and clean up

4 years agoCygwin: FAQ 1.5: Clarify "What version is this"
Brian Inglis [Mon, 13 Jul 2020 12:58:56 +0000 (06:58 -0600)]
Cygwin: FAQ 1.5: Clarify "What version is this"

Patch to:
https://sourceware.org/git/?p=newlib-cygwin.git;f=winsup/doc/faq-what.xml;a=blob
as a result of thread:
https://cygwin.com/pipermail/cygwin/2020-July/245442.html
and comments:
https://cygwin.com/pipermail/cygwin-patches/2020q3/010331.html
Relate Cygwin DLL to Unix kernel,
add required options to command examples,
differentiate Unix and Cygwin commands;
mention that the cygwin package contains the DLL,
replace setup.exe reference by Cygwin Setup program wording.

4 years agoCygwin: Make dumper scan more than first 4GB of VM on x86_64
Jon Turney [Wed, 1 Jul 2020 13:00:53 +0000 (14:00 +0100)]
Cygwin: Make dumper scan more than first 4GB of VM on x86_64

It's unclear that we need an end address here at all, or can just rely
on VirtualQueryEx() failing when we reach the end of memory regions.

4 years agoCygwin: Add a new win32_pstatus data type for modules on x86_64
Jon Turney [Mon, 29 Jun 2020 15:45:26 +0000 (16:45 +0100)]
Cygwin: Add a new win32_pstatus data type for modules on x86_64

Also take a bit more care with sizes in other data types to ensure they
are the same on x86 and x86_64.

Add some explanatory comments.

4 years agoCygwin: Update ELF target used by dumper on x86_64
Jon Turney [Mon, 29 Jun 2020 13:36:00 +0000 (14:36 +0100)]
Cygwin: Update ELF target used by dumper on x86_64

Like [1], but actually making the effort to be 'usable' and 'tested'.

[1] https://cygwin.com/pipermail/cygwin/2019-October/242815.html

4 years agoCygwin: Slightly improve error_start documentation
Jon Turney [Wed, 10 Jun 2020 13:52:41 +0000 (14:52 +0100)]
Cygwin: Slightly improve error_start documentation

4 years agotestsuite: Fix iconv tests to use new encoding config defines
Keith Packard via Newlib [Thu, 9 Jul 2020 23:58:48 +0000 (16:58 -0700)]
testsuite: Fix iconv tests to use new encoding config defines

_ICONV_CONVERTER -> ICONV_FROM_ENCODING. It's not perfect, as the
library can support different from/to encodings now, but at least in
the default configurations the tests now work.

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agolibc/iconv: find_alias was mis-computing remaining alias table length
Keith Packard via Newlib [Thu, 9 Jul 2020 23:58:47 +0000 (16:58 -0700)]
libc/iconv: find_alias was mis-computing remaining alias table length

This caused the strnstr to walk off the end of the alias array and
fetch invalid data. Instead of attempting to update 'len', just
re-compute it based on the table end pointer that is already known.

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agolibc/iconv: Remove unneeded pointer var for _iconv_aliases
Keith Packard via Newlib [Thu, 9 Jul 2020 23:58:46 +0000 (16:58 -0700)]
libc/iconv: Remove unneeded pointer var for _iconv_aliases

The pointer value for the iconv alias data never changes, so get rid
of the pointer and make it an array instead.

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agolibc/iconv: Detect CES handler loading failure
Keith Packard via Newlib [Thu, 9 Jul 2020 23:58:45 +0000 (16:58 -0700)]
libc/iconv: Detect CES handler loading failure

Fix the code checking for character set loading failure so that
it checks the return value from the init function.

Signed-off-by: Keith Packard <keithp@keithp.com>
4 years agoFix invalid acl_entry_t on 32-bit Cygwin
David Allsopp [Thu, 9 Jul 2020 19:17:03 +0000 (20:17 +0100)]
Fix invalid acl_entry_t on 32-bit Cygwin

If the acl_t struct was at or above 0x80000000 then the pointer was
sign-extended to 0xffff_ffff_8000_0000 and so the index was lost.

Signed-off-by: David Allsopp <david.allsopp@metastack.com>
4 years agoCygwin: convert sys_wcstombs/sys_mbstowcs wrapper to inline functions
Corinna Vinschen [Fri, 10 Jul 2020 08:29:33 +0000 (10:29 +0200)]
Cygwin: convert sys_wcstombs/sys_mbstowcs wrapper to inline functions

This should slightly speed up especially path conversions,
given there's one less function call rearranging all function
arguments in registers/stack (and less stack pressure).

For clarity, rename overloaded  sys_wcstombs to _sys_wcstombs
and sys_cp_mbstowcs to _sys_mbstowcs.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: Bump DLL version to 3.1.7
Corinna Vinschen [Thu, 9 Jul 2020 08:14:20 +0000 (10:14 +0200)]
Cygwin: Bump DLL version to 3.1.7

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: add microcode patch to release messages cygwin-3_1_6-release
Corinna Vinschen [Thu, 9 Jul 2020 07:55:34 +0000 (09:55 +0200)]
Cygwin: add microcode patch to release messages

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoformat_proc_cpuinfo: fix microcode revision shift direction
Brian Inglis [Tue, 7 Jul 2020 19:00:37 +0000 (13:00 -0600)]
format_proc_cpuinfo: fix microcode revision shift direction

4 years agofhandler_proc.cc(format_proc_cpuinfo): add microcode registry lookup values
Brian Inglis [Tue, 7 Jul 2020 19:00:36 +0000 (13:00 -0600)]
fhandler_proc.cc(format_proc_cpuinfo): add microcode registry lookup values

Re: CPU microcode reported wrong in /proc/cpuinfo
    https://sourceware.org/pipermail/cygwin/2020-May/245063.html
earlier Windows releases used different registry values to store microcode
revisions depending on the MSR name being used to get microcode revisions:
add these alternative registry values to the cpuinfo registry value lookup;
iterate thru the registry data until a valid microcode revision is found;
some revision values are in the high bits, so if the low bits are all clear,
shift the revision value down into the low bits

4 years agoRemoved #ifndef _ARM_PCS_VFP_ from sys/fenv.h for arm
Eshan dhawan via Newlib [Fri, 3 Jul 2020 22:41:06 +0000 (04:11 +0530)]
Removed #ifndef _ARM_PCS_VFP_ from sys/fenv.h for arm

Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
4 years agoCygwin: fix buffer overrun in cygwin_strcasecmp
Corinna Vinschen [Mon, 6 Jul 2020 11:17:53 +0000 (13:17 +0200)]
Cygwin: fix buffer overrun in cygwin_strcasecmp

sys_mbstowcs is called with the destination buffer length
set to MaximumLength from the receiving UNICODE_STRING buffer.
This is twice as much as the actual size of the buffer in
wchar_t units, which is the unit expected by sys_mbstowcs.

sys_mbstowcs always attaches a NUL, within the destination
buffersize given.  But if the string is exactly one wchar_t
less than the actual buffer, and the buffersize is given too
large, sys_mbstowcs writes a NUL one wchar_t beyond the buffer.

This has only been exposed with Cygwin 3.1.5 because alloca
on newer gcc 9 apparently allocates more tightly.  The alloca
buffer here is requested with 16 bytes, which is exactly the
number of bytes required for the string L"cmd.exe".  Older gcc
apparently allocated a few more bytes on the stack, while gcc 9
allocates in 16 byte granularity...

Fix this by giving the correct destination buffer size to
sys_mbstowcs.

Fixes: https://cygwin.com/pipermail/cygwin/2020-June/245226.html
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agolibm: machine: Add missing sparc and mips configuration
Corinna Vinschen [Fri, 3 Jul 2020 08:45:44 +0000 (10:45 +0200)]
libm: machine: Add missing sparc and mips configuration

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agomips fenv support
Eshan dhawan via Newlib [Thu, 2 Jul 2020 21:13:06 +0000 (02:43 +0530)]
mips fenv support

Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
4 years agoSPARC fenv support
Eshan dhawan via Newlib [Thu, 2 Jul 2020 21:13:05 +0000 (02:43 +0530)]
SPARC fenv support

Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
4 years agofenv aarch64 support
Eshan dhawan via Newlib [Sat, 27 Jun 2020 19:31:29 +0000 (01:01 +0530)]
fenv aarch64 support

Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
4 years agopru: Fix memory corruption on syscall return
Dimitar Dimitrov [Wed, 3 Jun 2020 16:14:22 +0000 (19:14 +0300)]
pru: Fix memory corruption on syscall return

In the initial code I missed one level of pointer indirection. Instead
of storing errno in impure_data, _impure_ptr was corrupted.

Only simulator is impacted. Real targets have no OS and no syscalls.

This resolves a bunch of stdio cases from the GCC testsuite:
  FAIL->PASS: gcc.c-torture/execute/printf-2.c   -O0  execution test

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
4 years agoCygwin: add new IPPROTO_TCP options to release notes
Corinna Vinschen [Wed, 1 Jul 2020 19:33:15 +0000 (21:33 +0200)]
Cygwin: add new IPPROTO_TCP options to release notes

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: tcp: Support TCP_QUICKACK
Corinna Vinschen [Wed, 1 Jul 2020 19:26:59 +0000 (21:26 +0200)]
Cygwin: tcp: Support TCP_QUICKACK

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: tcp: Support TCP_USER_TIMEOUT
Corinna Vinschen [Wed, 1 Jul 2020 18:30:22 +0000 (20:30 +0200)]
Cygwin: tcp: Support TCP_USER_TIMEOUT

Use TCP_MAXRTMS on newer systems, TCP_MAXRT on older systems.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: tcp: Support TCP_KEEPIDLE, TCP_KEEPCNT, TCP_KEEPINTVL
Corinna Vinschen [Wed, 1 Jul 2020 18:27:10 +0000 (20:27 +0200)]
Cygwin: tcp: Support TCP_KEEPIDLE, TCP_KEEPCNT, TCP_KEEPINTVL

Use WSAIoctl(SIO_KEEPALIVE_VALS) on older systems.

Make sure that keep-alive timeout is equivalent to
TCP_KEEPIDLE + TCP_KEEPCNT * TCP_KEEPINTVL on older systems,
even with TCP_KEEPCNT being a fixed value on those systems.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: tcp: Support TCP_FASTOPEN
Corinna Vinschen [Tue, 30 Jun 2020 12:34:19 +0000 (14:34 +0200)]
Cygwin: tcp: Support TCP_FASTOPEN

TCP_FASTOPEN is supported since W10 1607.  Fake otherwise.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: tcp: fix IPPROTO_TCP option handling
Corinna Vinschen [Tue, 30 Jun 2020 11:33:57 +0000 (13:33 +0200)]
Cygwin: tcp: fix IPPROTO_TCP option handling

- Drop definitions from <cygwin/sockets.h>
- Drop options only available on BSD
- Fix value of TCP_MAXSEG.  It was still defined as the BSD value
  while WinSock uses another value
- Handle the fact that TCP_MAXSEG is a R/O value in WinSock

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: pty, termios: Unify thoughts of read ahead beffer handling.
Takashi Yano via Cygwin-patches [Tue, 30 Jun 2020 11:12:50 +0000 (20:12 +0900)]
Cygwin: pty, termios: Unify thoughts of read ahead beffer handling.

- Return value of eat_readahead() is redefined. The return values
  of fhandler_termios::eat_readahead() and fhandler_pty_slave::
  eat_readahead() were little bit different. This patch unifies
  them to number of bytes eaten by eat_readahead().
- Considerration for raixget() is added to fhandler_pty_master::
  accept_input() code.
- Transfering contents of read ahead buffer in
  fhandler_pty_master::transfer_input_to_pcon() is removed since
  it is not necessary.
- fhandler_pty_slave::eat_readahead() ckecks EOL only when ICANON
  is set.
- Guard for _POSIX_VDISABLE is added in checking EOL.

4 years agoCygwin: pty: Discard CSI > Pm m sequence from native windows apps.
Takashi Yano via Cygwin-patches [Tue, 30 Jun 2020 11:12:13 +0000 (20:12 +0900)]
Cygwin: pty: Discard CSI > Pm m sequence from native windows apps.

- If vim is started from WSL (Ubuntu) which is executed in pseudo
  console in mintty, shift key and ctrl key do not work. Though
  this issue is similar to the issue resolved by commit
  4527541ec66af8d82bb9dba5d25afdf489d71271, that commit is not
  effective for this issue. This patch fixes the issue by discarding
  "CSI > Pm m" in fhandler_pty_master::pty_master_fwd_thread().

4 years agofenv support arm
Eshan dhawan via Newlib [Wed, 3 Jun 2020 17:45:09 +0000 (23:15 +0530)]
fenv support arm

Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
4 years agoRegenerate libm/machine configuration files for powerpc
Jeff Johnston [Wed, 10 Jun 2020 00:59:04 +0000 (20:59 -0400)]
Regenerate libm/machine configuration files for powerpc

4 years agoCygwin: pty: Fix screen distortion after less for native apps again.
Takashi Yano via Cygwin-patches [Thu, 4 Jun 2020 01:43:19 +0000 (10:43 +0900)]
Cygwin: pty: Fix screen distortion after less for native apps again.

- Commit c4b060e3fe3bed05b3a69ccbcc20993ad85e163d seems to be not
  enough. Moreover, it does not work as expected at all in Win10
  1809. This patch essentially reverts that commit and add another
  fix. After all, the cause of the problem was a race issue in
  switch_to_pcon_out flag. That is, this flag is set when native
  app starts, however, it is delayed by wait_pcon_fwd(). Since the
  flag is not set yet when less starts, the data which should go
  into the output_handle accidentally goes into output_handle_cyg.
  This patch fixes the problem more essentially for the cause of
  the problem than previous one.

4 years agohard float support for PowerPC taken from FreeBSD
Eshan dhawan via Newlib [Tue, 2 Jun 2020 16:41:40 +0000 (22:11 +0530)]
hard float support for PowerPC taken from FreeBSD

Signed-off-by: Eshan dhawan <eshandhawan51@gmail.com>
4 years agoBump version to 3.1.6
Corinna Vinschen [Mon, 1 Jun 2020 08:48:11 +0000 (10:48 +0200)]
Bump version to 3.1.6

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: pty: Fix screen distortion after using less for native apps. cygwin-3_1_5-release
Takashi Yano via Cygwin-patches [Mon, 1 Jun 2020 06:16:18 +0000 (15:16 +0900)]
Cygwin: pty: Fix screen distortion after using less for native apps.

- If the output of non-cygwin apps is browsed using less, screen is
  ocasionally distorted after less exits. This frequently happens
  if cmd.exe is executed after less. This patch fixes the issue.

4 years agoCygwin: pty: Revise the code which prevents undesired window title.
Takashi Yano via Cygwin-patches [Sun, 31 May 2020 05:53:20 +0000 (14:53 +0900)]
Cygwin: pty: Revise the code which prevents undesired window title.

- In current pty, the window title can not be set from non-cygwin
  program due to the code which prevents overwriting the window
  title to "cygwin-console-helper.exe" in fhandler_pty_master::pty_
  master_fwd_thread(). This patch fixes the issue.

4 years agoCygwin: pty: Clean up fhandler_pty_master::pty_master_fwd_thread().
Takashi Yano via Cygwin-patches [Sun, 31 May 2020 05:53:19 +0000 (14:53 +0900)]
Cygwin: pty: Clean up fhandler_pty_master::pty_master_fwd_thread().

- Remove the code which is not necessary anymore.

4 years agoCygwin: console: Discard some unsupported escape sequences.
Takashi Yano via Cygwin-patches [Sun, 31 May 2020 05:53:18 +0000 (14:53 +0900)]
Cygwin: console: Discard some unsupported escape sequences.

- If the cygwin vim is started from a non-cygwin process which is
  executed in pseudo console, shift key and ctrl key do not work.
  In this case, vim is executed under /dev/cons*. If vim outputs
  escape sequence which is not supported by pseudo console, the
  escape sequence is leaked into the parent pty. This causes
  unexpected results. This patch fixes the issue by discarding
  "CSI > Pm m". "OSC 10;? BEL/ST" and "OSC 11;? BEL/ST" are
  discarded as well.

4 years agoCygwin: pty: Prevent garbage remained in read ahead buffer.
Takashi Yano via Cygwin-patches [Sun, 31 May 2020 05:53:17 +0000 (14:53 +0900)]
Cygwin: pty: Prevent garbage remained in read ahead buffer.

- After commit 29431fcb5b14d4c5ac3b3161a076eb1a208349d9, the issue
  reported in https://cygwin.com/pipermail/cygwin/2020-May/245057.html
  occurs. This is caused by the following mechanism. Cygwin less
  called from non-cygwin git is executed under /dev/cons* rather
  than /dev/pty* because parent git process only inherits pseudo
  console handle. Therefore, less sets ICANON flag for /dev/cons*
  rather than original /dev/pty*. When pty is switched to non-cygwin
  git process, line_edit() is used in fhandler_pty_master::write()
  only to set input_available_event and read ahead buffer is supposed
  to be flushed in accept_input(). However, ICANON flag is not set
  for /dev/pty*, so accept_input() is not called unless newline
  is entered. As a result, the input data remains in the read ahead
  buffer. This patch fixes the issue.

4 years agoCygwin: update C++ dialect to gnu++14
Corinna Vinschen [Sat, 30 May 2020 17:41:18 +0000 (19:41 +0200)]
Cygwin: update C++ dialect to gnu++14

Disable -std option since gnu++14 is default anyway, but keep
it available as comment.

Update dynamic exception specifications deprecated with
C++11 to C++11-introduced noexcept expression.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: console: Make cursor keys work in vim under ConEmu.
Takashi Yano via Cygwin-patches [Sat, 30 May 2020 09:25:03 +0000 (18:25 +0900)]
Cygwin: console: Make cursor keys work in vim under ConEmu.

- After commit 774b8996d1f3e535e8267be4eb8e751d756c2cec, cursor
  keys do not work in vim under ConEmu without cygwin-connector.
  This patch fixes the issue.

4 years agoCygwin: stat: fix st_mode of fifos again
Ken Brown [Thu, 28 May 2020 17:05:32 +0000 (13:05 -0400)]
Cygwin: stat: fix st_mode of fifos again

This partially reverts commit
f36262d56ac78f04de147746ce4a85c6155e4a23.  That commit incorrectly
made the st_mode of a fifo reflect the Windows permissions of the disk
file underlying the fifo.

4 years agoCygwin: pty: Prevent meaningless ResizePseudoConsole() calls.
Takashi Yano via Cygwin-patches [Thu, 28 May 2020 13:49:26 +0000 (22:49 +0900)]
Cygwin: pty: Prevent meaningless ResizePseudoConsole() calls.

- This patch prevents to call ResizePseudoConsole() unless the pty
  is resized.

4 years agoCygwin: pty: Fix a bug in free_attached_console().
Takashi Yano via Cygwin-patches [Thu, 28 May 2020 03:43:05 +0000 (12:43 +0900)]
Cygwin: pty: Fix a bug in free_attached_console().

- After commit 7659ff0f5afd751f42485f2684c799c5f37b0fb9, nohup does
  not work as expected. This patch fixes the issue.

  Addresses:
  https://cygwin.com/pipermail/cygwin-developers/2020-May/011885.html

4 years agoCygwin: FAQ: fix Cygwin build requirements
Corinna Vinschen [Tue, 26 May 2020 17:15:37 +0000 (19:15 +0200)]
Cygwin: FAQ: fix Cygwin build requirements

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: drop useless comment
Corinna Vinschen [Tue, 26 May 2020 08:22:41 +0000 (10:22 +0200)]
Cygwin: drop useless comment

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: add missing files to 'clean' build rule
Corinna Vinschen [Tue, 26 May 2020 08:19:35 +0000 (10:19 +0200)]
Cygwin: add missing files to 'clean' build rule

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: revamp localtime.o build rule
Corinna Vinschen [Mon, 25 May 2020 15:40:27 +0000 (17:40 +0200)]
Cygwin: revamp localtime.o build rule

Rename localtime.c.patched to localtime.patched.c to keep the correct
language suffix.

Create localtime.patched.c in the build dir rather than in the source
dir.  Decouple the build rule for creating localtime.patched.c from
the rule to build localtime.o, so we don't have to rebuild the patched
source file all the time.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: convert localtime_wrapper.c to plain C source
Corinna Vinschen [Mon, 25 May 2020 11:50:36 +0000 (13:50 +0200)]
Cygwin: convert localtime_wrapper.c to plain C source

That also requires a small tweak to localtime.c.patch, otherwise
GCC complains about the position of the 'trydefrules' label.
Also, simplify includes.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: rename localtime.cc to localtime_wrapper.c
Corinna Vinschen [Mon, 25 May 2020 11:46:24 +0000 (13:46 +0200)]
Cygwin: rename localtime.cc to localtime_wrapper.c

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: move localtime.o build rule to end of file
Corinna Vinschen [Mon, 25 May 2020 11:45:17 +0000 (13:45 +0200)]
Cygwin: move localtime.o build rule to end of file

otherwise a simple `make' in the cygwin dir won't build
the DLL anymore.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: tzcode resync: details
Mark Geisert [Fri, 22 May 2020 09:32:53 +0000 (02:32 -0700)]
Cygwin: tzcode resync: details

Add tz_posixrules.h with data generated from most recent Cygwin tzdata
package.  Establish localtime.cc as primarily a wrapper around a patched
copy of localtime.c.  See README for more information.

4 years agoCygwin: tzcode resync: imports
Mark Geisert [Fri, 22 May 2020 09:32:52 +0000 (02:32 -0700)]
Cygwin: tzcode resync: imports

Import most recent NetBSD localtime.c, private.h, and tzfile.h.  An
empty namespace.h suffices for Cygwin.

4 years agoCygwin: tzcode resync: basics
Mark Geisert [Fri, 22 May 2020 09:32:51 +0000 (02:32 -0700)]
Cygwin: tzcode resync: basics

Modifies winsup/cygwin/Makefile.in to build localtime.o from items in
new winsup/cygwin/tzcode subdirectory.  Compiler option "-fpermissive"
is used to accept warnings about missing casts on the return values of
malloc() calls.  This patch also removes existing localtime.cc and
tz_posixrules.h from winsup/cygwin as they are superseded by the
subsequent patches in this set.

4 years agoCygwin: fix declaration of __small_{v}sprintf
Corinna Vinschen [Mon, 25 May 2020 11:10:41 +0000 (13:10 +0200)]
Cygwin: fix declaration of __small_{v}sprintf

Both functions are declared as extern "C" functions in
sys/smallprint.h, but as C++ funcs in winsup.h and in the
source itself.

Add extern "C to definitions, remove declarations in winsup.h
and include sys/smallprint.h instead.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
4 years agoCygwin: pty: Stop counting number of slaves attached to pseudo console.
Takashi Yano via Cygwin-patches [Mon, 25 May 2020 08:49:08 +0000 (17:49 +0900)]
Cygwin: pty: Stop counting number of slaves attached to pseudo console.

- The number of slaves attached to pseudo console is used only for
  triggering redraw screen. Counting was not only needless, but also
  did not work as expected. This patch removes the code for counting.

4 years agoCygwin: pty: Revise code to make system_printf() work after close.
Takashi Yano via Cygwin-patches [Thu, 21 May 2020 08:25:01 +0000 (17:25 +0900)]
Cygwin: pty: Revise code to make system_printf() work after close.

- After commit 0365031ce1347600d854a23f30f1355745a1765c, the issue
  https://cygwin.com/pipermail/cygwin-patches/2020q2/010259.html
  occurs. This patch fixes the issue.

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