]> sourceware.org Git - newlib-cygwin.git/log
newlib-cygwin.git
2 years agotexi2pod.pl: add no-op --no-split option support [PR28144]
Sergei Trofimovich [Mon, 26 Jul 2021 21:51:18 +0000 (22:51 +0100)]
texi2pod.pl: add no-op --no-split option support [PR28144]

Change 2faf902da ("generate single html manual page by default")
added use of --no-split option to makeinfo. binutils reuses
makeinfo options for texi2pod.pl wrapper. Unsupported option
led to silent manpage truncation.

The change adds no-op option support.

etc/

* texi2pod.pl: Handle no-op --no-split option.

2 years agoUpdate year range in copyright notice of binutils files
Alan Modra [Thu, 31 Dec 2020 22:58:58 +0000 (09:28 +1030)]
Update year range in copyright notice of binutils files

2 years agoAdd libctf to update-copyright.py
Alan Modra [Thu, 31 Dec 2020 22:53:40 +0000 (09:23 +1030)]
Add libctf to update-copyright.py

2 years agotexi2pod.pl: import support for @t{...} from gcc
Simon Marchi [Wed, 15 Jan 2020 17:58:08 +0000 (12:58 -0500)]
texi2pod.pl: import support for @t{...} from gcc

GDB's man page source (in gdb.texinfo) contains:

    @t{++}

The @t{...} part is supposed to display the wrapped text with a
fixed-width font.  The texi2pod.pl script currently doesn't handle
@t{...}, so it appears as-is in the man page:

    You can use GDB to debug programs written in C, C@t{++}, Fortran and Modula-2.

gcc's version of texi2pod.pl (at contrib/texi2pod.pl in gcc's repo)
replaces @t{...} with the wrapped text as-is, which I think is an
acceptable behavior.  The fixed-width font distinction is not really
important for a man page, where the text will be displayed with whatever
font the user is using.

Import the line that does that from gcc's version.

I have verified that there is no other, unwanted change in man pages
generated in binutils' and GDB's doc, with this patch applied.

etc/ChangeLog:

* texi2pod.pl: Handle @t{...} tags.

2 years agoUpdate year range in copyright notice of binutils files
Alan Modra [Tue, 1 Jan 2019 10:31:27 +0000 (21:01 +1030)]
Update year range in copyright notice of binutils files

2 years agoBump to autoconf 2.69 and automake 1.15.1
Simon Marchi [Tue, 19 Jun 2018 20:54:48 +0000 (16:54 -0400)]
Bump to autoconf 2.69 and automake 1.15.1

When trying to run the update-gnulib.sh script in gdb, I get this:

Error: Wrong automake version (Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ([^      =:+{}]+)}/ at /opt/automake/1.11.1/bin/automake line 4113.), we need 1.11.1.
Aborting.

Apparently, it's an issue with a regex in automake that triggers a
warning starting with Perl 5.22.  It has been fixed in automake 1.15.1.
So I think it's a good excuse to bump the versions of autoconf and
automake used in the gnulib import.  And to avoid requiring multiple
builds of autoconf/automake, it was suggested that we bump the required
version of those tools for all binutils-gdb.

For autoconf, the 2.69 version is universally available, so it's an easy
choice.  For automake, different distros and distro versions have
different automake versions.  But 1.15.1 seems to be the most readily
available as a package.  In any case, it's easy to build it from source.

I removed the version checks from AUTOMAKE_OPTIONS and AC_PREREQ,
because I don't think they are useful in our case.  They only specify a
lower bound for the acceptable version of automake/autoconf.  That's
useful if you let the user choose the version of the tool they want to
use, but want to set a minimum version (because you use a feature that
was introduced in that version).  In our case, we force people to use a
specific version anyway.  For the autoconf version, we have the check in
config/override.m4 that enforces the version we want.  It will be one
less thing to update next time we change autotools version.

I hit a few categories of problems that required some changes.  They are
described below along with the chosen solutions.

Problem 1:

  configure.ac:17: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.  For more info, see:
  configure.ac:17: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation

Solution 1:

  Adjust the code based on the example at that URL.

Problem 2 (in zlib/):

  Makefile.am: error: required file './INSTALL' not found
  Makefile.am:   'automake --add-missing' can install 'INSTALL'
  Makefile.am: error: required file './NEWS' not found
  Makefile.am: error: required file './AUTHORS' not found
  Makefile.am: error: required file './COPYING' not found
  Makefile.am:   'automake --add-missing' can install 'COPYING'

Solution 2:

  Add the foreign option to AUTOMAKE_OPTIONS.

Problem 3:

  doc/Makefile.am:20: error: support for Cygnus-style trees has been removed

Solution 3:

  Remove the cygnus options.

Problem 4:

  Makefile.am:656: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')

Solution 4:

  Rename "INCLUDES = " to "AM_CPPFLAGS += " (because AM_CPPFLAGS is
  already defined earlier).

Problem 5:

  doc/Makefile.am:71: warning: suffix '.texinfo' for Texinfo files is discouraged; use '.texi' instead
  doc/Makefile.am: warning: Oops!
  doc/Makefile.am:     It appears this file (or files included by it) are triggering
  doc/Makefile.am:     an undocumented, soon-to-be-removed automake hack.
  doc/Makefile.am:     Future automake versions will no longer place in the builddir
  doc/Makefile.am:     (rather than in the srcdir) the generated '.info' files that
  doc/Makefile.am:     appear to be cleaned, by e.g. being listed in CLEANFILES or
  doc/Makefile.am:     DISTCLEANFILES.
  doc/Makefile.am:     If you want your '.info' files to be placed in the builddir
  doc/Makefile.am:     rather than in the srcdir, you have to use the shiny new
  doc/Makefile.am:     'info-in-builddir' automake option.

Solution 5:

  Rename .texinfo files to .texi.

Problem 6:

  doc/Makefile.am: warning: Oops!
  doc/Makefile.am:     It appears this file (or files included by it) are triggering
  doc/Makefile.am:     an undocumented, soon-to-be-removed automake hack.
  doc/Makefile.am:     Future automake versions will no longer place in the builddir
  doc/Makefile.am:     (rather than in the srcdir) the generated '.info' files that
  doc/Makefile.am:     appear to be cleaned, by e.g. being listed in CLEANFILES or
  doc/Makefile.am:     DISTCLEANFILES.
  doc/Makefile.am:     If you want your '.info' files to be placed in the builddir
  doc/Makefile.am:     rather than in the srcdir, you have to use the shiny new
  doc/Makefile.am:     'info-in-builddir' automake option.

Solution 6:

  Remove the hack at the bottom of doc/Makefile.am and use
  the info-in-builddir automake option.

Problem 7:

  doc/Makefile.am:35: error: required file '../texinfo.tex' not found
  doc/Makefile.am:35:   'automake --add-missing' can install 'texinfo.tex'

Solution 7:

  Use the no-texinfo.tex automake option.  We also have one in
  texinfo/texinfo.tex, not sure if we should point to that, or move it
  (or a newer version of it added with automake --add-missing) to
  top-level.

Problem 8:

  Makefile.am:131: warning: source file 'config/tc-aarch64.c' is in a subdirectory,
  Makefile.am:131: but option 'subdir-objects' is disabled
  automake: warning: possible forward-incompatibility.
  automake: At least a source file is in a subdirectory, but the 'subdir-objects'
  automake: automake option hasn't been enabled.  For now, the corresponding output
  automake: object file(s) will be placed in the top-level directory.  However,
  automake: this behaviour will change in future Automake versions: they will
  automake: unconditionally cause object files to be placed in the same subdirectory
  automake: of the corresponding sources.
  automake: You are advised to start using 'subdir-objects' option throughout your
  automake: project, to avoid future incompatibilities.

Solution 8:

  Use subdir-objects, that means adjusting references to some .o that will now
  be in config/.

Problem 9:

  configure.ac:375: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
  ../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
  ../../lib/autoconf/general.m4:2601: _AC_COMPILE_IFELSE is expanded from...
  ../../lib/autoconf/general.m4:2617: AC_COMPILE_IFELSE is expanded from...
  ../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from...
  ../../lib/autoconf/general.m4:2042: AC_CACHE_VAL is expanded from...
  ../../lib/autoconf/general.m4:2063: AC_CACHE_CHECK is expanded from...
  configure.ac:375: the top level

Solution 9:

  Use AC_LANG_SOURCE, or use proper quoting.

Problem 10 (in intl/):

  configure.ac:7: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
  /usr/share/aclocal/threadlib.m4:36: gl_THREADLIB_EARLY_BODY is expanded from...
  /usr/share/aclocal/threadlib.m4:29: gl_THREADLIB_EARLY is expanded from...
  /usr/share/aclocal/threadlib.m4:318: gl_THREADLIB is expanded from...
  /usr/share/aclocal/lock.m4:9: gl_LOCK is expanded from...
  /usr/share/aclocal/intl.m4:211: gt_INTL_SUBDIR_CORE is expanded from...
  /usr/share/aclocal/intl.m4:25: AM_INTL_SUBDIR is expanded from...
  /usr/share/aclocal/gettext.m4:57: AM_GNU_GETTEXT is expanded from...
  configure.ac:7: the top level

Solution 10:

  Add AC_USE_SYSTEM_EXTENSIONS in configure.ac.

ChangeLog:

* libtool.m4: Use AC_LANG_SOURCE.
* configure.ac: Remove AC_PREREQ, use AC_LANG_SOURCE.
* README-maintainer-mode: Update version requirements.
* ar-lib: New file.
* test-driver: New file.
* configure: Re-generate.

bfd/ChangeLog:

* Makefile.am (AUTOMAKE_OPTIONS): Remove 1.11.
(INCLUDES): Rename to ...
(AM_CPPFLAGS): ... this.
* configure.ac: Remove AC_PREREQ.
* doc/Makefile.am (AUTOMAKE_OPTIONS): Remove 1.9, cygnus, add
info-in-builddir no-texinfo.tex.
(info_TEXINFOS): Rename bfd.texinfo to bfd.texi.
* doc/bfd.texinfo: Rename to ...
* doc/bfd.texi: ... this.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* config.in: Re-generate.
* configure: Re-generate.
* doc/Makefile.in: Re-generate.

binutils/ChangeLog:

* configure.ac: Remove AC_PREREQ.
* doc/Makefile.am (AUTOMAKE_OPTIONS): Remove cygnus, add
info-in-builddir no-texinfo.tex.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* config.in: Re-generate.
* configure: Re-generate.
* doc/Makefile.in: Re-generate.

config/ChangeLog:

* override.m4 (_GCC_AUTOCONF_VERSION): Bump from 2.64 to 2.69.

etc/ChangeLog:

* configure.in: Remove AC_PREREQ.
* configure: Re-generate.

gas/ChangeLog:

* Makefile.am (AUTOMAKE_OPTIONS): Remove 1.11, add subdir-objects.
(TARG_CPU_O, OBJ_FORMAT_O, ATOF_TARG_O): Add config/ prefix.
* configure.ac (TARG_CPU_O, OBJ_FORMAT_O, ATOF_TARG_O, emfiles,
extra_objects): Add config/ prefix.
* doc/as.texinfo: Rename to...
* doc/as.texi: ... this.
* doc/Makefile.am: Rename as.texinfo to as.texi throughout.
Remove DISTCLEANFILES hack.
(AUTOMAKE_OPTIONS): Remove 1.8, cygnus, add no-texinfo.tex and
info-in-builddir.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* config.in: Re-generate.
* configure: Re-generate.
* doc/Makefile.in: Re-generate.

gdb/ChangeLog:

* common/common-defs.h (PACKAGE_NAME, PACKAGE_VERSION,
PACKAGE_STRING, PACKAGE_TARNAME): Undefine.
* configure.ac: Remove AC_PREREQ, add missing quoting.
* gnulib/configure.ac: Modernize usage of
AC_INIT/AM_INIT_AUTOMAKE.  Remove AC_PREREQ.
* gnulib/update-gnulib.sh (AUTOCONF_VERSION): Bump to 2.69.
(AUTOMAKE_VERSION): Bump to 1.15.1.
* configure: Re-generate.
* config.in: Re-generate.
* aclocal.m4: Re-generate.
* gnulib/aclocal.m4: Re-generate.
* gnulib/config.in: Re-generate.
* gnulib/configure: Re-generate.
* gnulib/import/Makefile.in: Re-generate.

gdb/gdbserver/ChangeLog:

* configure.ac: Remove AC_PREREQ, add missing quoting.
* configure: Re-generate.
* config.in: Re-generate.
* aclocal.m4: Re-generate.

gdb/testsuite/ChangeLog:

* configure.ac: Remove AC_PREREQ.
* configure: Re-generate.

gold/ChangeLog:

* configure.ac: Remove AC_PREREQ, add missing quoting and usage
of AC_LANG_SOURCE.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* configure: Re-generate.
* testsuite/Makefile.in: Re-generate.

gprof/ChangeLog:

* configure.ac: Remove AC_PREREQ.
* Makefile.am: Remove DISTCLEANFILES hack.
(AUTOMAKE_OPTIONS): Remove 1.11, add info-in-builddir.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* configure: Re-generate.
* gconfig.in: Re-generate.

intl/ChangeLog:

* configure.ac: Add AC_USE_SYSTEM_EXTENSIONS, remove AC_PREREQ.
* configure: Re-generate.
* config.h.in: Re-generate.
* aclocal.m4: Re-generate.

ld/ChangeLog:

* configure.ac: Remove AC_PREREQ.
* Makefile.am: Remove DISTCLEANFILES hack, rename ld.texinfo to
ld.texi, ldint.texinfo to ldint.texi throughout.
(AUTOMAKE_OPTIONS): Add info-in-builddir.
* README: Rename ld.texinfo to ld.texi, ldint.texinfo to
ldint.texi throughout.
* gen-doc.texi: Likewise.
* h8-doc.texi: Likewise.
* ld.texinfo: Rename to ...
* ld.texi: ... this.
* ldint.texinfo: Rename to ...
* ldint.texi: ... this.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* config.in: Re-generate.
* configure: Re-generate.

libdecnumber/ChangeLog:

* configure.ac: Remove AC_PREREQ.
* configure: Re-generate.
* aclocal.m4.

libiberty/ChangeLog:

* configure.ac: Remove AC_PREREQ.
* configure: Re-generate.
* config.in: Re-generate.

opcodes/ChangeLog:

* Makefile.am (AUTOMAKE_OPTIONS): Remove 1.11.
* configure.ac: Remove AC_PREREQ.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* configure: Re-generate.

readline/ChangeLog.gdb:

* configure: Re-generate.
* examples/rlfe/configure: Re-generate.

sim/ChangeLog:

* All configure.ac: Remove AC_PREREQ.
* All configure: Re-generate.

zlib/ChangeLog.bin-gdb:

* configure.ac: Modernize AC_INIT call, remove AC_PREREQ.
* Makefile.am (AUTOMAKE_OPTIONS): Remove 1.8, cygnus, add
foreign.
* Makefile.in: Re-generate.
* aclocal.m4: Re-generate.
* configure: Re-generate.

2 years agoUpdate year range in copyright notice of binutils files
Alan Modra [Wed, 3 Jan 2018 05:17:27 +0000 (15:47 +1030)]
Update year range in copyright notice of binutils files

2 years agoUpdate the address of the FSF in the copyright notice of files which were using the...
Nick Clifton [Thu, 14 Dec 2017 12:48:55 +0000 (12:48 +0000)]
Update the address of the FSF in the copyright notice of files which were using the old address.

top * COPYING.LIBGLOSS: Update address of FSF in copyright notice.

bfd * cpu-mt.c: Update address of FSF in copyright notice.
* elf32-m32c.c: Likewise.
* elf32-mt.c: Likewise.
* elf32-rl78.c: Likewise.
* elf32-rx.c: Likewise.
* elf32-rx.h: Likewise.
* elf32-spu.h: Likewise.
* hosts/x86-64linux.h: Likewise.

etc * add-log.el: Update address of FSF in copyright notice.

gas * config/tc-m32c.c: Update address of FSF in copyright notice.
* config/tc-m32c.h: Likewise.
* config/tc-mt.c: Likewise.
* config/tc-mt.h: Likewise.
* config/tc-visium.c: Likewise.
* config/tc-visium.h: Likewise.
* testsuite/gas/rx/explode: Likewise.

ld * testsuite/ld-mn10300/mn10300.exp: Update address of FSF in
copyright notice.

2 years agoupdate-copyright.py for binutils
Alan Modra [Wed, 4 Jan 2017 13:19:58 +0000 (23:49 +1030)]
update-copyright.py for binutils

This is a modified form of gcc's contrib/update-copyright.py.

* update-copyright.py: New file.
* add-log.el: Update copyright year range.
* texi2pod.pl: Likewise.

2 years agoFix compile time warning messages building with gcc v6.1.1
Nick Clifton [Mon, 13 Jun 2016 09:49:26 +0000 (10:49 +0100)]
Fix compile time warning messages building with gcc v6.1.1

etc * texi2pod.pl: Escape curly braces, whilst searching for keyword
strong.

gas * config/tc-arm.c: For non-ELF based targets skip ARM feature sets
that are not supported.

* config/tc-arc.c (md_apply_fix): Avoid left shifting a signed
constant.
* config/tc-cr16.c (check_range): Likewise.
* config/tc-nios2.c (nios2_check_overflow): Likewise.

2 years agoCygwin: pipe: Handle WAIT_CANCELED when waiting read_mtx.
Takashi Yano [Wed, 10 Nov 2021 03:24:53 +0000 (12:24 +0900)]
Cygwin: pipe: Handle WAIT_CANCELED when waiting read_mtx.

- Add missing handling for WAIT_CANCELED in cygwait() for read_mtx
  in raw_read().

2 years agonewlib: mips: delete glibc-specific logic
Mike Frysinger [Tue, 9 Nov 2021 03:18:43 +0000 (22:18 -0500)]
newlib: mips: delete glibc-specific logic

This code looks like it's written to be copied & pasted between diff
C libraries and relies on _LIBC only being used with glibc.  This will
break when newlib changes from _COMPILING_NEWLIB to _LIBC, so delete
the glibc-specific logic ahead of time.

2 years agoCygwin: pipe: Avoid false EOF while reading output of C# programs.
Takashi Yano [Sun, 7 Nov 2021 03:47:18 +0000 (12:47 +0900)]
Cygwin: pipe: Avoid false EOF while reading output of C# programs.

- If output of C# program is redirected to pipe, pipe reader falsely
  detects EOF. This happens after overhaul of pipe implementation.
  This patch fixes the issue.

Addresses:
  https://cygwin.com/pipermail/cygwin/2021-November/249777.html

2 years agolibgloss: regenerate aclocal.m4 & configure w/newer versions
Mike Frysinger [Wed, 15 Sep 2021 04:22:54 +0000 (00:22 -0400)]
libgloss: regenerate aclocal.m4 & configure w/newer versions

Regenerate the files using automake-1.15 & autoconf-2.69 to match the
binutils/gdb/gcc projects.  Ran:

libgloss $ find -name configure.ac -printf '%h\n' | while read d; do
  (cd $d; export WANT_AUTOCONF=2.69 WANT_AUTOMAKE=1.15;
   aclocal-1.15 -I.. && autoconf-2.69); done

2 years agolibgloss/newlib: update configure.ac in Makefile.in files
Mike Frysinger [Tue, 14 Sep 2021 02:53:54 +0000 (22:53 -0400)]
libgloss/newlib: update configure.ac in Makefile.in files

The maintainer rules refer to configure.in directly, so update that
after renaming all the configure.ac files.

3 years agoCygwin: fix permission problem when writing DAC info on Samba shares
Corinna Vinschen [Thu, 4 Nov 2021 20:48:45 +0000 (21:48 +0100)]
Cygwin: fix permission problem when writing DAC info on Samba shares

Cygwin always requests FILE_WRITE_ATTRIBUTES permissions when trying to
change DAC information.  This can lead to permission problems when
trying to chmod/chown files on Samba shares.  Drop requesting
FILE_WRITE_ATTRIBUTES on Samba shares and go with WRITE_DAC/WRITE_OWNER
only.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: Add a new 3.4.0 rel notes file
Corinna Vinschen [Thu, 4 Nov 2021 10:59:25 +0000 (11:59 +0100)]
Cygwin: Add a new 3.4.0 rel notes file

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: add release note for rounding issue
Corinna Vinschen [Thu, 4 Nov 2021 10:54:22 +0000 (11:54 +0100)]
Cygwin: add release note for rounding issue

Also rename release 3.4.0 to 3.3.2.  It doesn't make sense to
duplicate the issues fixed in 3.3.x into the 3.4.0 relnotes.
Only patches not backported into 3.3.x belong into 3.4.0.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoldtoa: fix dropping too many digits from output
Corinna Vinschen [Thu, 4 Nov 2021 10:30:44 +0000 (11:30 +0100)]
ldtoa: fix dropping too many digits from output

ldtoa cuts the number of digits it returns based on a computation of
number of supported bits (144) divide by log10(2).  Not only is the
integer approximation of log10(2) ~= 8/27 missing a digit here, it
also fails to take really small double and long double values into
account.

Allow for the full potential precision of long double values.  At the
same time, change the local string array allocation to request only as
much bytes as necessary to support the caller-requested number of
digits, to keep the stack size low on small targets.

In the long run a better fix would be to switch to gdtoa, as the BSD
variants, as well as Mingw64 do.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: console: Prevent the exec'ed bash from exiting by Ctrl-C.
Takashi Yano [Wed, 3 Nov 2021 06:14:42 +0000 (15:14 +0900)]
Cygwin: console: Prevent the exec'ed bash from exiting by Ctrl-C.

- Currently, bash occasionally exits by Ctrl-C with the following
  scenario.
    1) Start bash in the command prompt.
    2) Run 'exec bash'.
    3) Press Ctrl-C several times.
  This patch fixes the issue.

3 years agoCygwin: add release note
Corinna Vinschen [Tue, 2 Nov 2021 14:10:58 +0000 (15:10 +0100)]
Cygwin: add release note

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: console: Fix yet another bug on input when signalled.
Takashi Yano [Tue, 2 Nov 2021 08:09:40 +0000 (17:09 +0900)]
Cygwin: console: Fix yet another bug on input when signalled.

- Currently, read() returns EINTR due to a bug if signal handler
  is SIG_DFL and the process is suspended by Ctrl-Z and restarted.
  This patch fixes the issue.

3 years agoCygwin: console: Fix a bug on input when signalled.
Takashi Yano [Tue, 2 Nov 2021 03:40:10 +0000 (12:40 +0900)]
Cygwin: console: Fix a bug on input when signalled.

- This patch fixes the bug that Ctrl-C sometimes does not work as
  expected in Windows Terminal.

Addresses:
  https://cygwin.com/pipermail/cygwin/2021-November/249749.html

3 years agoCygwin: remove unused lsaauth authentication function
Corinna Vinschen [Fri, 29 Oct 2021 19:03:07 +0000 (21:03 +0200)]
Cygwin: remove unused lsaauth authentication function

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: remove support for Vista entirely
Corinna Vinschen [Fri, 29 Oct 2021 16:18:24 +0000 (18:18 +0200)]
Cygwin: remove support for Vista entirely

Fix up a few comments while at it

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: drop support for systems not supporting the CONSOLE LOGON SID
Corinna Vinschen [Fri, 29 Oct 2021 16:17:00 +0000 (18:17 +0200)]
Cygwin: drop support for systems not supporting the CONSOLE LOGON SID

i. e. Vista/2008.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: drop support for systems not supporting RFC 4646 locales
Corinna Vinschen [Fri, 29 Oct 2021 16:15:22 +0000 (18:15 +0200)]
Cygwin: drop support for systems not supporting RFC 4646 locales

i. e. Vista/2008.  This drops support for the sr_CS locale.

Regenerate LC_MESSAGES and LC_TIME ERA data from more recent Linux

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: drop support for systems not supporting processor groups
Corinna Vinschen [Fri, 29 Oct 2021 16:11:27 +0000 (18:11 +0200)]
Cygwin: drop support for systems not supporting processor groups

i. e., Vista/2008.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: drop support for simple invisible console code
Corinna Vinschen [Fri, 29 Oct 2021 16:08:32 +0000 (18:08 +0200)]
Cygwin: drop support for simple invisible console code

i. e., Vista/2008.

AllocConsole appears to allow creating a console only on the currently
visible desktop since Windows 7, which broke the simple code opening
the console on an invisible desktop in an invisible window station.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: drop support for systems not supporting QueryUnbiasedInterruptTime
Corinna Vinschen [Fri, 29 Oct 2021 16:01:33 +0000 (18:01 +0200)]
Cygwin: drop support for systems not supporting QueryUnbiasedInterruptTime

i. e., Vista/2008

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: drop Vista WOW64 specific child process handle bug
Corinna Vinschen [Fri, 29 Oct 2021 12:52:58 +0000 (14:52 +0200)]
Cygwin: drop Vista WOW64 specific child process handle bug

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: bump DLL major version cygwin-3.4.0-dev
Corinna Vinschen [Thu, 28 Oct 2021 20:29:42 +0000 (22:29 +0200)]
Cygwin: bump DLL major version

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: bump DLL minor version
Corinna Vinschen [Thu, 28 Oct 2021 11:41:19 +0000 (13:41 +0200)]
Cygwin: bump DLL minor version

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoUnconditionally declare strsignal cygwin-3_3_0-release
Christian Biesinger via Newlib [Wed, 27 Oct 2021 16:41:22 +0000 (12:41 -0400)]
Unconditionally declare strsignal

Currently, newlib does not declare strsignal if DEFS_H is defined,
ostensibly to work around a gdb bug. However, gdb itself compiles
even with this ifndef removed, and this makes sim (another part of
gdb) fail to compile.

Since it is not clear exactly what issue this was working around,
this patch just replaces that ifdef with the correct check,
i.e. __POSIX_VISIBLE >= 200809.

3 years agolibgloss/riscv: Fix hard coded reference to configure.in after rename
Lewis Revill [Wed, 27 Oct 2021 13:24:06 +0000 (14:24 +0100)]
libgloss/riscv: Fix hard coded reference to configure.in after rename

The file configure.in was renamed to configure.ac in libgloss/riscv but
the hard coded name in the Makefile for that directory was not updated.
This patch simply renamed this to configure.ac.

3 years agoCygwin: convert malloc lock to SRWLOCK
Corinna Vinschen [Tue, 26 Oct 2021 15:53:08 +0000 (17:53 +0200)]
Cygwin: convert malloc lock to SRWLOCK

Per https://cygwin.com/pipermail/cygwin-developers/2021-October/012429.html,
we may encounter a crash when starting multiple threads during process
startup (here: fhandler_fifo::fixup_after_{fork,exec}) which in turn
allocate memory via malloc.

The problem is concurrent usage of malloc before the malloc muto has
been initialized.

To fix this issue, convert the muto to a SRWLOCK and make sure it is
statically initalized.  Thus, malloc can be called as early as necessary
and malloc_init is only required to check for user space provided malloc.

Note that this requires to implement a __malloc_trylock macro to be
called from fork.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: Make native clipboard layout same for 32- and 64-bit
Mark Geisert [Mon, 25 Oct 2021 09:25:40 +0000 (02:25 -0700)]
Cygwin: Make native clipboard layout same for 32- and 64-bit

This patch unifies the layout of the clipboard descriptor cygcb_t for
32- and 64-bit Cygwin.  It allows correct copy/paste between the two
environments without corruption of user's copied data and without access
violations due to interpreting that data as a size field.

The definitions of CYGWIN_NATIVE and cygcb_t are moved to a new include
file, sys/clipboard.h.  The include file is used by fhandler_clipboard.cc
as well as getclip.c and putclip.c in the Cygwin cygutils package.

When copy/pasting between 32- and 64-bit Cygwin environments, both must
be running version 3.3.0 or later for successful operation.

3 years agoCygwin: document sig2str and str2sig in version.h
Ken Brown [Fri, 22 Oct 2021 17:56:05 +0000 (13:56 -0400)]
Cygwin: document sig2str and str2sig in version.h

3 years agoCygwin: drop outdated -O3 optimization for malloc and sync
Corinna Vinschen [Fri, 22 Oct 2021 10:47:09 +0000 (12:47 +0200)]
Cygwin: drop outdated -O3 optimization for malloc and sync

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: update cygcheck OS information
Corinna Vinschen [Thu, 21 Oct 2021 16:33:35 +0000 (18:33 +0200)]
Cygwin: update cygcheck OS information

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipe: Use NtQuerySystemInformation() instead of EnumProcesses().
Takashi Yano [Tue, 19 Oct 2021 08:40:19 +0000 (17:40 +0900)]
Cygwin: pipe: Use NtQuerySystemInformation() instead of EnumProcesses().

- Using EnumProcess() breaks Windows Vista compatibility. This patch
  replaces EnumProcesses() with NtQuerySystemInformation().

Addresses:
https://cygwin.com/pipermail/cygwin-developers/2021-October/012422.html

3 years agostring: Fix buffer overrun in picolibc/newlib/libc/string/strrchr.c (#184)
Keith Packard [Mon, 11 Oct 2021 16:24:54 +0000 (09:24 -0700)]
string: Fix buffer overrun in picolibc/newlib/libc/string/strrchr.c (#184)

Reported by prodisDown:

In picolibc/newlib/libc/string/strrchr.c

if (i) { while ((s=strchr(s, i))) { last = s; s++; } } else { last = strchr(s, i); }

Value (for example 0xFFFFFF00) in if (i) can pass test and
then be typecasted to char inside strchr(). Then s++ and then
buffer overrun.

It can be fixed by preventive typecast i = (int) (char) i; or
typecasting inside expression if ((char) i).

Fixed by casting to char.

Signed-off-by: Keith Packard <keithp@keithp.com>
3 years agoCygwin: pty: Fix handle leak regarding attach_mutex.
Takashi Yano [Sun, 10 Oct 2021 00:49:53 +0000 (09:49 +0900)]
Cygwin: pty: Fix handle leak regarding attach_mutex.

- If the process having master pty opened is forked, attach_mutex
  fails to be closed when master is closed. This patch fixes the
  issue.

3 years agoCygwin: pty: Fix master closing error regarding attach_mutex.
Takashi Yano [Fri, 8 Oct 2021 16:28:54 +0000 (01:28 +0900)]
Cygwin: pty: Fix master closing error regarding attach_mutex.

- If two or more pty masters are opened in a process, closing master
  causes error when closing attach_mutex. This patch fixes the issue.

Addresses:
https://cygwin.com/pipermail/cygwin-developers/2021-October/012418.html

3 years agosys/tree.h: Red child with black sibling rotations
Sebastian Huber [Tue, 5 Oct 2021 13:53:47 +0000 (15:53 +0200)]
sys/tree.h: Red child with black sibling rotations

Add specialized rotations RB_RED_ROTATE_LEFT() and RB_RED_ROTATE_RIGHT() which
may be used if we rotate a red child which has a black sibling.  Such a red
node must have at least two child nodes so that the following red-black tree
invariant is fulfilled:

  Every path from a given node to any of its descendant NULL nodes goes through
  the same number of black nodes.

      PARENT
     /      \
  BLACK     RED
           /   \
        BLACK BLACK

3 years agosys/tree.h: Add parent rotations
Sebastian Huber [Tue, 5 Oct 2021 13:43:34 +0000 (15:43 +0200)]
sys/tree.h: Add parent rotations

Add specialized rotations RB_PARENT_ROTATE_LEFT() and RB_PARENT_ROTATE_RIGHT()
which may be used if the parent node exists and the direction of the child is
known.  The specialized rotations are derived from RB_ROTATE_LEFT() and
RB_ROTATE_RIGHT() where the RB_SWAP_CHILD() was replaced by a simple
assignment.

3 years agosys/tree.h: Simplify chain of conditions
Sebastian Huber [Tue, 5 Oct 2021 13:39:10 +0000 (15:39 +0200)]
sys/tree.h: Simplify chain of conditions

In RB_GENERATE_REMOVE_COLOR() simplify a chain of conditions of the following
pattern

if (x) {
  ...
} else if (!x) {
  ...
}

to

if (x) {
  ...
} else {
  ...
}

3 years agosys/tree.h: Simplify loop condition
Sebastian Huber [Tue, 5 Oct 2021 13:31:22 +0000 (15:31 +0200)]
sys/tree.h: Simplify loop condition

We have

  #define RB_ISRED(elm, field) \
    ((elm) != NULL && RB_COLOR(elm, field) == RB_RED)

So, the RB_ISRED() contains an implicit check for NULL.  In
RB_GENERATE_REMOVE_COLOR() the "elm" pointer cannot be NULL in the while
condition.  Use RB_COLOR(elm) == RB_BLACK instead.

3 years agoCygwin: pipe: Use ProcessHandleInformation if available.
Takashi Yano [Thu, 23 Sep 2021 14:33:55 +0000 (23:33 +0900)]
Cygwin: pipe: Use ProcessHandleInformation if available.

- The commit b531d6b0 introduced temporary_query_hdl() which uses
  SystemHandleInformation. With this patch, ProcessHandleInformation
  rather than SystemHandleInformation is used if it is available.
  This request is faster, however, is only available since Windows 8,
  therefore, SystemHandleInformation is used for Windows Vista and 7
  as before.

3 years agoCygwin: pipe: Introduce temporary query_hdl.
Takashi Yano [Mon, 20 Sep 2021 23:02:43 +0000 (08:02 +0900)]
Cygwin: pipe: Introduce temporary query_hdl.

- The commit f79a4611 introduced query_hdl, which is the read pipe
  handle kept in the write pipe instance in order to determine if
  the pipe is ready to write in select().  This implementation has
  a potential risk that the write side fails to detect the closure
  of the read side if more than one writer exists and one of them
  is a non-cygwin process.

  With this patch, the strategy of commit f79a4611 is used only if
  the process is running as a service.  For a normal process,
  instead of keeping query_hdl in the write pipe instance, it is
  retrieved temporarily when select() is called.  Actually, we
  want to use tenporary query_hdl for all processes, however, it
  does not work for service processes due to OpenProcess()
  failure.

3 years agoCygwin: pipes: remove unnecessary NULL checks for hdl_cnt_mtx
Ken Brown [Sat, 18 Sep 2021 13:25:20 +0000 (09:25 -0400)]
Cygwin: pipes: remove unnecessary NULL checks for hdl_cnt_mtx

In view of the previous changes to open_setup, we can always assume
that hdl_cnt_mtx is non-NULL.

3 years agoCygwin: make callers of open_setup check for failure
Ken Brown [Sat, 18 Sep 2021 13:10:23 +0000 (09:10 -0400)]
Cygwin: make callers of open_setup check for failure

open_setup is called by dtable::init_std_file_from_handle and
fhandler_base::open_with_arch.  In both cases, failure of open_setup
is now a fatal error.

Currently this can only happen in the following situation: A Cygwin
process is started by a non-Cygwin process, one of the standard IO
handles is a pipe handle, and Cygwin is unable to create a required
mutex (read_mtx or hdl_cnt_mtx).

3 years agoCygwin: fhandler_pipe::open_setup: fail on error creating mutexes
Ken Brown [Sat, 18 Sep 2021 12:34:04 +0000 (08:34 -0400)]
Cygwin: fhandler_pipe::open_setup: fail on error creating mutexes

3 years agoCygwin: allow open_setup to fail
Ken Brown [Sat, 18 Sep 2021 12:13:55 +0000 (08:13 -0400)]
Cygwin: allow open_setup to fail

Convert fhandler_base::open_setup to a (virtual) method that returns a
bool result.  For the moment, it and its overrides always return true.

3 years agoCygwin: statically link the tools in winsup/utils/mingw
Ken Brown [Sat, 18 Sep 2021 01:38:07 +0000 (21:38 -0400)]
Cygwin: statically link the tools in winsup/utils/mingw

This fixes the problem reported here:

  https://cygwin.com/pipermail/cygwin-developers/2021-September/012375.html

3 years agoCygwin: fix typos in release notes
Ken Brown [Fri, 17 Sep 2021 20:16:14 +0000 (16:16 -0400)]
Cygwin: fix typos in release notes

3 years agoCygwin: pipe, fifo: Move query_hdl and hdl_cnt_mtx to fhandler_pipe.
Takashi Yano [Thu, 16 Sep 2021 19:23:12 +0000 (04:23 +0900)]
Cygwin: pipe, fifo: Move query_hdl and hdl_cnt_mtx to fhandler_pipe.

- query_hdl and hdl_cnt_mtx are moved from fhandler_pipe_fifo to
  fhandler_pipe. Then reader_closed() is changed to virtual and
  overridden in fhandler_pipe.

3 years agoCygwin: pipe: Fix race issue regarding handle count.
Takashi Yano [Thu, 16 Sep 2021 14:21:57 +0000 (23:21 +0900)]
Cygwin: pipe: Fix race issue regarding handle count.

- This patch fixes the race issue in the handle counting to detect
  closure of read pipe, which is introduced by commit f79a4611.
  A mutex hdl_cnt_mtx is introduced for this issue.

3 years agoCygwin: pipe: Fix error handling in fhandler_pip::create().
Takashi Yano [Thu, 16 Sep 2021 14:15:17 +0000 (23:15 +0900)]
Cygwin: pipe: Fix error handling in fhandler_pip::create().

- Currently, error handling in fhandler_pipe::create() is broken.
  This patch fixes that.

3 years agoCygwin: close_all_files: Do not duplicate stderr for write pipe.
Takashi Yano [Thu, 16 Sep 2021 11:50:54 +0000 (20:50 +0900)]
Cygwin: close_all_files: Do not duplicate stderr for write pipe.

- Currently, the stderr handle is duplicated in close_all_files().
  This interferes the handle counting for detecting closure of read
  pipe, which is introduced by commit f79a4611. This patch stops
  duplicating stderr handle if it is write pipe.

3 years agoCygwin: select: check for negative return from pipe_data_available
Ken Brown [Wed, 15 Sep 2021 16:56:34 +0000 (12:56 -0400)]
Cygwin: select: check for negative return from pipe_data_available

Make sure except_ready is set (if except_selected) on a negative
return from pipe_data_available.

3 years agonewlib: sig2str: use __restrict
Mike Frysinger [Wed, 15 Sep 2021 05:04:14 +0000 (01:04 -0400)]
newlib: sig2str: use __restrict

This matches the header prototype style and most of newlib, and fixes
building with older versions of gcc which only accept the __ form.

3 years agolibgloss: add missing aclocal.m4 files
Mike Frysinger [Wed, 15 Sep 2021 04:27:13 +0000 (00:27 -0400)]
libgloss: add missing aclocal.m4 files

These subdirs were missing aclocal.m4 files pulling in macros from
../acinclude.m4 which caused some macros to not be expanded.  For
example, autoconf complains:

configure.ac:25: error: possibly undefined macro: LIB_AC_PROG_CC
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.

These were generated with aclocal-1.9 as that seems to be what was
used in these dirs previously, and with whatever version of autoconf
the specific subdir was using.  This should minimize diffs.

3 years agolibgloss: epiphany: rename symbol prefix cache var
Mike Frysinger [Wed, 15 Sep 2021 04:20:58 +0000 (00:20 -0400)]
libgloss: epiphany: rename symbol prefix cache var

Autoconf emits a warning for this:
configure.ac:75: warning: AC_CACHE_VAL(libc_symbol_prefix, ...): suspicious cache-id, must contain _cv_ to be cached

Rename the variable to match the naming in libnosys/ subdir.

3 years agolibgloss: fix AC_LANG_SOURCE warnings w/newer autoconf
Mike Frysinger [Wed, 15 Sep 2021 04:18:55 +0000 (00:18 -0400)]
libgloss: fix AC_LANG_SOURCE warnings w/newer autoconf

When running autoconf-2.69 in here, we get:
configure.ac:57: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2503: _AC_PREPROC_IFELSE is expanded from...
../../lib/autoconf/general.m4:2518: AC_PREPROC_IFELSE is expanded from...
configure.ac:57: the top level
configure.ac:61: warning: AC_LANG_CONFTEST: no AC_LANG_SOURCE call detected in body
../../lib/autoconf/lang.m4:193: AC_LANG_CONFTEST is expanded from...
../../lib/autoconf/general.m4:2503: _AC_PREPROC_IFELSE is expanded from...
../../lib/autoconf/general.m4:2518: AC_PREPROC_IFELSE is expanded from...
configure.ac:61: the top level

Add AC_LANG_PROGRAM wrappings to fix these.

3 years agoCygwin: pipes: don't call NtQueryInformationFile on read side of pipes
Corinna Vinschen [Wed, 15 Sep 2021 12:17:59 +0000 (14:17 +0200)]
Cygwin: pipes: don't call NtQueryInformationFile on read side of pipes

NtQueryInformationFile hangs if it's called on the read side handle of
a pipe while another thread or process is performing a blocking read.

Avoid select potentially hanging by calling NtQueryInformationFile
only on the write side of the pipe and using PeekNamedPipe otherwise.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: drop useless method fhandler_base::has_ongoing_io
Corinna Vinschen [Wed, 15 Sep 2021 11:58:36 +0000 (13:58 +0200)]
Cygwin: drop useless method fhandler_base::has_ongoing_io

This was a remnant of the fhandler_base_overlapped class.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipe: Do not call PeekNamedPipe() if it is not necessary.
Takashi Yano [Wed, 15 Sep 2021 00:55:57 +0000 (09:55 +0900)]
Cygwin: pipe: Do not call PeekNamedPipe() if it is not necessary.

- In pipe_data_available() in select.cc, PeekNamedPipe() call is
  not needed if WriteQuotaAvailable is non-zero because we already
  know the write pipe has a space. Therefore, with this patch,
  PeekNamedPipe() is called only when WriteQuotaAvailable is zero.
  This makes select() on pipe faster a bit.

3 years agoCygwin: document the recent pipe changes
Ken Brown [Tue, 14 Sep 2021 18:59:28 +0000 (14:59 -0400)]
Cygwin: document the recent pipe changes

3 years agoCygwin: pipe: Fix handling of EPIPE and SIGPIPE in raw_write().
Takashi Yano [Tue, 14 Sep 2021 11:59:08 +0000 (20:59 +0900)]
Cygwin: pipe: Fix handling of EPIPE and SIGPIPE in raw_write().

3 years agoCygwin: pipe, fifo: Release select_sem semaphore as much as needed.
Takashi Yano [Tue, 14 Sep 2021 09:50:49 +0000 (18:50 +0900)]
Cygwin: pipe, fifo: Release select_sem semaphore as much as needed.

- Currently, raw_read(), raw_write() and close() release select_sem
  unconditionally even if no waiter for select_sem exists. With this
  patch, only the minimum number of semaphores required is released.

3 years agoCygwin: pipe: Use read pipe handle for select() on write pipe.
Takashi Yano [Tue, 14 Sep 2021 10:10:48 +0000 (19:10 +0900)]
Cygwin: pipe: Use read pipe handle for select() on write pipe.

- Usually WriteQuotaAvailable retrieved by NtQueryInformationFile()
  on the write side reflects the space available in the inbound buffer
  on the read side. However, if a pipe read is currently pending,
  WriteQuotaAvailable on the write side is decremented by the number
  of bytes the read side is requesting. So it's possible (even likely)
  that WriteQuotaAvailable is 0, even if the inbound buffer on the
  read side is not full. This can lead to a deadlock situation:
  The reader is waiting for data, but select on the writer side
  assumes that no space is available in the read side inbound buffer.

  Currently, to avoid this stuation, read() does not request larger
  block than pipe size - 1. However, this mechanism does not take
  effect if the reader side is non-cygwin app.

  The only reliable information is available on the read side, so
  fetch info from the read side via the pipe-specific query handle
  (query_hdl) introduced.

  If the query_hdl (read handle) is kept in write side, writer can
  not detect closure of read pipe. Therefore, raw_write() counts
  write handle and query_hdl. If they are equal, only the pairs of
  write handle and query_hdl are alive. In this case, raw_write()
  returns EPIPE and raises SIGPIPE.

- Nonblocking pipes (PIPE_NOWAIT) are not well handled by non-Cygwin
  tools, so convert pipe handles to PIPE_WAIT handles when spawning
  a non-Cygwin process.

3 years agoCygwin: pipe, fifo: Call set_no_inheritance() for adjunct handles.
Takashi Yano [Tue, 14 Sep 2021 03:49:35 +0000 (12:49 +0900)]
Cygwin: pipe, fifo: Call set_no_inheritance() for adjunct handles.

- Currntly, set_no_inheritance() is not called for the adjunct handles
  such as select_sem. This patch fixes the issue.

3 years agoCygwin: fhandler_base::dup Reflect O_CLOEXEC to inheritance flag.
Takashi Yano [Tue, 14 Sep 2021 03:48:03 +0000 (12:48 +0900)]
Cygwin: fhandler_base::dup Reflect O_CLOEXEC to inheritance flag.

- Currently fhandler_base::dup duplicates handles with bInheritHandle
  TRUE unconditionally. This patch reflects O_CLOEXEC flag to that
  parameter.

3 years agoCygwin: pipes: do not duplicate sec_none{_nih} locally when creating objects
Corinna Vinschen [Mon, 13 Sep 2021 20:02:51 +0000 (22:02 +0200)]
Cygwin: pipes: do not duplicate sec_none{_nih} locally when creating objects

We already fetched the correct SECURITY_ATTRIBUTES at the start of
fhandler_pipe::create, so using another SECURITY_ATTRIBUTES object for
the mutex and semaphore objects doesn't make much sense.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: fix inheritence of select_sem on write side of pipe
Corinna Vinschen [Mon, 13 Sep 2021 17:33:56 +0000 (19:33 +0200)]
Cygwin: fix inheritence of select_sem on write side of pipe

select_sem gets created on the read side with inheritence settings
depending on the O_CLOEXEC flag.  Then it gets duplicated to the write
side with unconditional inheritence.  Fix that.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipe: Fix deadlock if pipe is created by non-cygwin app.
Takashi Yano [Sun, 12 Sep 2021 06:06:05 +0000 (15:06 +0900)]
Cygwin: pipe: Fix deadlock if pipe is created by non-cygwin app.

3 years agoCygwin: fifo: Utilize select_sem for fifo as well as pipe.
Takashi Yano [Thu, 9 Sep 2021 23:43:59 +0000 (08:43 +0900)]
Cygwin: fifo: Utilize select_sem for fifo as well as pipe.

3 years agoCygwin: pipes: always signal select_sem if any bytes are read or written
Corinna Vinschen [Thu, 9 Sep 2021 09:35:54 +0000 (11:35 +0200)]
Cygwin: pipes: always signal select_sem if any bytes are read or written

Fold all code branches potentially having read or written data into
a single if branch, so signalling select_sem catches all cases.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipe: Fix notification timing of select_sem.
Takashi Yano [Thu, 9 Sep 2021 03:08:39 +0000 (12:08 +0900)]
Cygwin: pipe: Fix notification timing of select_sem.

- Make select_sem notify even when read/write partially.

3 years agoCygwin: select: Introduce select_sem semaphore for pipe.
Takashi Yano [Wed, 8 Sep 2021 08:18:35 +0000 (17:18 +0900)]
Cygwin: select: Introduce select_sem semaphore for pipe.

- This patch introduces select_sem semaphore which notifies pipe status
  change.

3 years agoRevert "Cygwin: select: Improve select/poll response."
Takashi Yano [Wed, 8 Sep 2021 10:22:40 +0000 (19:22 +0900)]
Revert "Cygwin: select: Improve select/poll response."

... because this commit (23bb19ef) causes high CPU load.

3 years agoCygwin: set buffer size for pipes created by non-Cygwin processes
Ken Brown [Tue, 7 Sep 2021 21:40:21 +0000 (17:40 -0400)]
Cygwin: set buffer size for pipes created by non-Cygwin processes

Rename fhandler_pipe_and_fifo::max_atomic_write to pipe_buf_size.
This reflect its actual meaning better.  The fhandler_pipe_and_fifo
constructor initializes it to DEFAULT_PIPEBUFSIZE (== 64K), which is
the buffer size for the windows pipes created by fhandler_pipe and
fhandler_fifo.  But if we inherit a stdio pipe handle from a
non-Cygwin process, the buffer size could be different.

To remedy this, add a method fhandler_pipe::set_pipe_buf_size that
queries the OS for the pipe buffer size, and use it in
dtable::init_std_file_from_handle.

3 years agoCygwin: pipes: drop "tiny pipe" handling
Corinna Vinschen [Tue, 7 Sep 2021 10:56:48 +0000 (12:56 +0200)]
Cygwin: pipes: drop "tiny pipe" handling

Given we return 1 already if WriteQuotaAvailable is > 0, the condition
for tiny pipes is never true.  Fix the comments.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: handle signals and thread cancellation in blocking mode only
Corinna Vinschen [Tue, 7 Sep 2021 09:14:09 +0000 (11:14 +0200)]
Cygwin: pipes: handle signals and thread cancellation in blocking mode only

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: always terminate async IO in blocking mode
Corinna Vinschen [Tue, 7 Sep 2021 08:50:47 +0000 (10:50 +0200)]
Cygwin: pipes: always terminate async IO in blocking mode

In blocking mode, the underlying IO must always be terminated,
one way or the other, to make sure the application knows the exact
state after returning from the IO function.  Therefore, always call
CancelIo in blocking mode.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: cancel async IO if thread cancellation is in progress
Corinna Vinschen [Mon, 6 Sep 2021 12:35:05 +0000 (14:35 +0200)]
Cygwin: pipes: cancel async IO if thread cancellation is in progress

Just cancelling a thread doesn't cancel async IO started by this thread.
Fix this by returning from cygwait and calling CancelIo before canceling
self.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipe: Stop counting reader and read all available data.
Takashi Yano [Mon, 6 Sep 2021 11:12:16 +0000 (20:12 +0900)]
Cygwin: pipe: Stop counting reader and read all available data.

- By guarding read with read_mtx, no more than one ReadFile can
  be called simultaneously. So couting read handles is no longer
  necessary.
- Make raw_read code as similar as possible to raw_write code.

3 years agoCygwin: new class fhandler_pipe_fifo
Ken Brown [Fri, 3 Sep 2021 23:41:52 +0000 (19:41 -0400)]
Cygwin: new class fhandler_pipe_fifo

This is a parent of fhandler_pipe and fhandler_fifo for code that is
common between the two classes.  Currently it just contains
max_atomic_write and raw_write().  The latter is identical to what
used to be fhandler_pipe::raw_write().

3 years agoCygwin: FIFO: open pipes with FILE_READ_ATTRIBUTES access
Ken Brown [Fri, 3 Sep 2021 18:23:47 +0000 (14:23 -0400)]
Cygwin: FIFO: open pipes with FILE_READ_ATTRIBUTES access

This is needed by NtQueryInformationFile, which is used by select.

3 years agoCygwin: pipes: minor code cleanup
Ken Brown [Fri, 3 Sep 2021 13:42:00 +0000 (09:42 -0400)]
Cygwin: pipes: minor code cleanup

Clarify a comment in raw_read, and remove a useless line from
raw_write.

3 years agoCygwin: pipes: nt_create: set read handle to NULL in error case
Corinna Vinschen [Fri, 3 Sep 2021 08:59:02 +0000 (10:59 +0200)]
Cygwin: pipes: nt_create: set read handle to NULL in error case

Fix accidentally setting read handle to INVALID_HANDLE_VALUE in a
single error case.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: call nt_create with handle references
Corinna Vinschen [Fri, 3 Sep 2021 08:57:21 +0000 (10:57 +0200)]
Cygwin: pipes: call nt_create with handle references

...to avoid potential pointer mishandling.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: workaround unrelibale system info
Corinna Vinschen [Fri, 3 Sep 2021 08:48:40 +0000 (10:48 +0200)]
Cygwin: pipes: workaround unrelibale system info

FILE_PIPE_LOCAL_INFORMATION::WriteQuotaAvailable is unreliable.

Usually WriteQuotaAvailable on the write side reflects the space
available in the inbound buffer on the read side.  However, if a
pipe read is currently pending, WriteQuotaAvailable on the write side
is decremented by the number of bytes the read side is requesting.
So it's possible (even likely) that WriteQuotaAvailable is 0, even
if the inbound buffer on the read side is not full.  This can lead to
a deadlock situation: The reader is waiting for data, but select
on the writer side assumes that no space is available in the read
side inbound buffer.

This patch implements a workaround by never trying to read more than
half the buffer size blocking if the read buffer is empty.  This first
cut tries to take the number of open readers into account by reducing
the amount of requested bytes accordingly.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: fix POSIX requirement for non-blocking pipe writes
Corinna Vinschen [Fri, 3 Sep 2021 08:45:49 +0000 (10:45 +0200)]
Cygwin: pipes: fix POSIX requirement for non-blocking pipe writes

POSIX requires atomicity for non-blocking writes <= PIPE_BUF bytes
and writing of at least 1 byte if any buffer space is left.
Windows NtWriteFile returns STATUS_SUCCESS and "0 bytes written"
if the write doesn't match buffer space.  Fix this discrepancy.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: create pipes with synchronization enabled
Corinna Vinschen [Fri, 3 Sep 2021 08:32:30 +0000 (10:32 +0200)]
Cygwin: pipes: create pipes with synchronization enabled

This isn't used by Cygwin, but it might be used by Win32 processes
inheriting the handle.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: use NtClose when file has been opened with an NtXxx function
Corinna Vinschen [Fri, 3 Sep 2021 08:31:27 +0000 (10:31 +0200)]
Cygwin: pipes: use NtClose when file has been opened with an NtXxx function

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: always close read side pipe handle in error case
Corinna Vinschen [Fri, 3 Sep 2021 08:25:29 +0000 (10:25 +0200)]
Cygwin: pipes: always close read side pipe handle in error case

Add missing CloseHandle.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: pipes: fix a bug in raw_write
Corinna Vinschen [Fri, 3 Sep 2021 08:24:15 +0000 (10:24 +0200)]
Cygwin: pipes: fix a bug in raw_write

The buffer pointer is incremented by "chunk", which is what we
typically try to write, but this isn't what actually got written.
Increment the buffer pointer by what we actually wrote, as returned
by NtWriteFile.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
3 years agoCygwin: move get_obj_handle_count() to miscfuncs.cc
Corinna Vinschen [Fri, 3 Sep 2021 08:15:57 +0000 (10:15 +0200)]
Cygwin: move get_obj_handle_count() to miscfuncs.cc

get_obj_handle_count() is used in flock only so far, but pipe
handling might have a usage, too, soon.  Given that this function
might be generally useful and isn't restricted to flock usage,
move it to miscfuncs.cc and make it non-static.  Add a prototype
in miscfuncs.h.

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