]> sourceware.org Git - newlib-cygwin.git/log
newlib-cygwin.git
3 years agostdio: Parse 0x0p+00 correctly in scanf
Keith Packard [Fri, 18 Jun 2021 18:09:48 +0000 (11:09 -0700)]
stdio: Parse 0x0p+00 correctly in scanf

The scanf code was skipping the '0' after the 'x' causing the
resulting buffer to contain an invalid number when passed to strtod.

Signed-off-by: Keith Packard <keithp@keithp.com>
3 years agonewlib/doc/makedoc.c: if realloc() fails, exit with an error message.
Joel Sherrill [Thu, 17 Jun 2021 21:48:47 +0000 (16:48 -0500)]
newlib/doc/makedoc.c: if realloc() fails, exit with an error message.

3 years agonewlib/doc/makedoc.c: Fix memory leak identified by Coverity.
Joel Sherrill [Thu, 17 Jun 2021 21:27:49 +0000 (16:27 -0500)]
newlib/doc/makedoc.c: Fix memory leak identified by Coverity.

3 years agolibc/sys/rtems/crt0.c: Fix two warnings.
Joel Sherrill [Mon, 14 Jun 2021 21:31:08 +0000 (16:31 -0500)]
libc/sys/rtems/crt0.c: Fix two warnings.

__assert_func() is marked as noreturn and stub should not.
__tls_get_addr() needed to return a value..

3 years agoCygwin: Fix a stray tab in strace documentation
Mark Geisert [Sun, 13 Jun 2021 14:48:16 +0000 (15:48 +0100)]
Cygwin: Fix a stray tab in strace documentation

3 years agolibgloss: pru: Remove sim ld script
Dimitar Dimitrov [Wed, 3 Mar 2021 09:24:50 +0000 (11:24 +0200)]
libgloss: pru: Remove sim ld script

Binutils LD default linker script was recently fixed to allow memory
sizes to be set via command line. Use this feature to remove the special
sim linker script in libgloss.

It is acceptable to require newer Binutils version here because simulator
target is only used for regression testing the toolchain. Real HW
targets are not affected.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
3 years agolibgloss: pru: Place sim syscalls into their own sections
Dimitar Dimitrov [Sun, 9 May 2021 13:10:45 +0000 (16:10 +0300)]
libgloss: pru: Place sim syscalls into their own sections

This should help reduce final ELF size if using --gc-sections linker
option.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
3 years agopru: Enable -ffunction-sections and -fdata-sections
Dimitar Dimitrov [Sun, 9 May 2021 13:11:36 +0000 (16:11 +0300)]
pru: Enable -ffunction-sections and -fdata-sections

Recent binutils support --gc-sections for pru, so let's make use of
them.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
3 years agoFix rounding issues with sqrt/sqrtf
Jeff Johnston [Fri, 4 Jun 2021 18:36:38 +0000 (14:36 -0400)]
Fix rounding issues with sqrt/sqrtf

- compiler is sometimes optimizing out the rounding check in
  e_sqrt.c and ef_sqrt.c which uses two constants to create
  an inexact operation
- there is a similar constant operation in s_tanh.c/sf_tanh.c
- make the one and tiny constants volatile to stop this

3 years agoCygwin: fhandler_mqueue::mq_open: fix typo
Ken Brown [Wed, 26 May 2021 16:48:58 +0000 (12:48 -0400)]
Cygwin: fhandler_mqueue::mq_open: fix typo

3 years agoaarch64: support binary mode for opening files
Richard Earnshaw [Wed, 26 May 2021 14:17:11 +0000 (15:17 +0100)]
aarch64: support binary mode for opening files

Newlib for aarch64 uses libgloss for the backend.  One common libgloss
implementation is the 'rdimon' implementation, which uses the Arm
Semihosting protocol.  In order to support a remote host that runs on
Windows we need to know whether a file is to be opened in binary or
text mode.  That means that we need to preserve this information via
O_BINARY until we know what the libgloss binding will be.

This patch simply copies the arm implementation from sys/arm/sys and
puts it in machine/aarch64/sys, because we don't have a 'sys' subtree
on aarch64.

3 years agoCygwin: utils: enable -idirafter to fetch Cygwin headers from mingw sources
Corinna Vinschen [Wed, 26 May 2021 08:59:03 +0000 (10:59 +0200)]
Cygwin: utils: enable -idirafter to fetch Cygwin headers from mingw sources

Get rid of the last dreaded relative paths pointing to the cygwin dir.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: utils: set _WIN32_WINNT and NTDDI_VERSION via Makefile
Corinna Vinschen [Wed, 26 May 2021 08:57:47 +0000 (10:57 +0200)]
Cygwin: utils: set _WIN32_WINNT and NTDDI_VERSION via Makefile

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: set NTDDI_VERSION to enable more recent windows definitions
Corinna Vinschen [Wed, 26 May 2021 08:56:02 +0000 (10:56 +0200)]
Cygwin: set NTDDI_VERSION to enable more recent windows definitions

Set to WDK_NTDDI_VERSION since that enables all the latest.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: fhandler_mqueue: add missing __reg2 for 32 bit build
Corinna Vinschen [Wed, 26 May 2021 09:01:20 +0000 (11:01 +0200)]
Cygwin: fhandler_mqueue: add missing  __reg2 for 32 bit build

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: fhandler_mqueue: disable more methods, add fcntl
Corinna Vinschen [Tue, 25 May 2021 21:00:32 +0000 (23:00 +0200)]
Cygwin: fhandler_mqueue: disable more methods, add fcntl

Unsupported functionality returns EPERM, fcntl supports
only F_GETFD and F_GETFL.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: fhandler_mqueue::mq_open: set all required fhandler flags
Corinna Vinschen [Tue, 25 May 2021 20:43:41 +0000 (22:43 +0200)]
Cygwin: fhandler_mqueue::mq_open: set all required fhandler flags

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: disable creating directories below /dev/mqueue
Corinna Vinschen [Tue, 25 May 2021 20:05:13 +0000 (22:05 +0200)]
Cygwin: disable creating directories below /dev/mqueue

...as on Linux.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: fhandler_mqueue: fix method declarations
Corinna Vinschen [Tue, 25 May 2021 20:04:43 +0000 (22:04 +0200)]
Cygwin: fhandler_mqueue: fix method declarations

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: path_conv: fix mqueue path check
Corinna Vinschen [Tue, 25 May 2021 20:03:36 +0000 (22:03 +0200)]
Cygwin: path_conv: fix mqueue path check

The check for a file or dir within /dev/mqueue is accidentally using
the incoming path, which could be a relative path.  Make sure to
restore the absolute POSIX path in path_copy and only then test the
path.

Also, move the actual check for a valid path below /dev/mqueue into
the fhandler_mqueue class.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: cwdstuff: check if /dev exists
Corinna Vinschen [Tue, 25 May 2021 19:46:13 +0000 (21:46 +0200)]
Cygwin: cwdstuff: check if /dev exists

/dev has been handled as virtual dir in cwdstuff, thus not allowing
to start native apps from /dev as CWD, even if /dev actually exists
on disk.  Unfortunately this also affects Cygwin executables started
from a debugger.

When chdir'ing to /dev, check if /dev exists on disk.  If so, treat
it as any other existing path.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: implement read(2)/lseek(2)
Corinna Vinschen [Tue, 25 May 2021 18:19:19 +0000 (20:19 +0200)]
Cygwin: POSIX msg queues: implement read(2)/lseek(2)

reuse fhandler_virtual implementation to implement read and lseek.
The output from read(2) is modelled after the output when reading
from an mq file on Linux.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: implement ioctl(2)
Corinna Vinschen [Tue, 25 May 2021 18:17:07 +0000 (20:17 +0200)]
Cygwin: POSIX msg queues: implement ioctl(2)

Call into fhandler_base::ioctl immediately, thus only allowing
FIONBIO to manipulate blocking behaviour.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: move all mq_* functionality into fhandler_mqueue
Corinna Vinschen [Tue, 25 May 2021 18:15:16 +0000 (20:15 +0200)]
Cygwin: POSIX msg queues: move all mq_* functionality into fhandler_mqueue

The POSIX entry points are just wrappers now, calling into
fhandler_mqueue.  While at it, eliminate mqi_flags, replace with
standard fhandler nonblocking flag.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: allocate section views top down
Corinna Vinschen [Tue, 25 May 2021 14:55:38 +0000 (16:55 +0200)]
Cygwin: POSIX msg queues: allocate section views top down

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: Implement dup
Corinna Vinschen [Tue, 25 May 2021 14:50:16 +0000 (16:50 +0200)]
Cygwin: POSIX msg queues: Implement dup

Create a private method fhandler_mqueue::_dup and call it from
dup and fixup_after_fork methods.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: implement open/mq_open entirely in fhandler
Corinna Vinschen [Tue, 25 May 2021 14:49:04 +0000 (16:49 +0200)]
Cygwin: POSIX msg queues: implement open/mq_open entirely in fhandler

The mq_open call is just a framework now.  This patch moves the
entire functionality into fhandler_mqueue.  To support standard
OS calls (as on Linux), make fhandler_mqueue a derived class from
fhandler_disk_file and keep the base handle the handle to the
default stream, to allow implementing O_PATH functionlaity as well
as reading from the file and NOT reading binary message queue data.

Implement a standard fhandler_mqueue::open method, allowing, for
instance, to touch a file under /dev/mqueue and if it doesn't exist,
to create a message queue file.

FIXME: This introduces a BAD HACK into path_conv::check, which needs
reviewing.

Keep the posix path intact in the fhandler, and change get_proc_fd_name
accordingly to return only the basename plus leading slash for
/proc/<PID>/fd.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: slightly rephrase get_mqinfo
Corinna Vinschen [Tue, 25 May 2021 14:42:44 +0000 (16:42 +0200)]
Cygwin: POSIX msg queues: slightly rephrase get_mqinfo

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: simplify mq_close
Corinna Vinschen [Tue, 25 May 2021 14:36:09 +0000 (16:36 +0200)]
Cygwin: POSIX msg queues: simplify mq_close

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: get_nt_native_path: allow to append suffix
Corinna Vinschen [Tue, 25 May 2021 14:24:58 +0000 (16:24 +0200)]
Cygwin: get_nt_native_path: allow to append suffix

POSIX message queues will be moved into NTFS streams.
Extend get_nt_native_path to provide a filename suffix which is not
subject to special character transposition, to allow specifying
a colon.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: move definition of struct msg_hdr
Corinna Vinschen [Tue, 25 May 2021 14:17:58 +0000 (16:17 +0200)]
Cygwin: POSIX msg queues: move definition of struct msg_hdr

...to mqueue_types.h header.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: improve error output in fixup_after_fork
Corinna Vinschen [Fri, 21 May 2021 15:47:14 +0000 (17:47 +0200)]
Cygwin: POSIX msg queues: improve error output in fixup_after_fork

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: Ensure PSAPI_VERSION is 1 when building ldd
Jon Turney [Thu, 20 May 2021 17:28:01 +0000 (18:28 +0100)]
Cygwin: Ensure PSAPI_VERSION is 1 when building ldd

The default PSAPI_VERSION is controlled by WIN32_WINNT, which we set to
0x0a00 when building ldd, which gets PSAPI_VERSION=2.

This causes K32GetModuleFileNameEx to be used for GetModuleFileNameEx,
which isn't available on Windows Vista.

Define PSAPI_VERSION as 1 for the built executable to work on Windows
Vista.

3 years agoCygwin: POSIX msg queues: destroy msg queue fhandler in case of error
Corinna Vinschen [Fri, 21 May 2021 13:26:51 +0000 (15:26 +0200)]
Cygwin: POSIX msg queues: destroy msg queue fhandler in case of error

...and don't leave a descriptor dangling

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: move handling of memory map into fhandler
Corinna Vinschen [Fri, 21 May 2021 13:25:37 +0000 (15:25 +0200)]
Cygwin: POSIX msg queues: move handling of memory map into fhandler

This encapsulated creation, duplication, and closing of all
Windows objects connected to the message queue in the fhandler.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX ipc: fix evaluation of naming rules
Corinna Vinschen [Fri, 21 May 2021 13:21:29 +0000 (15:21 +0200)]
Cygwin: POSIX ipc: fix evaluation of naming rules

The function evaluating correctness of ipc object names was a
bit half-hearted.  Fix the tests to follow more closely the
desriptions in the Linux man pages.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: posix_ipc.cc: fix typo
Corinna Vinschen [Fri, 21 May 2021 13:18:38 +0000 (15:18 +0200)]
Cygwin: posix_ipc.cc: fix typo

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: create fhandler with object name
Corinna Vinschen [Fri, 21 May 2021 11:42:40 +0000 (13:42 +0200)]
Cygwin: POSIX msg queues: create fhandler with object name

build_fh_dev can take the POSIX object name as parameter anyway,
so use that and drop from mqinfo call.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: move IPC object creation into fhandler
Corinna Vinschen [Fri, 21 May 2021 11:38:57 +0000 (13:38 +0200)]
Cygwin: POSIX msg queues: move IPC object creation into fhandler

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: fix formatting in mqueue_types.h
Corinna Vinschen [Fri, 21 May 2021 10:55:25 +0000 (12:55 +0200)]
Cygwin: fix formatting in mqueue_types.h

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: use queue name as key
Corinna Vinschen [Fri, 21 May 2021 10:54:49 +0000 (12:54 +0200)]
Cygwin: POSIX msg queues: use queue name as key

Drop creating a unique ID, the queue name itself is already
unique.  This allows to move ipc object generation into the
fhandler in the next step.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX msg queues: Convert mqd_t to a descriptor
Corinna Vinschen [Fri, 21 May 2021 10:01:56 +0000 (12:01 +0200)]
Cygwin: POSIX msg queues: Convert mqd_t to a descriptor

So far, the mqd_t type returned a pointer to an allocated
area under the hood.  The mutex and event objects attached
to the message queue were implemented as inheritable types.

As unfortunate side effect the HANDLEs to these objects
were inherited by exec'd child processes, even though all
other message queue properties are not inherted, per POSIX.

Fix this by converting an mqd_t to a descriptor, and create a
matching fhandler_mqueue object to handle various aspects of
the message queues inside the fhandler.  Especially, create the
IPC objects as non-inheritable and duplicate the HANDLEs as
part of the fixup_after_fork mechanism.

Drop using mmap and create the memory map with NT functions.
This allows to control duplication of handle and mapping in the
forked child process, without the requirement to regenerate the
map in the same spot.  It also allows to dup() the descriptor,
as on Linux, albeit this isn't implemented yet.

This patch is the first cut.  There's a bit more to do, like
moving more functionality from the POSIX functions into the
fhandler and making sure the mqd_t type can't be used in other
descriptor-related functions willy-nilly.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: utils: chattr: Allow to clear all attributes with '='.
Christian Franke [Fri, 21 May 2021 09:44:32 +0000 (11:44 +0200)]
Cygwin: utils: chattr: Allow to clear all attributes with '='.

Signed-off-by: Christian Franke <christian.franke@t-online.de>
3 years agoCygwin: utils: ldd: use GetFinalPathNameByHandleW
Corinna Vinschen [Thu, 20 May 2021 21:07:05 +0000 (23:07 +0200)]
Cygwin: utils: ldd: use GetFinalPathNameByHandleW

drop replacement function GetFileNameFromHandle which was
only required pre-Vista.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: utils: avoid warning when building path_testsuite-path.o
Corinna Vinschen [Thu, 20 May 2021 20:47:40 +0000 (22:47 +0200)]
Cygwin: utils: avoid warning when building path_testsuite-path.o

Avoid this warning:

[...]/winsup/utils/mingw/../path.cc:569:1: warning: 'void read_mounts() ' defined but not used [-Wunused-function]
  569 | read_mounts ()
      | ^~~~~~~~~~~

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: utils: chattr: do not default to CWD
Corinna Vinschen [Thu, 20 May 2021 20:39:22 +0000 (22:39 +0200)]
Cygwin: utils: chattr: do not default to CWD

Drop the unexpected behaviour to run chattr in the CWD if no file has
been specified on the command line.  Bail out with usage info instead.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: utils: chattr: fix recursive behaviour
Corinna Vinschen [Thu, 20 May 2021 20:32:34 +0000 (22:32 +0200)]
Cygwin: utils: chattr: fix recursive behaviour

  chattr [mode] dir

incorrectly recurses one level into the given directory, even if the
--recursive option has not been used.  This patch adds a test to avoid
this bug.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: utils: chattr: Improve option parsing, fix some messages.
Christian Franke [Thu, 20 May 2021 09:05:29 +0000 (11:05 +0200)]
Cygwin: utils: chattr: Improve option parsing, fix some messages.

Allow multiple characters also in first '-mode' argument.
Use '-H' instead of '-h' for '--help' to fix ambiguity with
hidden attribute.  Fix help and usage texts and documentation.

Signed-off-by: Christian Franke <christian.franke@t-online.de>
3 years agosys/stat.h: Enable UTIME_NOW and UTIME_OMIT for RTEMS
Joel Sherrill [Wed, 19 May 2021 18:43:25 +0000 (13:43 -0500)]
sys/stat.h: Enable UTIME_NOW and UTIME_OMIT for RTEMS

3 years agoCygwin: autoload: fix case in DLL name for sanity
Corinna Vinschen [Thu, 20 May 2021 07:59:00 +0000 (09:59 +0200)]
Cygwin: autoload: fix case in DLL name for sanity

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: Add missing IsWow64Process2 declaration
Corinna Vinschen [Thu, 20 May 2021 08:03:34 +0000 (10:03 +0200)]
Cygwin: Add missing IsWow64Process2 declaration

The previous patch is accidentally missing the declaration of
IsWow64Process2.  Add it belatedly.

Fixes: 1865a41cb383 ("Cygwin: suppress FAST_CWD warnings on ARM64")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: suppress FAST_CWD warnings on ARM64
Jeremy Drake [Wed, 19 May 2021 09:43:48 +0000 (11:43 +0200)]
Cygwin: suppress FAST_CWD warnings on ARM64

The old check was insufficient: new insider preview builds of Windows
allow running x86_64 process on ARM64.  The IsWow64Process2 function
seems to be the intended way to figure this situation out.

3 years agoCygwin: Handle virtual drives as non-symlinks
Jeremy Drake [Wed, 19 May 2021 12:40:23 +0000 (14:40 +0200)]
Cygwin: Handle virtual drives as non-symlinks

This avoids MAX_PATH-related problems in native tools in case the
virtual drive points to a deep directory

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX message queues: simplify sync object creation
Corinna Vinschen [Wed, 12 May 2021 09:04:44 +0000 (11:04 +0200)]
Cygwin: POSIX message queues: simplify sync object creation

Introduce new inline function mq_ipc_init to create all three
required sync objects.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: Use parallel make on AppVeyor
Jon Turney [Sat, 1 May 2021 00:33:24 +0000 (01:33 +0100)]
Cygwin: Use parallel make on AppVeyor

We're bumping up against the 1hr free job duration limit on AppVeyor, so
use 'make -j$(nproc)' to allow things to build slightly faster.

Restructure the way build_script: is written in YAML, so it's slightly less
repetitive and easier to add that.

Also skip 'make check' on x86, since it currently just hangs. :(

3 years agoGet rid of relative include paths in strace.cc
Jon Turney [Sun, 9 May 2021 15:03:49 +0000 (16:03 +0100)]
Get rid of relative include paths in strace.cc

3 years agoMove source files used in utils/mingw/ into that subdirectory
Jon Turney [Tue, 27 Apr 2021 22:41:07 +0000 (23:41 +0100)]
Move source files used in utils/mingw/ into that subdirectory

Move all the source files used in utils/mingw/ into that subdirectory,
so the built objects are in the expected place.

(path.cc requires some more unpicking, and even then there is genuinely
some shared code, so use a trivial file which includes the real path.cc
so the object file is generated where expected)

3 years agoUnpick cygpath TESTSUITE
Jon Turney [Wed, 28 Apr 2021 13:54:47 +0000 (14:54 +0100)]
Unpick cygpath TESTSUITE

Rather than having testsuite.h do various things, depending on defines,
just have it do one thing, and then explicitly redirect to test stubs in
path.cc when building test.

3 years agoCygwin: fetch Windows directory on all platforms and use throughout
Corinna Vinschen [Fri, 7 May 2021 21:05:24 +0000 (23:05 +0200)]
Cygwin: fetch Windows directory on all platforms and use throughout

Rather than fetching the system Windows directory at dll init time
only on 32 bit, fetch it on all platforms.  Store as WCHAR and
UNICODE_STRING.  Use where appropriate to simplify code.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: path_conv: Rework handling native symlinks as inner path components
Corinna Vinschen [Fri, 7 May 2021 14:07:03 +0000 (16:07 +0200)]
Cygwin: path_conv: Rework handling native symlinks as inner path components

commit 456c3a46386f was only going half-way.  It handled symlinks and
junction points as inner path components and made realpath return the
correct path, but it ignored drive letter substitution, i. e., virtual
drives created with, e. g.

  subst X: C:\foo\bar

It was also too simple.  Just returning an error code from
symlink_info::check puts an unnecessary onus on the symlink evaluation
loop in path_conv::check.

Rework the code to use GetFinalPathNameByHandle, and only do this after
checking the current file for being a symlink failed.

If the final path returned by GetFinalPathNameByHandle is not the same
as the incoming path, replace the incoming path with the POSIXified
final path.  This also short-circuits path evaluation, because
path_conv::check doesn't have to recurse over the inner path components
multiple times if all symlinks are of a native type, while still getting
the final path as end result.

Virtual drives are now handled like symlinks.  This is a necessary change
from before to make sure virtual drives are handled identically across
different access methods.  An example is realpath(1) from coreutils.  It
doesn't call readlink(2), but iterates over all path components using
lstat/readlink calls.  Both methods should result in the same real path.

Fixes: 456c3a46386f ("path_conv: Try to handle native symlinks more sanely")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: revert handwritten tags/ctags target, take 2
Corinna Vinschen [Thu, 6 May 2021 11:35:26 +0000 (13:35 +0200)]
Cygwin: revert handwritten tags/ctags target, take 2

Fix accidental checkin of the wrong test version

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: revert handwritten tags/ctags target
Corinna Vinschen [Thu, 6 May 2021 09:12:46 +0000 (11:12 +0200)]
Cygwin: revert handwritten tags/ctags target

Converting to automake dropped the former, handwritten tags/ctags
target.  This leads to a couple of problems:

- For no good reason the tags file gets written to the builddir
  instead of to the srcdir where it's needed.

- `make tags' requires etags to exist, rather than checking if it
  exists and skipping it.

- Adding the extra ctags arguments to AM_CTAGSFLAGS still results
  in a shortened tags file.

(Temporary?) solution: Revert the old tags/ctags rules and silence
the automake warnings.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: autogen.sh: Allow running from any directory
Corinna Vinschen [Thu, 6 May 2021 08:56:20 +0000 (10:56 +0200)]
Cygwin: autogen.sh: Allow running from any directory

autogen.sh expects to run from within the winsup dir, so
set CWD accordingly before running autotools.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoNano-malloc: Fix for unwanted external heap fragmentation
Ola Olsson [Mon, 26 Apr 2021 08:57:02 +0000 (10:57 +0200)]
Nano-malloc: Fix for unwanted external heap fragmentation

The only reason why it is tough for us to use nano malloc
is because of the small shortcoming where nano_malloc()
splits a bigger chunk from the free list into two pieces
while handing back the second one (the tail) to the user.
This is error prone and especially bad for smaller heaps,
where nano malloc is supposed to be superior. The normal
malloc doesn't have this issue and we need to use it even
though it costs us ~2k bytes compared to nano-malloc.

The problem arise especially after giving back _every_
malloced memory to the heap and then starting to exercise
the heap again by allocating something small. This small
item might split the whole heap in two equally big parts
depending on how the heap has been exercised before.

I have uploaded the smallest possible application
(only tested on ST and Nordic devices) to show the issue
while the real customer applications are far more complicated:
https://drive.google.com/file/d/1kfSC2KOm3Os3mI7EBd-U0j63qVs8xMbt/view?usp=sharing

The application works like the following pseudo code,
where we assume a heap of 100 bytes
(I haven't taken padding and other nitty and gritty
details into account. Everything to simplify understanding):

void *ptr = malloc(52); // We get 52 bytes and we have
                        // 48 bytes to use.
free(ptr); // Hand back the 52 bytes to nano_malloc
           // This is the magic line that shows the issue of
           // nano_malloc
ptr = malloc(1); // Nano malloc will split the 52 bytes
                 // in the free list and hand you a pointer
                 // somewhere in the
                 // middle of the heap.
ptr2 = malloc(52); // Out of memory...

I have done a fix which hands back the first part of the
splitted chunk. Once this is fixed we obviously
have the 1 byte placed in position 0 of the heap instead
of somewhere in the middle.

However, this won't let us malloc 52 new bytes even though
we potentially have 99 bytes left to use in the heap. The
reason is that when we try to do the allocation,
nano-malloc looks into the free list and sees a 51 byte
chunk to be used.
This is not big enough so nano-malloc decides to call
sbrk for _another_ 52 bytes which is not possible since
there is only 48 bytes left to ask for.

The solution for this problem is to check if the last
item in the free list is adjacent to sbrk(0). If it is,
as it is in this case, we can just ask sbrk for the
remainder of what is needed. In this case 1 byte.

NB! I have only tested the solution on our ST device.

3 years agoCygwin: Ensure toollibdir exists before installing a link there
Jon Turney [Fri, 30 Apr 2021 17:14:55 +0000 (18:14 +0100)]
Cygwin: Ensure toollibdir exists before installing a link there

This helps 'make install -j2' work.

3 years agoformat_proc_swaps: ensure space between fields for clarity
Brian Inglis [Fri, 30 Apr 2021 13:19:20 +0000 (07:19 -0600)]
format_proc_swaps: ensure space between fields for clarity

page/swap space name >= 40 or size/used >= 8 leaves no space between fields;
ensure a space after name and add extra tabs after size and used fields;
output appears like Linux 5.8 after changes to mm/swapfile(swap_show);

proc-swaps-space-before.log:
==> /proc/swaps <==
Filename Type Size Used Priority
/mnt/c/pagefile.sys                     file            11567748292920  0
/mnt/d/pagefile.sys                     file            12582912205960  0

proc-swaps-space-after.log:
==> /proc/swaps <==
Filename Type Size Used Priority
/mnt/c/pagefile.sys file 11567748 241024 0
/mnt/d/pagefile.sys file 12582912 182928 0

3 years agoCygwin: mq_open: set filesize using ftruncate
Corinna Vinschen [Fri, 30 Apr 2021 16:15:20 +0000 (18:15 +0200)]
Cygwin: mq_open: set filesize using ftruncate

ftruncate is leaner than lseek/write.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: CI configuration update
Jon Turney [Tue, 27 Oct 2020 16:29:45 +0000 (16:29 +0000)]
Cygwin: CI configuration update

Install autoconf and automake, and run winsup/autogen.sh, and don't have
it silently ignore failures.

On AppVeyor:
- use latest VM image, to reduce time spent installing updates.
- run the testsuite, but ignore the result, as some tests don't work
correctly.
- hardcode the python-lxml and python-ply packages to install, so we get
ones for the right python.
- install texlive collections now needed to build documentation.

On github:
- Use a copr for cocom, since RPMSphere's package updates don't track
fedora:latest very efficently.

3 years agoCygwin: POSIX mq: avoid double calls to ipc_mutex_unlock
Corinna Vinschen [Fri, 30 Apr 2021 08:30:21 +0000 (10:30 +0200)]
Cygwin: POSIX mq: avoid double calls to ipc_mutex_unlock

_mq_send as well as _mq_receive call ipc_mutex_unlock twice in case
of success, after having introduced __try/__except blocks.

Fixes: 3f3bd10104550 ("* Throughout, use __try/__except/__endtry blocks, rather than myfault handler.")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: POSIX mq: only allo priority up to MQ_PRIO_MAX - 1
Corinna Vinschen [Thu, 29 Apr 2021 18:04:24 +0000 (20:04 +0200)]
Cygwin: POSIX mq: only allo priority up to MQ_PRIO_MAX - 1

POSIX requires that message priorities range from 0 (low) to
sysconf(_SC_MQ_PRIO_MAX) - 1 (high).  Cygwin's mq_send erroneously
allowed a message priority of sysconf(_SC_MQ_PRIO_MAX).  Fix it.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: FAQ: building-cygwin: accomodate autoconf changes
Corinna Vinschen [Thu, 29 Apr 2021 10:07:00 +0000 (12:07 +0200)]
Cygwin: FAQ: building-cygwin: accomodate autoconf changes

- also, rephrase slightly for better readability and
  remove questionable old cruft

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: automake: change @INCLUDES@ to @AM_CPPFLAGS@ to avoid warnings
Corinna Vinschen [Thu, 29 Apr 2021 09:23:11 +0000 (11:23 +0200)]
Cygwin: automake: change @INCLUDES@ to @AM_CPPFLAGS@ to avoid warnings

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: automake: fix warning in terms of the `ps' target
Corinna Vinschen [Thu, 29 Apr 2021 08:59:29 +0000 (10:59 +0200)]
Cygwin: automake: fix warning in terms of the `ps' target

We are building a ps executable, but the rule to build the target
collides with an auto-generated, documentation-related `ps' rule.

Work around that by naming the executable "cygps" at build time
and use a transform rule to rename it at installation time.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: specify toollibdir toolincludedir in terms of tooldir
Jon Turney [Wed, 28 Apr 2021 09:46:02 +0000 (11:46 +0200)]
Cygwin: specify toollibdir toolincludedir in terms of tooldir

Specify toollibdir and toolincludedir in terms of tooldir, so the
install location is correct if tooldir is the default
($(exec_prefix)/$(target_alias)), or explicitly specified on the 'make'
command line.

3 years agoCygwin: drop all generated autotools files
Corinna Vinschen [Wed, 28 Apr 2021 10:03:52 +0000 (12:03 +0200)]
Cygwin: drop all generated autotools files

- add autotool files generated under winsup to .gitignore

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoformat_proc_cpuinfo: add v_spec_ctrl, bus_lock_detect
Brian Inglis [Tue, 27 Apr 2021 23:28:52 +0000 (17:28 -0600)]
format_proc_cpuinfo: add v_spec_ctrl, bus_lock_detect

Linux 5.12 Frozen Wasteland added features and changes:
add AMD 0x8000000a EDX:20 v_spec_ctrl virtual speculation control support
add Intel 0x00000007 ECX:24 bus_lock_detect bus lock detect debug exception

3 years agoCygwin: tty.h: devices.h is a local header, not a system header
Corinna Vinschen [Tue, 27 Apr 2021 19:25:29 +0000 (21:25 +0200)]
Cygwin: tty.h: devices.h is a local header, not a system header

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: Use automake (v5)
Jon Turney [Tue, 6 Oct 2020 15:11:54 +0000 (16:11 +0100)]
Cygwin: Use automake (v5)

v2:
* Include tzmap.h in BUILT_SOURCES
* Make per-file flags appear after user-supplied CXXFLAGS, so they can
override optimization level.
* Correct .o files used to define symbols exported by libm.a
* Drop gcrt0.o mistakenly included in libgmon.a
* Add missing line continuations in GMON_FILES value

v3:
* use per-file flags for .c compilation
* override C{XX,}FLAGS, as they are set on the command line by top-level make

v4:
* Drop -Wno-error=write-strings from path_testsuite CXXFLAGS

v5:
* Update for changes in master
- Add -fno-threadsafe-statics to CXX flags
- Add hypotl.cc
- Remove fenv.cc (in favour of newlib), add fenv.c stub
- Add proc.5 manpage rules

3 years agoCygwin: connect: implement resetting a connected DGRAM socket
Ken Brown [Fri, 23 Apr 2021 22:17:57 +0000 (18:17 -0400)]
Cygwin: connect: implement resetting a connected DGRAM socket

Following POSIX and Linux, allow a connected DGRAM socket's connection
to be reset (so that the socket becomes unconnected).  This is done by
calling connect and specifing an address whose family is AF_UNSPEC.

3 years agoCygwin: connect: set connect state for DGRAM sockets
Ken Brown [Fri, 23 Apr 2021 18:40:07 +0000 (14:40 -0400)]
Cygwin: connect: set connect state for DGRAM sockets

When connect is called on a DGRAM socket, the call to Winsock's
connect can immediately return successfully rather than failing with
WSAEWOULDBLOCK.  Set the connect state to "connected" in this case.

Previously the connect state remained "connect_pending" after the
successful connection.

3 years agobfin: add myself as maintainer
Mike Frysinger [Sun, 25 Apr 2021 17:23:07 +0000 (13:23 -0400)]
bfin: add myself as maintainer

3 years agoCygwin: pty: Add missing guard for close_pseudoconsole().
Takashi Yano [Wed, 21 Apr 2021 03:07:31 +0000 (12:07 +0900)]
Cygwin: pty: Add missing guard for close_pseudoconsole().

- This patch adds a missing mutex guard for close_pseudoconsole()
  call when GDB exits.

3 years agoCygwin: pty: Fix fallback processing in setup_pseudoconsole().
Takashi Yano [Wed, 21 Apr 2021 03:06:43 +0000 (12:06 +0900)]
Cygwin: pty: Fix fallback processing in setup_pseudoconsole().

- Currently, the fallback processing in setup_pseudoconsole()
  when helper process error occurs does not work properly.
  This patch fixes the issue.

3 years agoCygwin: pty: Additional race issue fix regarding pseudo console.
Takashi Yano [Wed, 21 Apr 2021 03:06:00 +0000 (12:06 +0900)]
Cygwin: pty: Additional race issue fix regarding pseudo console.

- In commit bb93c6d7, the race issue was not completely fixed. In
  the pseudo console inheritance, if the destination process to
  which the ownership of pseudo console switches, is found but exits
  before switching, the inheritance fails. Currently, this extremely
  rarely happens. This patch fixes the issue.

3 years agoCygwin: skip native symlink check in Windows dir under WOW64
Corinna Vinschen [Wed, 21 Apr 2021 15:32:06 +0000 (17:32 +0200)]
Cygwin: skip native symlink check in Windows dir under WOW64

Commit 456c3a46386f added a workaround when handling paths with native
symlinks as inner path components.  This patch introduced a problem for
paths handled by the WOW64 File System Redirector (FSR).

Fix this problem by not performing the new code from commit 456c3a46386f
for paths under the Windows directory.  Only do this in WOW64.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agofix some Arm FP routines not checking if floating point is enabled
Ties Stuij [Wed, 21 Apr 2021 12:48:03 +0000 (13:48 +0100)]
fix some Arm FP routines not checking if floating point is enabled

A lot of the Arm FP routines check for the availability of floating point by way
of `(__ARM_FP & 0x4)`. However some do not. This patch remedies this.

3 years agoCygwin: add 3.2.1 release file and add fixes up to this point
Corinna Vinschen [Tue, 20 Apr 2021 08:46:01 +0000 (10:46 +0200)]
Cygwin: add 3.2.1 release file and add fixes up to this point

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pty: Make rlwrap work with cmd.exe.
Takashi Yano [Mon, 19 Apr 2021 11:51:53 +0000 (20:51 +0900)]
Cygwin: pty: Make rlwrap work with cmd.exe.

- After the commit 919dea66, "rlwrap cmd" fails to start pseudo
  console. This patch fixes the issue.

3 years agoCygwin: pty: Fix race issue in inheritance of pseudo console.
Takashi Yano [Mon, 19 Apr 2021 10:30:46 +0000 (19:30 +0900)]
Cygwin: pty: Fix race issue in inheritance of pseudo console.

- If multiple non-cygwin processes are started/ended simultaneously,
  inheritance of pseudo console sometimes fails. This patch fixes
  the issue.

  Addresses:
    https://cygwin.com/pipermail/cygwin/2021-April/248292.html

3 years agoCygwin: console: Fix race issue regarding cons_master_thread().
Takashi Yano [Mon, 19 Apr 2021 10:30:45 +0000 (19:30 +0900)]
Cygwin: console: Fix race issue regarding cons_master_thread().

- With this patch, the race issue regarding starting/stopping
  cons_master_thread() introduced by commit ff4440fc is fixed.

  Addresses:
    https://cygwin.com/pipermail/cygwin/2021-April/248292.html

3 years agoscanf: allow hex float input per POSIX
Corinna Vinschen [Mon, 19 Apr 2021 19:59:56 +0000 (21:59 +0200)]
scanf: allow hex float input per POSIX

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: console: Fix a bug in the code to fix tab position.
Takashi Yano [Mon, 19 Apr 2021 10:31:51 +0000 (19:31 +0900)]
Cygwin: console: Fix a bug in the code to fix tab position.

- With this patch, a bug in the code to fix tab position after
  resizing window is fixed.

3 years agoCygwin: path_conv: Try to handle native symlinks more sanely
Corinna Vinschen [Mon, 19 Apr 2021 12:49:14 +0000 (14:49 +0200)]
Cygwin: path_conv: Try to handle native symlinks more sanely

For local paths, add a check if the inner path components contain native
symlinks or junctions.  Compare the incoming path with the path returned
by NtQueryInformationFile(FileNameInformation).  If they differ, there
must be at least one native symlink or junction in the path.  If so,
treat the currently evaluated file as non-existant.  This forces
path_conv::check to backtrack inner path components until we eliminated
all native symlinks or junctions and have a normalized path.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: take hypotl function from Mingw-w64
Corinna Vinschen [Mon, 19 Apr 2021 10:37:44 +0000 (12:37 +0200)]
Cygwin: take hypotl function from Mingw-w64

The simple newlib hypotl for real long double architectures is too
simple at this point.  It's implemented as a real call to sqrtl(x^2+y^2).
This has a fatal tendency to overflow for big input numbers.  Hypotl
isn't supposed to do that if the result would still be valid in range of
long double.

Given the complexity of implementing hypotl for various architectures,
we just take the hypotl function from Mingw-w64, which is in the public
domain.

Even though this hypotl is an architecture-independent implementation,
we can't use it for newlib yet, unfortunately, because it requires logbl
under the hood.  Logbl is yet another function missing in newlib for
real long double architectures.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agofenv: fix up stub file comment, drop symlinks from description
David Macek [Wed, 7 Apr 2021 08:49:00 +0000 (10:49 +0200)]
fenv: fix up stub file comment, drop symlinks from description

also slightly fixed up formatting

3 years agoCygwin: fix fenv.h includes
Corinna Vinschen [Tue, 6 Apr 2021 09:51:21 +0000 (11:51 +0200)]
Cygwin: fix fenv.h includes

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: don't export _feinitialise from newlib
Corinna Vinschen [Wed, 24 Mar 2021 10:06:58 +0000 (11:06 +0100)]
Cygwin: don't export _feinitialise from newlib

Use the more official fesetenv(FE_DFL_ENV) from _dll_crt0, thus
allowing to drop the _feinitialise declaration from fenv.h.

Provide a no-op _feinitialise in Cygwin as exportable symbol for really
old applications when _feinitialise was called from mainCRTStartup in
crt0.o.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agofenv: drop Cygwin-specific implementation in favor of newlib code
Corinna Vinschen [Wed, 24 Mar 2021 09:58:56 +0000 (10:58 +0100)]
fenv: drop Cygwin-specific implementation in favor of newlib code

Drop the Cygwin-specific fenv.cc and fenv.h file and use the equivalent
newlib functionality now, so we have at least one example of a user for
this new mechanism.

fenv.c: allow _feinitialise to be called from Cygwin startup code

fenv.h: add declarations for fegetprec and fesetprec for Cygwin only.
        Fix a comment.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agofenv: move shared x86 fenv.c to libm/machine/shared_x86
Corinna Vinschen [Wed, 24 Mar 2021 09:51:20 +0000 (10:51 +0100)]
fenv: move shared x86 fenv.c to libm/machine/shared_x86

Include this file from both sharing architectures, i386 and x86_64.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agofenv: Move shared x86 sys/fenv.h from x86_64 to shared_x86
Corinna Vinschen [Wed, 24 Mar 2021 09:48:34 +0000 (10:48 +0100)]
fenv: Move shared x86 sys/fenv.h from x86_64 to shared_x86

drop matching symlink in i386

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This page took 0.072663 seconds and 5 git commands to generate.