]> sourceware.org Git - newlib-cygwin.git/log
newlib-cygwin.git
7 years agoCygwin: fix guard on struct siginfo_t
Yaakov Selkowitz [Fri, 7 Jul 2017 22:33:59 +0000 (17:33 -0500)]
Cygwin: fix guard on struct siginfo_t

Add line breaks to make it clearer that the struct packing applies to more
than one struct.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agoAdd myself to OS Port Maintainers (RTEMS)
Sebastian Huber [Fri, 7 Jul 2017 05:11:47 +0000 (07:11 +0200)]
Add myself to OS Port Maintainers (RTEMS)

7 years agoSynchronize RTEMS <sys/bitset.h> with FreeBSD
Sebastian Huber [Fri, 7 Jul 2017 05:07:19 +0000 (07:07 +0200)]
Synchronize RTEMS <sys/bitset.h> with FreeBSD

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoRename __in and __out in headers to avoid collision with Windows APIs
David Macek [Fri, 7 Jul 2017 08:47:02 +0000 (10:47 +0200)]
Rename __in and __out in headers to avoid collision with Windows APIs

* string.h: Local variables in expansion of strdupa and strndupa
* sys/wait.h: Fields in anonymous union in expansion of __wait_status_to_int

7 years agofix URL shortcuts launch with cygstart, create shortcuts directly in SM/Programs...
Brian Inglis [Thu, 6 Jul 2017 09:35:34 +0000 (03:35 -0600)]
fix URL shortcuts launch with cygstart, create shortcuts directly in SM/Programs/Cygwin

7 years agoReplace the perl character classes with POSIX ones to fix the build when sed is a...
Tamar Christina [Thu, 6 Jul 2017 09:33:31 +0000 (10:33 +0100)]
Replace the perl character classes with POSIX ones to fix the build when sed is a BSD sed instead of GNU.

Signed-off-by: Tamar Christina <tamar.christina@arm.com>
7 years agofix cygwin-doc postinstall/preremove no SMPrograms/Cygwin dir
Brian Inglis [Wed, 5 Jul 2017 18:28:54 +0000 (12:28 -0600)]
fix cygwin-doc postinstall/preremove no SMPrograms/Cygwin dir

7 years agoAdd support for Semihosting v2 support for AArch64 in libgloss.
Tamar Christina [Wed, 5 Jul 2017 12:04:59 +0000 (13:04 +0100)]
Add support for Semihosting v2 support for AArch64 in libgloss.

Semihosting v2 changes are documented here:
https://developer.arm.com/docs/100863/latest/

The biggest change is the addition of an extensions mechanism
to add more extensions in the future.

Signed-off-by: Tamar Christina <tamar.christina@arm.com>
7 years agoAdd support for Semihosting v2 support for ARM in libgloss.
Tamar Christina [Wed, 5 Jul 2017 12:04:07 +0000 (13:04 +0100)]
Add support for Semihosting v2 support for ARM in libgloss.

Semihosting v2 changes are documented here:
https://developer.arm.com/docs/100863/latest/

The biggest change is the addition of an extensions mechanism
to add more extensions in the future.

Signed-off-by: Tamar Christina <tamar.christina@arm.com>
7 years agoAdd the needed build system changes in order to compile and create the new libraries...
Tamar Christina [Wed, 5 Jul 2017 12:02:30 +0000 (13:02 +0100)]
Add the needed build system changes in order to compile and create the new libraries for Semihosting v2 for ARM.

This uses the new recursive build target in multi-build.in

The new spec files are:

For AArch32/ARM (m for mixed mode):
  - rdimon-v2m.specs
  - aprofile-validation-v2m.specs
  - aprofile-ve-v2m.specs

These spec files will be using the new libraries generated
by multi-build.in.

Signed-off-by: Tamar Christina <tamar.christina@arm.com>
7 years agoAdds the needed build system changes in order to compile and create the new libraries...
Tamar Christina [Wed, 5 Jul 2017 12:00:23 +0000 (13:00 +0100)]
Adds the needed build system changes in order to compile and create the new libraries for Semihosting v2.

This uses the new recursive build target in multi-build.in

For AArch64 no new spec files are needed but the makefiles
are modified to keep them in sync with the ARM ones.

Signed-off-by: Tamar Christina <tamar.christina@arm.com>
7 years agoCreate a recursive make target that is modeled after the existing multilib makefile...
Tamar Christina [Wed, 5 Jul 2017 11:54:52 +0000 (12:54 +0100)]
Create a recursive make target that is modeled after the existing multilib makefile config-ml.in which can be used to build the same files within a target multiple ways.

e.g. from the same source file produce multiple libs by varying the
options passed to the compiler.

Signed-off-by: Tamar Christina <tamar.christina@arm.com>
7 years agoFixed warnings for some long double complex methods
Aditya Upadhyay [Wed, 5 Jul 2017 08:58:36 +0000 (14:28 +0530)]
Fixed warnings for some long double complex methods

7 years agoAdd ffsl(), ffsll(), fls(), flsl(), flsll()
Sebastian Huber [Tue, 4 Jul 2017 10:56:22 +0000 (12:56 +0200)]
Add ffsl(), ffsll(), fls(), flsl(), flsll()

Use compiler builtin for ffs().  Remove duplicate implementation from
Cygwin.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoSynchronize <strings.h> with latest FreeBSD
Sebastian Huber [Tue, 4 Jul 2017 09:49:58 +0000 (11:49 +0200)]
Synchronize <strings.h> with latest FreeBSD

Include <strings.h> in <string.h> if __BSD_VISIBLE like on FreeBSD.
Remove redundant declarations from <string.h>.  Make ffsl(), ffsll(),
strncasecmp(), strcasecmp_l(), and strncasecmp_l() visible via
__BSD_VISIBLE instead of __GNU_VISIBLE.  Add fls(), flsl(), and flsll()
to <strings.h> if __BSD_VISIBLE.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoImplement bzero() via memset()
Sebastian Huber [Tue, 4 Jul 2017 12:25:28 +0000 (14:25 +0200)]
Implement bzero() via memset()

Use memset() to implement bzero() to profit from machine-specific
memset() optimizations.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoCygwin: fix signal.h with _POSIX_C_SOURCE=1
Yaakov Selkowitz [Tue, 4 Jul 2017 23:10:02 +0000 (18:10 -0500)]
Cygwin: fix signal.h with _POSIX_C_SOURCE=1

struct sigaction is POSIX.1-1990 but siginfo_t, which is used by its
sa_sigaction member, is POSIX.1b-1993.  Therefore it needs to be guarded
as well, and as part of a union, the struct size is protected.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agoadd scandirat patch to release notes
Corinna Vinschen [Tue, 4 Jul 2017 13:13:31 +0000 (15:13 +0200)]
add scandirat patch to release notes

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agocygwin: scandirat: fix path given to scandir
Corinna Vinschen [Tue, 4 Jul 2017 13:11:06 +0000 (15:11 +0200)]
cygwin: scandirat: fix path given to scandir

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoBump DLL minor version
Corinna Vinschen [Tue, 4 Jul 2017 13:10:27 +0000 (15:10 +0200)]
Bump DLL minor version

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoFeature test macros overhaul: unistd.h, part 2 cygwin-2_8_1-release
Yaakov Selkowitz [Thu, 29 Jun 2017 18:45:46 +0000 (13:45 -0500)]
Feature test macros overhaul: unistd.h, part 2

This fixes commit f70aad3de4d845f8b720010a2f8817db842d81e8 as well as some
other functions which were never properly guarded.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agoAdd --enable-newlib-global-stdio-streams
Sebastian Huber [Thu, 29 Jun 2017 05:28:08 +0000 (07:28 +0200)]
Add --enable-newlib-global-stdio-streams

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoEnable _REENT_GLOBAL_STDIO_STREAMS for RTEMS
Sebastian Huber [Thu, 29 Jun 2017 06:17:04 +0000 (08:17 +0200)]
Enable _REENT_GLOBAL_STDIO_STREAMS for RTEMS

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoIntroduce _REENT_GLOBAL_STDIO_STREAMS
Sebastian Huber [Thu, 22 Jun 2017 07:22:47 +0000 (09:22 +0200)]
Introduce _REENT_GLOBAL_STDIO_STREAMS

In Newlib, the stdio streams are defined to thread-specific pointers
_reent::_stdin, _reent::_stdout and _reent::_stderr.  In case
_REENT_SMALL is not defined, then these pointers are initialized via
_REENT_INIT_PTR() or _REENT_INIT_PTR_ZEROED() to thread-specific FILE
objects provided via _reent::__sf[3].  There are two problems with this
(at least in case of RTEMS).

(1) The thread-specific FILE objects are closed by _reclaim_reent().
This leads to problems with language run-time libraries that provide
wrappers to the C/POSIX stdio streams (e.g.  C++ and Ada), since they
use the thread-specific FILE objects of the initialization thread.  In
case the initialization thread is deleted, then they use freed memory.

(2) Since thread-specific FILE objects are used with a common output
device via file descriptors 0, 1 and 2, the locking at FILE object level
cannot ensure atomicity of the output, e.g. a call to printf().

Introduce a new Newlib configuration option _REENT_GLOBAL_STDIO_STREAMS
to enable the use of global stdio FILE objects.

As a side-effect this reduces the size of struct _reent by more than
50%.

The _REENT_GLOBAL_STDIO_STREAMS should not be used without
_STDIO_CLOSE_PER_REENT_STD_STREAMS.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoAdd stdin_init(), stdout_init() and stderr_init()
Sebastian Huber [Fri, 23 Jun 2017 07:48:58 +0000 (09:48 +0200)]
Add stdin_init(), stdout_init() and stderr_init()

This simplifies further changes in this area.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoRemove superfluous parameter from std()
Sebastian Huber [Fri, 23 Jun 2017 07:22:37 +0000 (09:22 +0200)]
Remove superfluous parameter from std()

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoOptimized memcmp
Wilco Dijkstra [Thu, 29 Jun 2017 14:32:09 +0000 (14:32 +0000)]
Optimized memcmp

This is an optimized memcmp for AArch64.  This is a complete rewrite
using a different algorithm.  The previous version split into cases
where both inputs were aligned, the inputs were mutually aligned and
unaligned using a byte loop.  The new version combines all these cases,
while small inputs of less than 8 bytes are handled separately.

This allows the main code to be sped up using unaligned loads since
there are now at least 8 bytes to be compared.  After the first 8 bytes,
align the first input.  This ensures each iteration does at most one
unaligned access and mutually aligned inputs behave as aligned.
After the main loop, process the last 8 bytes using unaligned accesses.

This improves performance of (mutually) aligned cases by 25% and
unaligned by >500% (yes >6 times faster) on large inputs.

ChangeLog:
2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>

        * newlib/libc/machine/aarch64/memcmp.S (memcmp):
        Rewrite of optimized memcmp.

GLIBC benchtests/bench-memcmp.c performance comparison for Cortex-A53:

Length    1, alignment  1/ 1: 153%
Length    1, alignment  1/ 1: 119%
Length    1, alignment  1/ 1: 154%
Length    2, alignment  2/ 2: 121%
Length    2, alignment  2/ 2: 140%
Length    2, alignment  2/ 2: 121%
Length    3, alignment  3/ 3: 105%
Length    3, alignment  3/ 3: 105%
Length    3, alignment  3/ 3: 105%
Length    4, alignment  4/ 4: 155%
Length    4, alignment  4/ 4: 154%
Length    4, alignment  4/ 4: 161%
Length    5, alignment  5/ 5: 173%
Length    5, alignment  5/ 5: 173%
Length    5, alignment  5/ 5: 173%
Length    6, alignment  6/ 6: 145%
Length    6, alignment  6/ 6: 145%
Length    6, alignment  6/ 6: 145%
Length    7, alignment  7/ 7: 125%
Length    7, alignment  7/ 7: 125%
Length    7, alignment  7/ 7: 125%
Length    8, alignment  8/ 8: 111%
Length    8, alignment  8/ 8: 130%
Length    8, alignment  8/ 8: 124%
Length    9, alignment  9/ 9: 160%
Length    9, alignment  9/ 9: 160%
Length    9, alignment  9/ 9: 150%
Length   10, alignment 10/10: 170%
Length   10, alignment 10/10: 137%
Length   10, alignment 10/10: 150%
Length   11, alignment 11/11: 160%
Length   11, alignment 11/11: 160%
Length   11, alignment 11/11: 160%
Length   12, alignment 12/12: 146%
Length   12, alignment 12/12: 168%
Length   12, alignment 12/12: 156%
Length   13, alignment 13/13: 167%
Length   13, alignment 13/13: 167%
Length   13, alignment 13/13: 173%
Length   14, alignment 14/14: 167%
Length   14, alignment 14/14: 168%
Length   14, alignment 14/14: 168%
Length   15, alignment 15/15: 168%
Length   15, alignment 15/15: 173%
Length   15, alignment 15/15: 173%
Length    1, alignment  0/ 0: 134%
Length    1, alignment  0/ 0: 127%
Length    1, alignment  0/ 0: 119%
Length    2, alignment  0/ 0: 94%
Length    2, alignment  0/ 0: 94%
Length    2, alignment  0/ 0: 106%
Length    3, alignment  0/ 0: 82%
Length    3, alignment  0/ 0: 87%
Length    3, alignment  0/ 0: 82%
Length    4, alignment  0/ 0: 115%
Length    4, alignment  0/ 0: 115%
Length    4, alignment  0/ 0: 122%
Length    5, alignment  0/ 0: 127%
Length    5, alignment  0/ 0: 119%
Length    5, alignment  0/ 0: 127%
Length    6, alignment  0/ 0: 103%
Length    6, alignment  0/ 0: 100%
Length    6, alignment  0/ 0: 100%
Length    7, alignment  0/ 0: 82%
Length    7, alignment  0/ 0: 91%
Length    7, alignment  0/ 0: 87%
Length    8, alignment  0/ 0: 111%
Length    8, alignment  0/ 0: 124%
Length    8, alignment  0/ 0: 124%
Length    9, alignment  0/ 0: 136%
Length    9, alignment  0/ 0: 136%
Length    9, alignment  0/ 0: 136%
Length   10, alignment  0/ 0: 136%
Length   10, alignment  0/ 0: 135%
Length   10, alignment  0/ 0: 136%
Length   11, alignment  0/ 0: 136%
Length   11, alignment  0/ 0: 136%
Length   11, alignment  0/ 0: 135%
Length   12, alignment  0/ 0: 136%
Length   12, alignment  0/ 0: 136%
Length   12, alignment  0/ 0: 136%
Length   13, alignment  0/ 0: 135%
Length   13, alignment  0/ 0: 136%
Length   13, alignment  0/ 0: 136%
Length   14, alignment  0/ 0: 136%
Length   14, alignment  0/ 0: 136%
Length   14, alignment  0/ 0: 136%
Length   15, alignment  0/ 0: 136%
Length   15, alignment  0/ 0: 136%
Length   15, alignment  0/ 0: 136%
Length    4, alignment  0/ 0: 115%
Length    4, alignment  0/ 0: 115%
Length    4, alignment  0/ 0: 115%
Length   32, alignment  0/ 0: 127%
Length   32, alignment  7/ 2: 395%
Length   32, alignment  0/ 0: 127%
Length   32, alignment  0/ 0: 127%
Length    8, alignment  0/ 0: 111%
Length    8, alignment  0/ 0: 124%
Length    8, alignment  0/ 0: 124%
Length   64, alignment  0/ 0: 128%
Length   64, alignment  6/ 4: 475%
Length   64, alignment  0/ 0: 131%
Length   64, alignment  0/ 0: 134%
Length   16, alignment  0/ 0: 128%
Length   16, alignment  0/ 0: 119%
Length   16, alignment  0/ 0: 128%
Length  128, alignment  0/ 0: 129%
Length  128, alignment  5/ 6: 475%
Length  128, alignment  0/ 0: 130%
Length  128, alignment  0/ 0: 129%
Length   32, alignment  0/ 0: 126%
Length   32, alignment  0/ 0: 126%
Length   32, alignment  0/ 0: 126%
Length  256, alignment  0/ 0: 127%
Length  256, alignment  4/ 8: 545%
Length  256, alignment  0/ 0: 126%
Length  256, alignment  0/ 0: 128%
Length   64, alignment  0/ 0: 171%
Length   64, alignment  0/ 0: 171%
Length   64, alignment  0/ 0: 174%
Length  512, alignment  0/ 0: 126%
Length  512, alignment  3/10: 585%
Length  512, alignment  0/ 0: 126%
Length  512, alignment  0/ 0: 127%
Length  128, alignment  0/ 0: 129%
Length  128, alignment  0/ 0: 128%
Length  128, alignment  0/ 0: 129%
Length 1024, alignment  0/ 0: 125%
Length 1024, alignment  2/12: 611%
Length 1024, alignment  0/ 0: 126%
Length 1024, alignment  0/ 0: 126%
Length  256, alignment  0/ 0: 128%
Length  256, alignment  0/ 0: 127%
Length  256, alignment  0/ 0: 128%
Length 2048, alignment  0/ 0: 125%
Length 2048, alignment  1/14: 625%
Length 2048, alignment  0/ 0: 125%
Length 2048, alignment  0/ 0: 125%
Length  512, alignment  0/ 0: 126%
Length  512, alignment  0/ 0: 127%
Length  512, alignment  0/ 0: 127%
Length 4096, alignment  0/ 0: 125%
Length 4096, alignment  0/16: 125%
Length 4096, alignment  0/ 0: 125%
Length 4096, alignment  0/ 0: 125%
Length 1024, alignment  0/ 0: 126%
Length 1024, alignment  0/ 0: 126%
Length 1024, alignment  0/ 0: 126%
Length 8192, alignment  0/ 0: 125%
Length 8192, alignment 63/18: 636%
Length 8192, alignment  0/ 0: 125%
Length 8192, alignment  0/ 0: 125%
Length   16, alignment  1/ 2: 317%
Length   16, alignment  1/ 2: 317%
Length   16, alignment  1/ 2: 317%
Length   32, alignment  2/ 4: 395%
Length   32, alignment  2/ 4: 395%
Length   32, alignment  2/ 4: 398%
Length   64, alignment  3/ 6: 475%
Length   64, alignment  3/ 6: 475%
Length   64, alignment  3/ 6: 477%
Length  128, alignment  4/ 8: 479%
Length  128, alignment  4/ 8: 479%
Length  128, alignment  4/ 8: 479%
Length  256, alignment  5/10: 543%
Length  256, alignment  5/10: 539%
Length  256, alignment  5/10: 543%
Length  512, alignment  6/12: 585%
Length  512, alignment  6/12: 585%
Length  512, alignment  6/12: 585%
Length 1024, alignment  7/14: 611%
Length 1024, alignment  7/14: 611%
Length 1024, alignment  7/14: 611%

7 years agonewlib: fix file mode of newly added complex sources
Corinna Vinschen [Thu, 29 Jun 2017 13:30:35 +0000 (15:30 +0200)]
newlib: fix file mode of newly added complex sources

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agonewlib: libm/complex/Makefile.in: regenerate
Corinna Vinschen [Thu, 29 Jun 2017 11:55:10 +0000 (13:55 +0200)]
newlib: libm/complex/Makefile.in: regenerate

7 years agoAdding csinl.c in Makefile.am
Aditya Upadhyay [Thu, 29 Jun 2017 07:06:09 +0000 (12:36 +0530)]
Adding csinl.c in Makefile.am

Signed-off-by: Aditya Upadhyay <aadit0402@gmail.com>
7 years agoImporting csinl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:24:32 +0000 (01:54 +0530)]
Importing csinl.c from NetBSD.

7 years agoImporting csinhl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:24:09 +0000 (01:54 +0530)]
Importing csinhl.c from NetBSD.

7 years agoImporting casinhl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:23:34 +0000 (01:53 +0530)]
Importing casinhl.c from NetBSD.

7 years agoImporting ctanl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:12:07 +0000 (01:42 +0530)]
Importing ctanl.c from NetBSD.

7 years agoImporting ctanhl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:11:21 +0000 (01:41 +0530)]
Importing ctanhl.c from NetBSD.

7 years agoImporting cpowl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:10:31 +0000 (01:40 +0530)]
Importing cpowl.c from NetBSD.

7 years agoImporting conjl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:09:48 +0000 (01:39 +0530)]
Importing conjl.c from NetBSD.

7 years agoImporting catanhl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:08:54 +0000 (01:38 +0530)]
Importing catanhl.c from NetBSD.

7 years agoImporting casinl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:08:01 +0000 (01:38 +0530)]
Importing casinl.c from NetBSD.

7 years agoImporting ccosl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:06:47 +0000 (01:36 +0530)]
Importing ccosl.c from NetBSD.

7 years agoImporting cacosl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:05:44 +0000 (01:35 +0530)]
Importing cacosl.c from NetBSD.

7 years agoAdding cephes_subrl.h and cephes_subrl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:04:23 +0000 (01:34 +0530)]
Adding cephes_subrl.h and cephes_subrl.c from NetBSD.

7 years agoImporting cexpl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:02:00 +0000 (01:32 +0530)]
Importing cexpl.c from NetBSD.

7 years agoImporting cprojl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:01:22 +0000 (01:31 +0530)]
Importing cprojl.c from NetBSD.

7 years agoImporting cargl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 20:00:47 +0000 (01:30 +0530)]
Importing cargl.c from NetBSD.

7 years agoImporting csqrtl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 19:58:51 +0000 (01:28 +0530)]
Importing csqrtl.c from NetBSD.

7 years agoImporting clogl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 19:57:48 +0000 (01:27 +0530)]
Importing clogl.c from NetBSD.

7 years agoImporting cacoshl.c from NetBSD.
Aditya Upadhyay [Wed, 28 Jun 2017 19:55:21 +0000 (01:25 +0530)]
Importing cacoshl.c from NetBSD.

7 years agounistd.h: Remove trailing whitespace
Dionna Glaze [Thu, 29 Jun 2017 06:34:19 +0000 (08:34 +0200)]
unistd.h: Remove trailing whitespace

7 years agounistd.h: remove mktemp
Corinna Vinschen [Thu, 29 Jun 2017 06:32:33 +0000 (08:32 +0200)]
unistd.h: remove mktemp

mktemp is already correctly declared in stdlib.h

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoMake gethostname, getdtablesize, mktemp, ualarm available in BSD, XOPEN_SOURCE >...
Dionna Glaze [Thu, 29 Jun 2017 06:30:04 +0000 (08:30 +0200)]
Make gethostname, getdtablesize, mktemp, ualarm available in BSD, XOPEN_SOURCE >= 500.

7 years agoreplace shortcut parameter assignments with read loops, run with sh
Brian Inglis [Mon, 26 Jun 2017 19:43:40 +0000 (13:43 -0600)]
replace shortcut parameter assignments with read loops, run with sh

7 years agoaarch64: optimize the unaligned case of memcmp
Sebastian Pop [Fri, 23 Jun 2017 20:23:09 +0000 (15:23 -0500)]
aarch64: optimize the unaligned case of memcmp

This brings to newlib a performance improvement that we developed in Bionic
libc.  That change has been submitted for review to Bionic libc:
https://android-review.googlesource.com/418279

A similar patch has been submitted for review in glibc:
https://sourceware.org/ml/libc-alpha/2017-06/msg01143.html

Patch written by Vikas Sinha and Sebastian Pop.

The performance was measured on the bionic-benchmarks on a hikey (aarch64 8xA53)
board. There was no performance change to the existing benchmark
and a performance improvement on the new benchmark for memcmp
on the unaligned side. The new benchmark has been submitted for
review at https://android-review.googlesource.com/414860

The overall performance improves by 18% for the small data set 8
and the performance improves by 450% for the large data set 64k.

The base is with the libc from /system/lib64. The bionic libc
with this patch is in /data.

hikey:/data # export LD_LIBRARY_PATH=/system/lib64
hikey:/data # ./bionic-benchmarks --benchmark_filter='BM_string_memcmp*'
Run on (8 X 2.4 MHz CPU s)
Benchmark                                Time           CPU Iterations
----------------------------------------------------------------------
BM_string_memcmp/8                      30 ns         30 ns   22955680    251.07MB/s
BM_string_memcmp/64                     57 ns         57 ns   12349184   1076.99MB/s
BM_string_memcmp/512                   305 ns        305 ns    2297163   1.56496GB/s
BM_string_memcmp/1024                  571 ns        571 ns    1225211   1.66912GB/s
BM_string_memcmp/8k                   4307 ns       4306 ns     162562   1.77177GB/s
BM_string_memcmp/16k                  8676 ns       8675 ns      80676   1.75887GB/s
BM_string_memcmp/32k                 19233 ns      19230 ns      36394   1.58695GB/s
BM_string_memcmp/64k                 36986 ns      36984 ns      18952   1.65029GB/s
BM_string_memcmp_aligned/8             199 ns        199 ns    3519166   38.3336MB/s
BM_string_memcmp_aligned/64            386 ns        386 ns    1810734   158.073MB/s
BM_string_memcmp_aligned/512          1735 ns       1734 ns     403981   281.525MB/s
BM_string_memcmp_aligned/1024         3200 ns       3200 ns     218838   305.151MB/s
BM_string_memcmp_aligned/8k          25084 ns      25080 ns      28180   311.507MB/s
BM_string_memcmp_aligned/16k         51730 ns      51729 ns      13521   302.057MB/s
BM_string_memcmp_aligned/32k        103228 ns     103228 ns       6782   302.727MB/s
BM_string_memcmp_aligned/64k        207117 ns     207087 ns       3450   301.806MB/s
BM_string_memcmp_unaligned/8           339 ns        339 ns    2070998   22.5302MB/s
BM_string_memcmp_unaligned/64         1392 ns       1392 ns     502796   43.8454MB/s
BM_string_memcmp_unaligned/512        9194 ns       9194 ns      76133   53.1104MB/s
BM_string_memcmp_unaligned/1024      18325 ns      18323 ns      38206   53.2963MB/s
BM_string_memcmp_unaligned/8k       148579 ns     148574 ns       4713   52.5831MB/s
BM_string_memcmp_unaligned/16k      298169 ns     298120 ns       2344   52.4118MB/s
BM_string_memcmp_unaligned/32k      598813 ns     598797 ns       1085    52.188MB/s
BM_string_memcmp_unaligned/64k     1196079 ns    1196083 ns        540   52.2539MB/s

hikey:/data # export LD_LIBRARY_PATH=/data
hikey:/data # ./bionic-benchmarks --benchmark_filter='BM_string_memcmp*'
Run on (8 X 2.4 MHz CPU s)
Benchmark                                Time           CPU Iterations
----------------------------------------------------------------------
BM_string_memcmp/8                      30 ns         30 ns   23209918   252.802MB/s
BM_string_memcmp/64                     57 ns         57 ns   12348447   1076.95MB/s
BM_string_memcmp/512                   305 ns        305 ns    2296878   1.56471GB/s
BM_string_memcmp/1024                  572 ns        571 ns    1224426    1.6689GB/s
BM_string_memcmp/8k                   4309 ns       4308 ns     162491   1.77109GB/s
BM_string_memcmp/16k                  9348 ns       9345 ns      74894   1.63285GB/s
BM_string_memcmp/32k                 18329 ns      18322 ns      38249    1.6656GB/s
BM_string_memcmp/64k                 36992 ns      36981 ns      18952   1.65045GB/s
BM_string_memcmp_aligned/8             199 ns        199 ns    3513925   38.3162MB/s
BM_string_memcmp_aligned/64            386 ns        386 ns    1814038   158.192MB/s
BM_string_memcmp_aligned/512          1735 ns       1735 ns     402279   281.502MB/s
BM_string_memcmp_aligned/1024         3204 ns       3202 ns     218761   304.941MB/s
BM_string_memcmp_aligned/8k          25577 ns      25569 ns      27406   305.548MB/s
BM_string_memcmp_aligned/16k         52143 ns      52123 ns      13522   299.769MB/s
BM_string_memcmp_aligned/32k        105169 ns     105127 ns       6637    297.26MB/s
BM_string_memcmp_aligned/64k        206508 ns     206383 ns       3417   302.835MB/s
BM_string_memcmp_unaligned/8           282 ns        282 ns    2482953    27.062MB/s
BM_string_memcmp_unaligned/64          542 ns        541 ns    1298317    112.77MB/s
BM_string_memcmp_unaligned/512        2152 ns       2152 ns     325267   226.915MB/s
BM_string_memcmp_unaligned/1024       4025 ns       4025 ns     173904   242.622MB/s
BM_string_memcmp_unaligned/8k        32276 ns      32271 ns      21818    242.09MB/s
BM_string_memcmp_unaligned/16k       65970 ns      65970 ns      10554   236.851MB/s
BM_string_memcmp_unaligned/32k      131241 ns     131242 ns       5129    238.11MB/s
BM_string_memcmp_unaligned/64k      266159 ns     266160 ns       2661   234.821MB/s

7 years agocygwin: doc: Fix doc install path in postinstall script
Corinna Vinschen [Fri, 23 Jun 2017 18:24:49 +0000 (20:24 +0200)]
cygwin: doc: Fix doc install path in postinstall script

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoUpdate documentation of cygwin setup proxy configuration details newlib-snapshot-20170623
Jon Turney [Mon, 19 Jun 2017 16:18:36 +0000 (17:18 +0100)]
Update documentation of cygwin setup proxy configuration details

7 years agoUpdate and sort list of cygwin setup command line options.
Jon Turney [Fri, 26 May 2017 11:23:39 +0000 (12:23 +0100)]
Update and sort list of cygwin setup command line options.

7 years agoNote regtool fix in release message
Corinna Vinschen [Thu, 22 Jun 2017 12:48:43 +0000 (14:48 +0200)]
Note regtool fix in release message

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agocygwin: regtool: encode error messages correctly
Fujii Hironori [Tue, 20 Jun 2017 11:17:09 +0000 (13:17 +0200)]
cygwin: regtool: encode error messages correctly

Error messages of regtool can't be read, which are encoded in,
for instance, SHIFT_JIS in Japanese Windows.  Fix by using
wide chars instead of multibyte.

7 years agoRevert "cygserver: Revamp thread sleep handling"
Corinna Vinschen [Tue, 20 Jun 2017 11:09:07 +0000 (13:09 +0200)]
Revert "cygserver: Revamp thread sleep handling"

This reverts commit b80b2c011936f7f075b76b6e59f9e8a5ec49caa1.

7 years agocygwin: readdir: Activate check for remote reparse points
Corinna Vinschen [Tue, 20 Jun 2017 08:06:17 +0000 (10:06 +0200)]
cygwin: readdir: Activate check for remote reparse points

Fix and move comment accordingly.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoCompatibility improvements to reparse point handling.
Joe_Lowe [Wed, 14 Jun 2017 20:01:28 +0000 (13:01 -0700)]
Compatibility improvements to reparse point handling.

7 years agostring: fix strverscmp doc inclusion
Yaakov Selkowitz [Mon, 19 Jun 2017 16:52:02 +0000 (11:52 -0500)]
string: fix strverscmp doc inclusion

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agocygwin: export strverscmp, add versionsort
Yaakov Selkowitz [Wed, 14 Jun 2017 20:26:38 +0000 (15:26 -0500)]
cygwin: export strverscmp, add versionsort

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agostring: add strverscmp
Yaakov Selkowitz [Wed, 14 Jun 2017 20:22:00 +0000 (15:22 -0500)]
string: add strverscmp

The actual implementation is from musl (MIT license).

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agoFix guard for siginfo_t and pthread_t definition
Thomas Preud'homme [Thu, 15 Jun 2017 13:09:39 +0000 (14:09 +0100)]
Fix guard for siginfo_t and pthread_t definition

Commit 8a3b3bb4d7224d419cc1a4af60ccf7e70edc876b changed the guard on
some functions from _POSIX_THREADS to __POSIX_VISIBLE. As a consequence,
some use of siginfo_t and pthread_t became visible under configurations
where _POSIX_THREADS is unset but __POSIX_VISIBLE is. Build then fails
because the definition of those types are still unavailable.

This commit make those type definition visible for __POSIX_VISIBLE
configurations. This requires moving the siginfo_t definition out of the
RTEMS specific definitions in sys/signal.h while still guarding it
against cygwin case.

7 years agoRevert "Don't overread or write memory returned by _DTOA_R"
Corinna Vinschen [Mon, 19 Jun 2017 10:57:16 +0000 (12:57 +0200)]
Revert "Don't overread or write memory returned by _DTOA_R"

This reverts commit efaef1bba263501e1e7264833ddfc9b8c20f9ebc.

7 years agoEnsure that send() interrupted by a signal returns sucessfully
Erik M. Bray [Thu, 15 Jun 2017 13:30:08 +0000 (15:30 +0200)]
Ensure that send() interrupted by a signal returns sucessfully

When SA_RESTART is not set on a socket, a blocking send() that is
interrupted mid-transition by a signal should return success (and
report just how many bytes were actually transmitted).

The err variable used here was not always guaranteed to be set
correctly in the loop, so better to just remove it and call
WSAGetLastError() explicitly.

7 years agocygwin: document XSI sigpause
Yaakov Selkowitz [Wed, 14 Jun 2017 19:30:44 +0000 (14:30 -0500)]
cygwin: document XSI sigpause

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agoExport XSI sigpause
Yaakov Selkowitz [Wed, 14 Jun 2017 15:20:05 +0000 (10:20 -0500)]
Export XSI sigpause

There are two common sigpause variants, both of which take an int argument.
If you request _XOPEN_SOURCE or _GNU_SOURCE, you get the System V version,
which removes the given signal from the process's signal mask; otherwise
you get the BSD version, which sets the process's signal mask to the given
value.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agonewlib/MAINTAINERS: Add OS maintainers section and myself for RTEMS and Write After...
Joel Sherrill [Tue, 13 Jun 2017 21:29:13 +0000 (16:29 -0500)]
newlib/MAINTAINERS: Add OS maintainers section and myself for RTEMS and Write After Approval.

7 years agoFeature test macros overhaul: Cygwin signal.h
Yaakov Selkowitz [Tue, 13 Jun 2017 19:58:33 +0000 (14:58 -0500)]
Feature test macros overhaul: Cygwin signal.h

This should match newlib's <sys/signal.h>.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agoFeature test macros overhaul: signal.h (part 3)
Yaakov Selkowitz [Tue, 13 Jun 2017 19:56:02 +0000 (14:56 -0500)]
Feature test macros overhaul: signal.h (part 3)

Notably, sigaction and friends are POSIX, but the form of sigpause
currently provided is BSD.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agostdio.h: guard function macros with !__cplusplus
Yaakov Selkowitz [Tue, 13 Jun 2017 19:51:18 +0000 (14:51 -0500)]
stdio.h: guard function macros with !__cplusplus

While POSIX allows these functions to also be defined as macros in C, in
C++ this is not allowed, and prevents these names (particularly feof) from
being used in a custom namespace.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
7 years agoAdd JLI support.
Claudiu Zissulescu [Tue, 23 May 2017 13:05:49 +0000 (15:05 +0200)]
Add JLI support.

Initialize the jli_base registers for ARCv2 cpus.

libgloss/
2017-05-23  Claudiu Zissulescu  <claziss@synopsys.com>

* arc/crt0.S: Initialize the jli_base registers for ARCv2 cpus.

7 years agoAdd profile support.
Claudiu Zissulescu [Tue, 23 May 2017 13:05:48 +0000 (15:05 +0200)]
Add profile support.

Add profile support for ARC processors.

libgloss/
2016-07-28  Claudiu Zissulescu  <claziss@synopsys.com>

* arc/crt0.S: Add calls to profiler support routines.
* Makefile.in (CRT0): Add gcrt0.
(NSIM_OBJS): Add mcount.
(CRT0_INSTALL): Install gcrt0, and crt0.
* arc/gcrt0.S: New file.
* arc/mcount.c: Likewise.

7 years agocygwin: readdir: don't lookup mount target inodes
Corinna Vinschen [Wed, 14 Jun 2017 11:22:56 +0000 (13:22 +0200)]
cygwin: readdir: don't lookup mount target inodes

So far Cygwin's readdir returned the inode number of a mount target
in d_ino, rather than the actual inode number of the mount point in
the underlying filesystem.  This not only results in a performance
hit if the mount target is a remote FS, it is also not done on other
POSIX systems.

Remove the code evaluating the mount target inode number.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoreaddir() with mount point dentry, return mount point INO
Joe Lowe [Tue, 13 Jun 2017 18:12:50 +0000 (11:12 -0700)]
readdir() with mount point dentry, return mount point INO

This patch fixes a minor compatibility issue w/ cygwin mount point handling in
readdir(), compared to equivalent behavior of Linux and MacOS. dentry.d_ino
should indicate the INO of the mount point itself, not the target volume root
folder.

Changed return type from readdir_check_reparse_point to uint8_t, to avoid
unnecessarily being implicitly cast to and from a signed int.

Renamed a related local variable "attr" to "oattr" that was eclipsing a member
variable with the same name.

Joe L.

7 years agoccoshl: Align formatting to upstream
Aditya Upadhyay [Wed, 14 Jun 2017 08:36:38 +0000 (10:36 +0200)]
ccoshl: Align formatting to upstream

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoImporting ccoshl.c from netbsd.
Aditya Upadhyay [Mon, 12 Jun 2017 19:16:22 +0000 (00:46 +0530)]
Importing ccoshl.c from netbsd.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoRemove FreeBSD specifics from RTEMS <arpa/inet.h>
Sebastian Huber [Mon, 12 Jun 2017 06:38:56 +0000 (08:38 +0200)]
Remove FreeBSD specifics from RTEMS <arpa/inet.h>

For whatever reason FreeBSD renames several functions provided by
<arpa/inet.h> and uses weak references to provide the standard function
names.  This causes problems on targets lacking proper support for weak
references.  We do not need this function renaming on RTEMS.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoDon't overread or write memory returned by _DTOA_R
Silviu Baranga [Mon, 5 Jun 2017 08:54:42 +0000 (09:54 +0100)]
Don't overread or write memory returned by _DTOA_R

Don't over-read memory returned by _DTOA_R, and never write to it
since the result might be a string literal.

For example, when doing:
  swprintf(tt, 20, L"%.*f", 6, 0.0);

we will get back "0".

Instead, write the result returned by _DTOA_R to the output buffer.
After this, write the 0 chars directly to the the output buffer
(if there are any). This also has the (marginal) advantage that
we read/write less memory overall.

7 years agoAdd COMODO Internet Security and ConEmu to BLODA
David Macek [Thu, 8 Jun 2017 12:48:53 +0000 (14:48 +0200)]
Add COMODO Internet Security and ConEmu to BLODA

ConEmu: There has been at least one report of it causing crashes <https://github.com/Maximus5/ConEmu/issues/1158>

COMODO Internet Security: Causing GPG failures <https://github.com/msys2/msys2/issues/38>

7 years agoFix RTEMS ioctl() declaration
Sebastian Huber [Wed, 7 Jun 2017 09:05:38 +0000 (11:05 +0200)]
Fix RTEMS ioctl() declaration

Using uint32_t for ioctl_command_t does not work well on 64-bit targets.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoUpdate FreeBSD revision of RTEMS <sys/bitset.h>
Sebastian Huber [Wed, 7 Jun 2017 06:40:48 +0000 (08:40 +0200)]
Update FreeBSD revision of RTEMS <sys/bitset.h>

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoFix some RTEMS CPUSET(9) macros
Sebastian Huber [Wed, 7 Jun 2017 07:17:23 +0000 (09:17 +0200)]
Fix some RTEMS CPUSET(9) macros

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoFix RTEMS CPU_EQUAL_S()
Sebastian Huber [Wed, 7 Jun 2017 06:38:22 +0000 (08:38 +0200)]
Fix RTEMS CPU_EQUAL_S()

According to the FreeBSD man page BIT_CMP() returns true in case the two
sets are NOT equal.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoAdd myself to Write After Approval
Sebastian Huber [Wed, 7 Jun 2017 12:36:51 +0000 (14:36 +0200)]
Add myself to Write After Approval

7 years agoFix minor issues in memchr NEON implementation
Prakhar Bahuguna [Fri, 2 Jun 2017 09:22:32 +0000 (10:22 +0100)]
Fix minor issues in memchr NEON implementation

7 years agoPrint sign of NaN values.
Kito Cheng [Sat, 3 Jun 2017 13:41:29 +0000 (21:41 +0800)]
Print sign of NaN values.

7 years agocygwin: document lrint bugfix
Corinna Vinschen [Wed, 7 Jun 2017 09:07:52 +0000 (11:07 +0200)]
cygwin: document lrint bugfix

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agocygwin: Fix lrint{f,l} to return a 64 bit long on x86_64
Corinna Vinschen [Wed, 7 Jun 2017 09:03:16 +0000 (11:03 +0200)]
cygwin: Fix lrint{f,l} to return a 64 bit long on x86_64

Mingw-w64 (where the code has been taken from) has 4 byte longs
independently of the architecture but x86_64 Cygwin has 64 bit longs.
So use fistpll instead of fistpl on x86_64 Cygwin.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agocygwin: document env var crash fix
Corinna Vinschen [Tue, 6 Jun 2017 19:11:52 +0000 (21:11 +0200)]
cygwin: document env var crash fix

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agocygwin: Fix crash if env var name starts with non-ASCII char
Corinna Vinschen [Tue, 6 Jun 2017 19:10:23 +0000 (21:10 +0200)]
cygwin: Fix crash if env var name starts with non-ASCII char

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agocygwin: document wcsxfrm fix
Corinna Vinschen [Tue, 6 Jun 2017 16:39:41 +0000 (18:39 +0200)]
cygwin: document wcsxfrm fix

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agocygwin wcsxfrm: byte swap result ourselves
Corinna Vinschen [Tue, 6 Jun 2017 16:27:47 +0000 (18:27 +0200)]
cygwin wcsxfrm: byte swap result ourselves

Workaround a bug (or undocumented behaviour) in LCMapStringW:

It's documented(*) that the cchDest parameter is a byte count with
LCMAP_SORTKEY, but a character count otherwise.  But the docs don't
state what happens if you combine LCMAP_SORTKEY with LCMAP_BYTEREV.

Tests indicate that LCMAP_SORTKEY treats cchDest as byte count, but
then LCMAP_BYTEREV treats it as char count in the same call.  So the
latter swaps twice as much bytes in the destination buffer than the
byte count it returns, which potentially results in writing past the
end of the given output buffer.

Solution: Don't specify LCMAP_BYTEREV in the LCMapStringW(LCMAP_SORTKEY)
call, rather byte swap afterwards.

(*) https://msdn.microsoft.com/en-us/library/windows/desktop/dd318702(v=vs.85).aspx

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
7 years agoFix thinko in MSP430 libgloss implementation of write() system call.
Martin Young [Fri, 26 May 2017 10:35:13 +0000 (11:35 +0100)]
Fix thinko in MSP430 libgloss implementation of write() system call.

7 years agoUpdate COPYING.NEWLIB appropriately.
Jeff Johnston [Thu, 25 May 2017 16:52:18 +0000 (12:52 -0400)]
Update COPYING.NEWLIB appropriately.

7 years agoAdd de-facto standard <sys/ioctl.h> for RTEMS
Sebastian Huber [Mon, 22 May 2017 09:54:27 +0000 (11:54 +0200)]
Add de-facto standard <sys/ioctl.h> for RTEMS

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoAdd some POSIX header files for RTEMS
Sebastian Huber [Mon, 22 May 2017 08:42:39 +0000 (10:42 +0200)]
Add some POSIX header files for RTEMS

Add the POSIX header files

  * arpa/inet.h
  * net/if.h
  * netdb.h
  * netinet/in.h
  * netinet/tcp.h
  * sys/socket.h
  * sys/syslog.h
  * sys/uio.h
  * sys/un.h
  * syslog.h
  * termios.h

and their dependencies for RTEMS.  The origin of these files is the
latest FreeBSD.

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
7 years agoFreeBSD compatibility for RTEMS <sys/cpuset.h>
Sebastian Huber [Mon, 22 May 2017 05:39:55 +0000 (07:39 +0200)]
FreeBSD compatibility for RTEMS <sys/cpuset.h>

Make the RTEMS <sys/cpuset.h> compatible with the latest FreeBSD
version.

Fix the CPU_COPY() parameter order, see also:

https://devel.rtems.org/ticket/3023

Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
This page took 0.074395 seconds and 5 git commands to generate.