]> sourceware.org Git - newlib-cygwin.git/log
newlib-cygwin.git
2 years agoAarch32/64: Support __FLT_EVAL_METHOD__ values other than 0, 1, 2
Andrea Corallo [Wed, 30 Mar 2022 13:40:59 +0000 (15:40 +0200)]
Aarch32/64: Support __FLT_EVAL_METHOD__ values other than 0, 1, 2

2022-03-30  Andrea Corallo  <andrea.corallo@arm.com>

* libc/include/machine/ieeefp.h (__FLOAT_TYPE, __DOUBLE_TYPE): New
macros.
* libc/include/math.h: Uses __DOUBLE_TYPE __FLOAT_TYPE to define
double_t float_t if possible.

2 years agoCygwin: pty: Close pseudo console only if the process is the owner.
Takashi Yano [Sat, 9 Apr 2022 03:59:54 +0000 (12:59 +0900)]
Cygwin: pty: Close pseudo console only if the process is the owner.

- Currently, close_pseudoconsole() is called unconditionally from
  fhandler_termios::process_sigs() on Ctrl-C. This causes deadlock
  if Ctrl-C is pressed while setup_pseudoconsole() is called. With
  this patch, close_pseudoconsole() is called only if the master
  process is the owner of the nat-pipe to avoid the deadlock.

2 years agoAdd tests for tzset POSIX timezone string compliance
Jeff Johnston [Fri, 8 Apr 2022 21:19:16 +0000 (17:19 -0400)]
Add tests for tzset POSIX timezone string compliance

- patch from jdbouleu <hi@jdoubleu.de>

  - create time.exp and tzset.c files in newlib/testsuite/newlib.time

2 years agoAdd angle TZ angle bracket support to tzset_r
Jeff Johnston [Fri, 8 Apr 2022 19:06:37 +0000 (15:06 -0400)]
Add angle TZ angle bracket support to tzset_r

- from Brian Inglis <Brian.Inglis@systematicsw.ab.ca>

  - add support to _tzset_unlocked_r() to support quoting std and dst
    names with angle brackets <> as per Posix
  - modify documentation of tzset.c

2 years agofix testsuite cannot compile tests
jdoubleu [Thu, 7 Apr 2022 09:31:40 +0000 (11:31 +0200)]
fix testsuite cannot compile tests

DEJAGNU could not find the function 'newlib_target_compile', because it was defined in another file.

2 years agonewlib: Remove superfluous CHECK_STD_INIT() macro
Sebastian Huber [Thu, 31 Mar 2022 06:43:49 +0000 (08:43 +0200)]
newlib: Remove superfluous CHECK_STD_INIT() macro

This macro is unused or expands to nothing.

2 years agoCygwin: pipe: Avoid deadlock for non-cygwin writer.
Takashi Yano [Tue, 22 Mar 2022 13:49:46 +0000 (22:49 +0900)]
Cygwin: pipe: Avoid deadlock for non-cygwin writer.

- As mentioned in commit message of the commit b531d6b0, if multiple
  writers including non-cygwin app exist, the non-cygwin app cannot
  detect pipe closure on the read side when the pipe is created by
  system account or the the pipe creator is running as service.
  This is because query_hdl which is held in write side also is a
  read end of the pipe, so the pipe is still alive for the non-cygwin
  app even after the reader is closed.

  To avoid this problem, this patch lets all processes in the same
  process group close query_hdl using newly introduced internal signal
  __SIGNONCYGCHLD when non-cygwin app is started.

  Addresses: https://cygwin.com/pipermail/cygwin/2022-March/251097.html

2 years agoRemove unused _cleanup()
Matt Joyce [Thu, 31 Mar 2022 14:34:55 +0000 (16:34 +0200)]
Remove unused _cleanup()

Removed the unused function _cleanup() from findfp.c.

2 years agoFix bug introduced in previous patch (44b60f0c)
Matt Joyce [Thu, 31 Mar 2022 14:34:54 +0000 (16:34 +0200)]
Fix bug introduced in previous patch (44b60f0c)

This fixes a bug introduced in a previous patch (Commit 44b60f0c:
Make __sdidinit unused). Removed intitialization of __cleanup from
__smakebuf_r(). All callers of __smakebuf_r() call __sinit()
through the_CHECK_INIT macro, thus __cleanup is already
initialized. This fix also allows _cleanup_r() to be made static.
Changed its name to cleanup_stdio() and removed its declaration
from local.h.

2 years agofhandler_proc.cc(format_proc_cpuinfo): add Linux Superb Owl cpuinfo flags
Brian Inglis [Thu, 24 Mar 2022 04:57:58 +0000 (22:57 -0600)]
fhandler_proc.cc(format_proc_cpuinfo): add Linux Superb Owl cpuinfo flags

0x00000007:1 EBX:0  intel_ppin Intel Protected Processor Inventory Number
0x00000006:0 EAX:19 hfi Hardware Feedback Interface
0x00000007:0 EDX:20 ibt Intel Indirect Branch Tracking

2 years agonewlib: Rename __sfmoreglue() and make it static
Sebastian Huber [Wed, 30 Mar 2022 09:19:59 +0000 (11:19 +0200)]
newlib: Rename __sfmoreglue() and make it static

Rename __sfmoreglue() in sfmoreglue() and make it static.  This function is
only used by __sfp() in the same translation unit.

Remove use of register keyword.

2 years agoReplace _fwalk() calls with _fwalk_reent()
Sebastian Huber [Wed, 30 Mar 2022 09:15:07 +0000 (11:15 +0200)]
Replace _fwalk() calls with _fwalk_reent()

Remove the _fwalk() implementation to avoid duplicated code with
_fwalk_reent().

2 years agoCommit patch from Tobias Burnus <tobias@codesourcery.com>
Jeff Johnston [Wed, 30 Mar 2022 19:58:06 +0000 (15:58 -0400)]
Commit patch from Tobias Burnus <tobias@codesourcery.com>

[PATCH] newlib: Only call _fputwc_r if ELIX_LEVEL >= 4

(nano-)vfprintf.c is enabled for ELIX_LEVEL >= 1. When _WIDE_ORIENT
is set, its __sprint_r / __sfputs_r functions unconditionally called
_fputwc_r which is only in ELEX_LEVEL >= 4. With this commit,
the _WIDE support in (nano-)vfprintf.c is disabled for ELEX_LEVEL < 4.

2 years agoCygwin: pty: Fix crash on master close in Windows 7.
Takashi Yano [Wed, 30 Mar 2022 03:46:08 +0000 (12:46 +0900)]
Cygwin: pty: Fix crash on master close in Windows 7.

- The 4th parameter of WriteFile() cannot be NULL especially in
  Windows 7 as mentioned in Microsoft documentation. This patch
  fixes that.

Addresses: https://cygwin.com/pipermail/cygwin/2022-March/251162.html

2 years agonewlib: drop phoenix support
Mike Frysinger [Sun, 13 Mar 2022 21:22:36 +0000 (17:22 -0400)]
newlib: drop phoenix support

This code has not been updated since 2016, and it looks like it has
rotted quite a bit since.  It does not build against the current set
of phoenix sources -- I had to hack both the kernel headers and the
newlib headers up to get it to build, and I still have no idea if it
actually links or runs.  It seems like the project itself has moved
away from newlib and to its own C library:
https://phoenix-rtos.com/documentation/libc/README.md

So since there's no interest from the phoenix folks to maintain this,
and it has a significant amount of non-standard code that we try to
keep up-to-date (without actually testing it), just punt it all.

2 years agoamdgcn: Fix build failure
Andrew Stubbs [Mon, 21 Mar 2022 14:25:45 +0000 (14:25 +0000)]
amdgcn: Fix build failure

The recent makefile reorganization broke the amdgcn port by creating
duplicate __malloc_lock symbols.  This patch fixes the problem by renaming
the malloc_support.c file to mlock.c, thus overriding the default symbol
properly.  Actually, I'm not sure how this ever worked?

2 years agoiconv: Fix EL/IX level 2 handling
Sebastian Huber [Fri, 18 Mar 2022 15:36:26 +0000 (16:36 +0100)]
iconv: Fix EL/IX level 2 handling

Consistently use

if !ELIX_LEVEL_1

to enable EL/IX level 2 interfaces.

2 years agoRevert accidental change to v850/sim.ld
Jeff Law [Sun, 20 Mar 2022 14:19:45 +0000 (10:19 -0400)]
Revert accidental change to v850/sim.ld

2 years agoAvoid using common symbols in v850 libgloss
Jeff Law [Sun, 20 Mar 2022 00:01:33 +0000 (20:01 -0400)]
Avoid using common symbols in v850 libgloss

I've had this lying around for probably a year or two at this point.
It just changes all the instance of "errno" from a common symbol to an
extern.  I can't offhand recall where the actual definition is, but it
certainly exists in the generic code.

2 years agoCygwin: console: Do not use memcmp() to compare INPUT_RECORD.
Takashi Yano [Sat, 19 Mar 2022 00:21:04 +0000 (09:21 +0900)]
Cygwin: console: Do not use memcmp() to compare INPUT_RECORD.

- Using memcmp() to compare structure such as INPUT_RECORD is not
  correct manner because padding may not be initialized. This patch
  stops to use memcmp() for comparison of INPUT_RECORD.

2 years agoCygwin: console: Ignore dwControlKeyState in event comparison.
Takashi Yano [Fri, 18 Mar 2022 23:43:24 +0000 (08:43 +0900)]
Cygwin: console: Ignore dwControlKeyState in event comparison.

- dwControlKeyState also may be null'ed on WriteConsoleInputW().
  Therefore ignore it in event comparison as well as wVirtualKeyCode
  and wVirtualScanCode.

2 years agoCygwin: console: Add attach_mutex guard that was not added.
Takashi Yano [Fri, 18 Mar 2022 14:28:36 +0000 (23:28 +0900)]
Cygwin: console: Add attach_mutex guard that was not added.

2 years agoCygwin: console: Fix typeahead key swapping which still occurs.
Takashi Yano [Fri, 18 Mar 2022 12:35:07 +0000 (21:35 +0900)]
Cygwin: console: Fix typeahead key swapping which still occurs.

- The commit "Cygwin: console: Improve the code to avoid typeahead
  key swapping." did not solve the problem enough. Two unexpected
  things happen.
  (1) wVirtualKeyCode and wVirtualScanCode of readback key event may
      be null'ed even if they are not zero on WriteConsoleInputW().
      Therefore, memcmp() may report the event sequence is not equal.
  (2) WriteConsoleInputW() may not be atomic. The event sequence
      which is written by WriteConsoleInputW() may be inserted by
      key input in the middle of the sequence. Current code gives
      up to fix in this situation.
  This patch should fix that issue.

2 years agonewlib: enable automatic dependency generation
Mike Frysinger [Tue, 1 Mar 2022 04:36:27 +0000 (23:36 -0500)]
newlib: enable automatic dependency generation

This was disabled as part of the migration away from the cygnus option
as that implied no-dependencies.

We currently have 1-to-1 updates enabled -- if you touch a .c file,
the corresponding .o file will be rebuilt.  But if you touch a header
file, none of the files using that get rebuilt.

2 years agoCygwin: document recent gmondump formatting fix
Mark Geisert [Thu, 17 Mar 2022 03:02:07 +0000 (20:02 -0700)]
Cygwin: document recent gmondump formatting fix

2 years agoCygwin: Fix gmondump formatting goofs
Mark Geisert [Tue, 15 Mar 2022 00:47:30 +0000 (17:47 -0700)]
Cygwin: Fix gmondump formatting goofs

The rewrite of %X to %p was malhandled.  Fix that/them.

2 years agowinsup: disable fortify source
Mike Frysinger [Tue, 15 Mar 2022 03:17:44 +0000 (23:17 -0400)]
winsup: disable fortify source

When using a compiler that automatically enables -D_FORTIFY_SOURCE,
building winsup fails with errors like below.  Since winsup is not
setup to compile itself with _FORTIFY_SOURCE, disable it for now.

make[4]: Entering directory '.../x86_64-pc-cygwin/winsup/cygwin'
  CC       libc/minires-os-if.o
In file included from .../newlib/newlib/libc/include/ssp/strings.h:34,
                 from .../newlib/newlib/libc/include/strings.h:77,
                 from .../newlib/newlib/libc/include/string.h:24,
                 from ../../../../../winsup/cygwin/string.h:12,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/guiddef.h:154,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/winnt.h:635,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/minwindef.h:163,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/windef.h:9,
                 from /usr/x86_64-pc-cygwin/usr/include/windows.h:69,
                 from ../../../../../winsup/cygwin/winlean.h:56,
                 from ../../../../../winsup/cygwin/winsup.h:84,
                 from ../../../../../winsup/cygwin/libc/minires-os-if.c:13:
.../newlib/winsup/cygwin/include/ssp/socket.h:9:1: error: conflicting types for 'recv';
  have 'ssize_t(int,  void *, size_t,  int)' {aka 'long int(int,  void *, long unsigned int,  int)'}
    9 | __ssp_redirect0(ssize_t, recv, \
      | ^~~~~~~~~~~~~~~
In file included from /usr/x86_64-pc-cygwin/usr/include/w32api/ws2tcpip.h:17,
                 from ../../../../../winsup/cygwin/libc/minires-os-if.c:14:
/usr/x86_64-pc-cygwin/usr/include/w32api/winsock2.h:1022:34: note: previous declaration of 'recv' with
  type 'int(SOCKET,  char *, int,  int)' {aka 'int(long long unsigned int,  char *, int,  int)'}
 1022 |   WINSOCK_API_LINKAGE int WSAAPI recv(SOCKET s,char *buf,int len,int flags);
      |                                  ^~~~
In file included from .../newlib/newlib/libc/include/ssp/strings.h:34,
                 from .../newlib/newlib/libc/include/strings.h:77,
                 from .../newlib/newlib/libc/include/string.h:24,
                 from ../../../../../winsup/cygwin/string.h:12,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/guiddef.h:154,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/winnt.h:635,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/minwindef.h:163,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/windef.h:9,
                 from /usr/x86_64-pc-cygwin/usr/include/windows.h:69,
                 from ../../../../../winsup/cygwin/winlean.h:56,
                 from ../../../../../winsup/cygwin/winsup.h:84,
                 from ../../../../../winsup/cygwin/libc/minires-os-if.c:13:
.../newlib/winsup/cygwin/include/ssp/socket.h:13:1: error: conflicting types for 'recvfrom';
  have 'ssize_t(int,  void *, size_t,  int,  struct sockaddr *, socklen_t *)' {aka 'long int(int,  void *, long unsigned int,  int,  struct sockaddr *, int *)'}
   13 | __ssp_redirect0(ssize_t, recvfrom, \
      | ^~~~~~~~~~~~~~~
In file included from /usr/x86_64-pc-cygwin/usr/include/w32api/ws2tcpip.h:17,
                 from ../../../../../winsup/cygwin/libc/minires-os-if.c:14:
/usr/x86_64-pc-cygwin/usr/include/w32api/winsock2.h:1023:34: note: previous declaration of 'recvfrom' with
  type 'int(SOCKET,  char *, int,  int,  struct sockaddr *, int *)' {aka 'int(long long unsigned int,  char *, int,  int,  struct sockaddr *, int *)'}
 1023 |   WINSOCK_API_LINKAGE int WSAAPI recvfrom(SOCKET s,char *buf,int len,int flags,struct sockaddr *from,int *fromlen);
      |                                  ^~~~~~~~
make[4]: *** [Makefile:1930: libc/minires-os-if.o] Error 1
  CC       gmon.o
../../../../../winsup/cygwin/gmon.c:60: error: "bzero" redefined [-Werror]
   60 | #define bzero(ptr,size) memset (ptr, 0, size);
      |
In file included from .../newlib/newlib/libc/include/strings.h:77,
                 from .../newlib/newlib/libc/include/string.h:24,
                 from ../../../../../winsup/cygwin/string.h:12,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/guiddef.h:154,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/winnt.h:635,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/minwindef.h:163,
                 from /usr/x86_64-pc-cygwin/usr/include/w32api/windef.h:9,
                 from /usr/x86_64-pc-cygwin/usr/include/windows.h:69,
                 from ../../../../../winsup/cygwin/winlean.h:56,
                 from ../../../../../winsup/cygwin/winsup.h:84,
                 from ../../../../../winsup/cygwin/gmon.h:69,
                 from ../../../../../winsup/cygwin/gmon.c:47:
.../newlib/newlib/libc/include/ssp/strings.h:43: note: this is the location of the previous definition
   43 | #define bzero(dst, len) \
      |
cc1: all warnings being treated as errors

2 years agonewlib: libm: integrate tests subdir
Mike Frysinger [Mon, 14 Mar 2022 02:28:25 +0000 (22:28 -0400)]
newlib: libm: integrate tests subdir

Integrate the old libm/test/ subdir into the main build.  It hasn't
been used in a long time causing the code to rot a bit.  I've fixed
some of those, but it still fails for many ports, so it's disabled
by default.  People who want to take a closer look can run:
$ make libm/test/test

2 years agonewlib: integrate iconv update to maintainer build
Mike Frysinger [Mon, 14 Mar 2022 01:52:04 +0000 (21:52 -0400)]
newlib: integrate iconv update to maintainer build

To help prevent people from missing running this script, integrate it
into the build via maintainer mode.

Also fix the inverted exit status to make this work correctly -- for
some reason, it exited 1 when it worked, and 0 when it failed.

2 years agonewlib: update build system generation documentation
Mike Frysinger [Mon, 14 Feb 2022 02:43:37 +0000 (21:43 -0500)]
newlib: update build system generation documentation

Replace all of the individual autotool steps with a single autoreconf.
This simplifies the documentation greatly, and in the current system,
only takes ~10 seconds to regenerate everything.

Update the developer documentation to cover all the major components
of the current build system.  Hopefully this is a fairly complete road
map to everything.  I tried to include everything that I wish I knew
when I started hacking on this :P.

2 years agonewlib: libc: merge build up a directory
Mike Frysinger [Sun, 13 Feb 2022 08:11:01 +0000 (03:11 -0500)]
newlib: libc: merge build up a directory

Convert all the libc/ subdir makes into the top-level Makefile.  This
allows us to build all of libc from the top Makefile without using any
recursive make calls.  This is faster and avoids the funky lib.a logic
where we unpack subdir archives to repack into a single libc.a.  The
machine override logic is maintained though by way of Makefile include
ordering, and source file accumulation in libc_a_SOURCES.

There's a few dummy.c files that are no longer necessary since we aren't
doing the lib.a accumulating, so punt them.

The winsup code has been pulling the internal newlib ssp library out,
but that doesn't exist anymore, so change that to pull the objects.

2 years agoCygwin: Add description of fsync() fix to 3.3.5 release notes.
Takashi Yano [Mon, 14 Mar 2022 23:15:29 +0000 (08:15 +0900)]
Cygwin: Add description of fsync() fix to 3.3.5 release notes.

2 years agoCygwin: path: Convert type of variable 'remlen' to DWORD.
Takashi Yano [Mon, 14 Mar 2022 11:32:53 +0000 (20:32 +0900)]
Cygwin: path: Convert type of variable 'remlen' to DWORD.

- Variable remlen stores the return value of QueryDosDeviceW(), so
  it is better to be DWORD.

2 years agoCygwin: path: Add fallback for DFS mounted drive.
Takashi Yano [Fri, 11 Mar 2022 08:26:30 +0000 (17:26 +0900)]
Cygwin: path: Add fallback for DFS mounted drive.

- If UNC path for DFS is mounted to a drive with drive letter, the
  error "Too many levels of symbolic links" occurs when accessing
  to that drive. This is because GetDosDeviceW() returns unexpected
  string such as "\Device\Mup\DfsClient\;Z:000000000003fb89\dfsserver
  \dfs\linkname" for the mounted UNC path "\??\UNC\fileserver\share".
  This patch adds a workaround for this issue.

  Addresses: https://cygwin.com/pipermail/cygwin/2022-March/250979.html

2 years agoCygwin: fsync: Return EINVAL for special files.
Takashi Yano [Fri, 11 Mar 2022 21:19:53 +0000 (06:19 +0900)]
Cygwin: fsync: Return EINVAL for special files.

- Unlike linux, fsync() calls FlushFileBuffers() even for special
  files. This causes the problem reported in:
    https://cygwin.com/pipermail/cygwin/2022-March/251022.html
  This patch fixes the issue.

2 years agonewlib: xstormy16: move malloc multiplex logic from build to source files
Mike Frysinger [Tue, 1 Mar 2022 06:37:19 +0000 (01:37 -0500)]
newlib: xstormy16: move malloc multiplex logic from build to source files

Rather than define per-object rules in the Makefile, have small files
that define & include the right content.  This simplifies the build
rules, and makes understanding the source a little easier (imo) as it
makes all the subdirs behave the same: you have 1 source file and it
produces 1 object.  It's also about the same amount of boiler plate,
without having to define custom build rules that can fall out of sync.

We also realign the free & pvalloc definitions: common code puts these
in malloc.o & valloc.o respectively, not in free.o & pvalloc.o objects.

This will also be important as we merge the libc.a build into the top
dir since it relies on a single flat list of objects for overrides.

2 years agonewlib: xstormy16: break up mallocr stubs
Mike Frysinger [Tue, 1 Mar 2022 06:02:40 +0000 (01:02 -0500)]
newlib: xstormy16: break up mallocr stubs

Move the multiplex logic out of the build and into source files to
make the build rules a lot simpler.

2 years agonewlib: xstormy16: fix mallopt definition & mstats handling
Mike Frysinger [Tue, 1 Mar 2022 05:58:55 +0000 (00:58 -0500)]
newlib: xstormy16: fix mallopt definition & mstats handling

The mallopt symbol is defined in tiny-malloc.c, not mallocr.c, but
the Makefile in here tries to compile it out of the latter.  This
leads to mallopt never being defined.

The build also creates mallinfo.o & mallopt.o & mallstats.o objects
to override common ones, but the common dir doesn't use these names.
Instead, it places these all in mstats.o.

So move the build define logic to a dedicated file and compile it
directly to make things a bit simpler while fixing the missing func
and aligning objects with the cmomon code.

2 years agoCygwin: console, pty: Fix segfault in child_info_spawn::worker().
Takashi Yano [Thu, 10 Mar 2022 11:20:00 +0000 (20:20 +0900)]
Cygwin: console, pty: Fix segfault in child_info_spawn::worker().

- After the commit "Cygwin: pty, console: Fix handle leak which
  occurs on exec() error.", startxwin cannot start X due to the
  error "Failed to activate virtual core keyboard: 2". The problem
  is access violation in the code retrieving the pgid of the ctty.
  This patch fixes the issue.

  Addresses: https://cygwin.com/pipermail/cygwin/2022-March/251013.html

2 years agonewlib: libc: move stdlib multiplex logic from build to source files
Mike Frysinger [Sat, 26 Feb 2022 04:47:03 +0000 (23:47 -0500)]
newlib: libc: move stdlib multiplex logic from build to source files

Rather than define per-object rules in the Makefile, have small files
that define & include the right content.  This simplifies the build
rules, and makes understanding the source a little easier (imo) as it
makes all the subdirs behave the same: you have 1 source file and it
produces 1 object.  It's also about the same amount of boiler plate,
without having to define custom build rules that can fall out of sync.

This will also be important as we merge the libc.a build into the top
dir since it relies on a single flat list of objects for overrides.

Also take the opportunity to clean up the unnecessary header deps in
here.  Automake provides dependency generation for free now.

2 years agobuild: Avoid length() awk function
Sebastian Huber [Wed, 9 Mar 2022 06:46:13 +0000 (07:46 +0100)]
build: Avoid length() awk function

Some awk implementations such as old versions of mawk do not support the
length() function.  Use the return value of the POSIX split() function instead.

2 years agonewlib: rename mallocr.c to _mallocr.c
Mike Frysinger [Tue, 1 Mar 2022 05:30:46 +0000 (00:30 -0500)]
newlib: rename mallocr.c to _mallocr.c

This file is a little confusing: it provides all of the mallocr logic,
but is compiled multiple times to produce a unique symbol each time.
For example, building mallocr.c with -DDEFINE_FREER produces freer.o
that only defines _free_r().  This is fine for most symbols, but it's
a little confusing when defining mallocr itself -- we produce a file
with the same symbol name, but we still need -DDEFINE_MALLOCR.  In
order to move the logic from the build rules to source files, using
mallocr.c both as a multiplexer and for defining a single symbol is a
bit tricky.  It's possible (if we add a lot of redundant preprocessor
checks to mallocr.c, or we add complicated build flags just for this
one files), but it's easier if we simply rename this to a dedicated
file.  So let's do that.

We do this as a dedicated commit because the next one will create a
new mallocr.c file and git's automatic diff algorithms can handle
trivial renames, but it can't handle renames+creates in the same
commit.

2 years agonewlib: move nano-malloc logic from build to source files
Mike Frysinger [Tue, 1 Mar 2022 04:46:52 +0000 (23:46 -0500)]
newlib: move nano-malloc logic from build to source files

Simplify the build system logic a bit by moving the mallocr.c ->
nano-mallocr.c redirection from the Makefile to the source files.
This allows for consistent object name usage regardless of the
configuration options used in case a machine dir wants to define
its own override.

2 years agoFix Bug libc/28945
Jeff Johnston [Mon, 7 Mar 2022 20:35:02 +0000 (15:35 -0500)]
Fix Bug libc/28945

- apply fix from Tom de Vries <vries@gcc.gnu.org>
  to have calloc zero out storage for nvptx calloc function

2 years agoCygwin: update 3.3.5 release notes
Takashi Yano [Sat, 5 Mar 2022 09:21:09 +0000 (18:21 +0900)]
Cygwin: update 3.3.5 release notes

2 years agoCygwin: add 3.3.5 release notes
Takashi Yano [Sat, 5 Mar 2022 01:56:50 +0000 (10:56 +0900)]
Cygwin: add 3.3.5 release notes

2 years agoCygwin: pty: Adopt the variable name to the name generally used.
Takashi Yano [Sat, 5 Mar 2022 00:39:26 +0000 (09:39 +0900)]
Cygwin: pty: Adopt the variable name to the name generally used.

- Generally, '\n' is called "line feed" (not "new line"), so the
  variable name p_nl has been changed to p_lf.

2 years agoCygwin: pty: Add several further comments to the pty code.
Takashi Yano [Fri, 4 Mar 2022 23:39:05 +0000 (08:39 +0900)]
Cygwin: pty: Add several further comments to the pty code.

2 years agoCygwin: pty: Take account of CR+NL line feed in input.
Takashi Yano [Fri, 4 Mar 2022 14:57:12 +0000 (23:57 +0900)]
Cygwin: pty: Take account of CR+NL line feed in input.

- Currently, individual CR or NL is treated as line feed in
  accept_input() and transfer_input(). This patch takes account
  of CR+NL as well.

2 years agoCygwin: pty: Fix a possible race issue in initialization of pcon.
Takashi Yano [Fri, 4 Mar 2022 13:02:35 +0000 (22:02 +0900)]
Cygwin: pty: Fix a possible race issue in initialization of pcon.

- Currently, tty::pcon_start flag is cleared before transfer_input()
  in master::write(), however, the code in setup_pseudoconsole()
  waits for transfer_input() using tty::pcon_start. This possibly
  causes the race issue. The patch fixes this potential issue.

2 years agoCygwin: pty: Update some comments in pty code.
Takashi Yano [Fri, 4 Mar 2022 13:00:24 +0000 (22:00 +0900)]
Cygwin: pty: Update some comments in pty code.

2 years agoCygwin: pty: Omit transfer_input() call where it is no longer needed.
Takashi Yano [Fri, 4 Mar 2022 09:54:18 +0000 (18:54 +0900)]
Cygwin: pty: Omit transfer_input() call where it is no longer needed.

- This patch removes the old code which calls transfer_input() but
  is no longer needed. These code was necessary indeed in the past,
  however, as a result of recent frequent code changes, it is no
  longer needed.

2 years agoCygwin: pty: Rearrange reset_switch_to_nat_pipe() calls.
Takashi Yano [Fri, 4 Mar 2022 05:42:46 +0000 (14:42 +0900)]
Cygwin: pty: Rearrange reset_switch_to_nat_pipe() calls.

- Previously, reset_switch_to_nat_pipe() is called from many places
  in pty code. This patch reorganizes that. With this patch, it is
  called only from bg_check() and setpgid_aux(). The calls which
  does not have enough reason have been omitted.

2 years agoCygwin: pty: Treat both CR and NL as line feed in transfer_inpup().
Takashi Yano [Fri, 4 Mar 2022 07:05:35 +0000 (16:05 +0900)]
Cygwin: pty: Treat both CR and NL as line feed in transfer_inpup().

- To make read() work properly in canonical mode, writing to the pty
  pipe should be done line by line. However, only CR was treated as
  line separator previously in transfer_input(). This patch fixes
  the issue.

2 years agolibgloss: add new Build System Internals node to the menu
Mike Frysinger [Fri, 4 Mar 2022 06:04:25 +0000 (01:04 -0500)]
libgloss: add new Build System Internals node to the menu

Seems that some versions of texinfo require the @menu to have all
entries at the top level, so add the new build one to it.

2 years agoCygwin: pty: Stop to use PID_NEW_PG flag as a marker for GDB.
Takashi Yano [Thu, 3 Mar 2022 02:43:07 +0000 (11:43 +0900)]
Cygwin: pty: Stop to use PID_NEW_PG flag as a marker for GDB.

- Previously, the PID_NEW_PG flag was also used as a marker for GDB
  with non-cygwin inferior, unlike its original meaning. With this
  patch, the condition exec_dwProcessId == dwProcessId is used as a
  marker for that instead.

2 years agoCygwin: pty: Simplify the setup code for GDB a bit.
Takashi Yano [Thu, 3 Mar 2022 01:55:12 +0000 (10:55 +0900)]
Cygwin: pty: Simplify the setup code for GDB a bit.

- This patch omits the unnecessary code path for setup for GDB.

2 years agoCygwin: pty: Rename nat_pipe_owner_alive() to process_alive().
Takashi Yano [Thu, 3 Mar 2022 01:38:05 +0000 (10:38 +0900)]
Cygwin: pty: Rename nat_pipe_owner_alive() to process_alive().

- The function nat_pipe_owner_alive() is used even for the process
  which is not a nat pipe owner, so, it is renamed to process_alive().

2 years agoCygwin: getconf: align -a output to glibc getconf
Corinna Vinschen [Wed, 2 Mar 2022 21:15:02 +0000 (22:15 +0100)]
Cygwin: getconf: align -a output to glibc getconf

glibc getconf doesn't print "undefined" for undefined values
in -a output.  It just prints the empty string.  Do it the
same way.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: sysconf: don't set errno for unsupported options
Corinna Vinschen [Wed, 2 Mar 2022 21:02:24 +0000 (22:02 +0100)]
Cygwin: sysconf: don't set errno for unsupported options

We return -1 with errno set to EINVAL for sysconf options for
values required by POSIX, but not implemented on Cygwin.
This is incorrect.  Return -1, but don't set errno for these options.
Drop the "nsup" enum to indicate unsupported values, it's not
required anymore.

Fixes: 59e3b6ca7dc10 (CVS import)
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: sysconf: belatedly add correct return value for _SC_DELAYTIMER_MAX
Corinna Vinschen [Wed, 2 Mar 2022 20:54:54 +0000 (21:54 +0100)]
Cygwin: sysconf: belatedly add correct return value for _SC_DELAYTIMER_MAX

When adding the timer_getoverrun function, DELAYTIMER_MAX was added
to limits.h, but the return value of sysconf(_SC_DELAYTIMER_MAX) wasn't
changed accordingly.  Fix that now.

Fixes: 9e295a8d193e ("Cygwin: posix timers: implement timer_getoverrun")
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: pty: Add still missing acquire/release_attach_mutex.
Takashi Yano [Wed, 2 Mar 2022 19:06:38 +0000 (04:06 +0900)]
Cygwin: pty: Add still missing acquire/release_attach_mutex.

- transfer_input() function uses console api, so it should be guarded
  by attach_mutex. However, in most cases, it is missing. This patch
  fixes the issue.

2 years agoCygwin: pty: Communalize the code for temporary attach to console.
Takashi Yano [Wed, 2 Mar 2022 12:35:40 +0000 (21:35 +0900)]
Cygwin: pty: Communalize the code for temporary attach to console.

- This patch communalizes the code for attaching another console
  temporarily and resuming to the original attach state, because
  there were a plurality of similar codes throughout.

2 years agoCygwin: console, pty: Revamp the acquire/release_attach_mutex timing.
Takashi Yano [Wed, 2 Mar 2022 07:00:31 +0000 (16:00 +0900)]
Cygwin: console, pty: Revamp the acquire/release_attach_mutex timing.

- This patch revises the acquiring/releasing timing for attach_mutex
  to make the period in which it is being acquired shorter. Further,
  acquiring/releasing are added to where they are missing but needed.

2 years agoCygwin: _pinfo::siginfo: fix sig_send call
Corinna Vinschen [Wed, 2 Mar 2022 08:47:38 +0000 (09:47 +0100)]
Cygwin: _pinfo::siginfo: fix sig_send call

Request __SIGPENDINGALL, not __SIGPENDING, when fetching signal info
for the calling process.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: console: Fix a bug from comparison between int and DWORD.
Takashi Yano [Wed, 2 Mar 2022 02:08:27 +0000 (11:08 +0900)]
Cygwin: console: Fix a bug from comparison between int and DWORD.

2 years agonewlib: convert INTERNAL_NEWLIB to _LIBC
Mike Frysinger [Tue, 1 Mar 2022 01:18:39 +0000 (20:18 -0500)]
newlib: convert INTERNAL_NEWLIB to _LIBC

Since we already set up _LIBC to indicate source files are building
for newlib, we don't need this malloc-specific symbol.  Convert it
over to simplify the build a bit.

2 years agonewlib: drop redundant AM_MAINTAINER_MODE call
Mike Frysinger [Tue, 1 Mar 2022 04:32:12 +0000 (23:32 -0500)]
newlib: drop redundant AM_MAINTAINER_MODE call

This is already called earlier in this file, so no need to do it again.

2 years agolibgloss: merge lm32 into top-level Makefile
Mike Frysinger [Tue, 1 Mar 2022 07:03:17 +0000 (02:03 -0500)]
libgloss: merge lm32 into top-level Makefile

Avoid a recursive make to speed things up a bit.

This drops the header install logic because the lm32/ subdir doesn't
actually have any header files to install.

2 years agolibgloss: use m4_foreach_w to simplify the logic a bit
Mike Frysinger [Mon, 7 Feb 2022 11:18:55 +0000 (06:18 -0500)]
libgloss: use m4_foreach_w to simplify the logic a bit

It's functionally the same, but the configure.ac code is simpler and
less boiler plate duplicated.

2 years agoCygwin: console: Prevent special keys processing from drop.
Takashi Yano [Wed, 2 Mar 2022 00:55:52 +0000 (09:55 +0900)]
Cygwin: console: Prevent special keys processing from drop.

- There was a potential risk to drop special key processing when
  process_input_messsage() is called intermittently. This patch
  fixes the issue.

2 years agoCygwin: console: Stop to create struct instance which is not needed.
Takashi Yano [Tue, 1 Mar 2022 23:35:09 +0000 (08:35 +0900)]
Cygwin: console: Stop to create struct instance which is not needed.

- In fhandler_console::cons_master_thread(), a struct which has
  only a static function is used. In this case, struct instance
  is not necessary. So with this patch, the static function is
  invoked without creating instance.

2 years agoCygwin: update 3.4 release text
Corinna Vinschen [Tue, 1 Mar 2022 15:27:10 +0000 (16:27 +0100)]
Cygwin: update 3.4 release text

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: /proc/<PID>/status: Fill SigPnd, SigBlk and SigIgn values with life
Corinna Vinschen [Tue, 1 Mar 2022 15:19:41 +0000 (16:19 +0100)]
Cygwin: /proc/<PID>/status: Fill SigPnd, SigBlk and SigIgn values with life

So far the values of SigPnd and SigBlk were always 0 and SigIgn
was incorrectly set to the block mask of the current thread of
the calling process.

Fix that by adding a _pinfo::siginfo method and a PICOM_SIGINFO
message to allow to request actual signal info of any running process.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: wait_sig: allow to compute process-wide mask of pending signals
Corinna Vinschen [Tue, 1 Mar 2022 15:14:39 +0000 (16:14 +0100)]
Cygwin: wait_sig: allow to compute process-wide mask of pending signals

Add a signal __SIGPENDINGALL to allow computing the mask of all
currently pending signals.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: add init_cygheap::compute_sigblkmask method
Corinna Vinschen [Tue, 1 Mar 2022 15:13:20 +0000 (16:13 +0100)]
Cygwin: add init_cygheap::compute_sigblkmask method

Add method to compute process-wide signal block mask

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: Makefile: fix ctags --extras option
Corinna Vinschen [Tue, 1 Mar 2022 15:09:09 +0000 (16:09 +0100)]
Cygwin: Makefile: fix ctags --extras option

--extra is deprectated, use --extras

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: handle_sigprocmask: If new signal set is NULL, ignore "how"
Corinna Vinschen [Tue, 1 Mar 2022 13:09:56 +0000 (14:09 +0100)]
Cygwin: handle_sigprocmask: If new signal set is NULL, ignore "how"

The "how" value only makes sense if a new set is given.  If we
only read the current signal set, ignore the value of "how" per
POSIX:

"If set is a null pointer, the value of the argument how is not
significant"

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: /proc/<PID>/status: fix format specifier
Corinna Vinschen [Tue, 1 Mar 2022 13:06:09 +0000 (14:06 +0100)]
Cygwin: /proc/<PID>/status: fix format specifier

The format specifier used for the signal masks is incorrectly
assuming 32 bit values.  Fix it.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: pty: Rename some functions/variables with the name *pcon*.
Takashi Yano [Tue, 1 Mar 2022 13:09:01 +0000 (22:09 +0900)]
Cygwin: pty: Rename some functions/variables with the name *pcon*.

- With this patch, some pty functions/variables have been renamed
  so that the name *pcon* is not used for those that are called
  even when the pseudo console is not active.

2 years agoCygwin: sysconf: _SC_TZNAME_MAX: return -1 as valid value
Corinna Vinschen [Tue, 1 Mar 2022 09:14:42 +0000 (10:14 +0100)]
Cygwin: sysconf: _SC_TZNAME_MAX: return -1 as valid value

sysconf incorrectly sets errno to EINVAL for _SC_TZNAME_MAX.
Don't do that.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2 years agoCygwin: pty: Reorganize the code path of setting up and closing pcon.
Takashi Yano [Tue, 1 Mar 2022 09:04:35 +0000 (18:04 +0900)]
Cygwin: pty: Reorganize the code path of setting up and closing pcon.

- This patch reorganizes the code path of setting-up and cleaning-up
  of the pseudo console to improve readability and maintainability
  of pty code.

2 years agoCygwin: pty: Avoid cutting the branch the pty master is sitting on.
Takashi Yano [Tue, 1 Mar 2022 02:34:16 +0000 (11:34 +0900)]
Cygwin: pty: Avoid cutting the branch the pty master is sitting on.

- When Ctrl-C terminates a non-cygwin process on a pseudo console,
  pty master attaches to the pseudo console first, and send
  CTRL_C_EVENT. If the non-cygwin process closes the pseudo console
  before the pty master calls FreeConsole(), the pty master process
  will crash. With this patch, pty master process takes over the
  ownership of the pseudo console, and closes it by myself.

2 years agonewlib: xstormy16: add missing string.h include
Mike Frysinger [Tue, 1 Mar 2022 06:14:33 +0000 (01:14 -0500)]
newlib: xstormy16: add missing string.h include

Some of these functions are using memcpy & memset from string.h but
not including the header leading to implicit declaration warnings.

2 years agonewlib: speed up targ-include setup & add error checking
Mike Frysinger [Sat, 19 Feb 2022 05:54:20 +0000 (00:54 -0500)]
newlib: speed up targ-include setup & add error checking

The current targ-include setup runs `cp` every header file it installs,
in serial.  This can be a little noticeable on systems, so cleanup the
logic to rely on cp's ability to copy multiple files to a directory in
a single call.

We still need a check for empty directories with no headers (i.e. the
glob doesn't match anything), so add a helper variable to contain that
logic to reduce the boiler plate a little.

2 years agolibgloss: add a little build system generation documentation
Mike Frysinger [Fri, 25 Feb 2022 04:43:06 +0000 (23:43 -0500)]
libgloss: add a little build system generation documentation

This is a bit of an abbreviated form of what's in the Newlib subdir,
but with emphasis on Libgloss-specific parts, and anything unique to
it.  I haven't put too much effort in.

2 years agonewlib: libc: move stdio multiplex logic from build to source files
Mike Frysinger [Sat, 26 Feb 2022 04:17:42 +0000 (23:17 -0500)]
newlib: libc: move stdio multiplex logic from build to source files

Rather than define per-object rules in the Makefile, have small files
that define & include the right content.  This simplifies the build
rules, and makes understanding the source a little easier (imo) as it
makes all the subdirs behave the same: you have 1 source file and it
produces 1 object.  It's also about the same amount of boiler plate,
without having to define custom build rules that can fall out of sync.
Some of these rules were already unnecessary as they were compiling a
single source file into the same named object w/out custom flags, and
Automake handles that for us completely.

This will also be important as we merge the libc.a build into the top
dir since it relies on a single flat list of objects for overrides.

Also take the opportunity to clean up the unnecessary header deps in
here.  Automake provides dependency generation for free now.

2 years agonewlib: simplify header setup rules
Mike Frysinger [Sat, 19 Feb 2022 05:22:14 +0000 (00:22 -0500)]
newlib: simplify header setup rules

Since POSIX cp requires copying a file to a directory without having
to specify the name explicitly, rely on that to avoid calling basename
on every source file.

We can also drop the stub `true` call if the -f test failed.  The use
of `if` already takes care of that in POSIX shell.

2 years agoCygwin: pty: Isolate CTRL_C_EVENTs between ptys.
Takashi Yano [Mon, 28 Feb 2022 11:25:09 +0000 (20:25 +0900)]
Cygwin: pty: Isolate CTRL_C_EVENTs between ptys.

- With this patch, unique invisible consoles are created for each pty
  to isolate CTRL_C_EVENTs between ptys. This is necessary by Ctrl-C
  handling in fhandler_termios::process_sigs() for non-cygwin apps
  started in pty if the pseudo console is disabled.

2 years agoCygwin: console: Improve the code to avoid typeahead key swapping.
Takashi Yano [Mon, 28 Feb 2022 11:02:01 +0000 (20:02 +0900)]
Cygwin: console: Improve the code to avoid typeahead key swapping.

- The commit "Cygwin: console: Prevent the order of typeahead input
  from swapped." did not fully resolve the issue. If keys are typed
  during input buffer fix, the order of key event may be swapped.
  This patch fixes the issue again.

2 years agoCygwin: pinfo: Fix exit code for non-cygwin apps which reads console.
Takashi Yano [Sat, 26 Feb 2022 06:13:13 +0000 (15:13 +0900)]
Cygwin: pinfo: Fix exit code for non-cygwin apps which reads console.

- The recent commit "Cygwin: pinfo: Fix exit code when non-cygwin app
  exits by Ctrl-C." did not fix enough the issue. If a non-cygwin app
  is reading the console, it will not return STATUS_CONTROL_C_EXIT
  even if it is terminated by Ctrl-C. As a result, the previous patch
  does not take effect.
  This patch solves this issue by setting sigExeced to SIGINT in
  ctrl_c_handler(). In addition, sigExeced will be cleared if the app
  does not terminated within predetermined time period. The reason is
  that the app does not seem to be terminated by the signal sigExeced.

2 years agoCygwin: termios: Ensure detection of GDB inferior in process_sigs().
Takashi Yano [Sun, 27 Feb 2022 22:24:45 +0000 (07:24 +0900)]
Cygwin: termios: Ensure detection of GDB inferior in process_sigs().

- In some situations, some cygwin processes might wrongly identified
  as GDB inferior. This patch ensures the detection of GDB inferior.

2 years agoCygwin: termios: Add comments to the code refactored recently.
Takashi Yano [Sun, 27 Feb 2022 11:40:24 +0000 (20:40 +0900)]
Cygwin: termios: Add comments to the code refactored recently.

- This patch adds some comments to the source code whose intent may
  not be clear enough from the code which is refactored recently.

2 years agoCygwin: console: Correct the past fix for apps which open pty.
Takashi Yano [Sun, 27 Feb 2022 03:33:08 +0000 (12:33 +0900)]
Cygwin: console: Correct the past fix for apps which open pty.

- The commit "Cygwin: console: Fix issues of apps which open pty."
  did not fix the second problem correctly. That commit looked to
  fix the issue, but the actual problem was that ctrl_c_handler()
  should be reregistered *AFTER* FreeConsole()/AttachConsole().
  This patch correct that.

2 years agoCygwin: console: Revert experimental code mixed accidentally.
Takashi Yano [Sat, 26 Feb 2022 14:31:59 +0000 (23:31 +0900)]
Cygwin: console: Revert experimental code mixed accidentally.

- The commit "Cygwin: console: Restore CTRL_BREAK_EVENT handling."
  was accidentally mixed with experimental code in exceptions.cc.
  Due to this, non-cygwin app receives CTRL_C_EVENT twice in the
  following scenario.
   1) Run 'sleep 10 | <non-cygwin app>'
   2) Hit Ctrl-C.
   3) The non-cygwin app receives CTRL_C_EVENT twice.
  This patch reverts the code with the problem.

2 years agoCygwin: console: Prevent the order of typeahead input from swapped.
Takashi Yano [Fri, 25 Feb 2022 08:10:03 +0000 (17:10 +0900)]
Cygwin: console: Prevent the order of typeahead input from swapped.

- If a lot of keys are typed very quickly in the app which does
  not read console, the order of input keys in console input buffer
  occasionally swapped. Although this extremely rarely happens,
  is obviously a bug of cons_master_thread. This patch fixes the
  issue.

2 years agoCygwin: pty: Stop to send CTRL_C_EVENT if pcon activated.
Takashi Yano [Fri, 25 Feb 2022 19:19:03 +0000 (04:19 +0900)]
Cygwin: pty: Stop to send CTRL_C_EVENT if pcon activated.

- The commit "Cygwin: console: Redesign handling of special keys."
  removes special treatment for pty in with pseudo console activated,
  however, it is necessary on second thought. This is because sending
  CTRL_C_EVENT to non-cygwin apps will be done in pseudo console,
  therefore, sending it in fhandler_pty_master::write() duplicates
  that event for non-cygwin apps.

2 years agoCygwin: console: Fix issues of apps which open pty.
Takashi Yano [Fri, 25 Feb 2022 07:23:58 +0000 (16:23 +0900)]
Cygwin: console: Fix issues of apps which open pty.

- After some recent changes for special keys handling break the
  apps which open pty (such as script command). If the app which
  opens pty is executed in console, the following issues occur.
    1) If the script command was started from non-cygwin shell
       (such as cmd.exe), another cygwin app started in pty slave
       cannot receive Ctrl-C.
    2) If non-cygwin app is executed in pty slave, the app which
       opened the pty (e.g. script command) crashes by Ctrl-C.
  This patch fixes these issues.

2 years agolibgloss: iq2000: fix prototype
Mike Frysinger [Sat, 26 Feb 2022 04:08:45 +0000 (23:08 -0500)]
libgloss: iq2000: fix prototype

2 years agolibgloss: switch to AM_PROG_AR
Mike Frysinger [Sat, 12 Feb 2022 10:36:20 +0000 (05:36 -0500)]
libgloss: switch to AM_PROG_AR

Now that we require Automake 1.15, we can use this macro rather than
set the tool up ourselves.  The current code doesn't properly search
for a prefixed ar tool as-is.

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