Marko Myllynen [Sat, 6 Apr 2013 20:33:26 +0000 (16:33 -0400)]
fi_FI: Define yesstr, nostr
Define yesstr/nostr in fi_FI (as "Kyllä" and "Ei").
Fixes part of BZ#15264.
---
2013-04-06 Marko Myllynen <myllynen@redhat.com>
[BZ #15264]
* locales/fi_FI (LC_MESSAGES): Define yesstr and nostr.
Carlos O'Donell [Sat, 6 Apr 2013 20:22:47 +0000 (16:22 -0400)]
New Makefile target `regen-ulps'.
The wiki "Regeneration" page has this to say about update ULPs.
"The libm-test-ulps files are semiautomatically updated. To
update an ulps baseline, run each of the failing tests (test-float,
test-double, etc.) with -u; this will generate a file called ULPs;
concatenate each of those files with the existing libm-test-ulps
file, after removing any entries for particularly huge numbers of
ulps that you do not want to mark as expected. Then run
gen-libm-test.pl -n -u FILE where FILE is the concatenated file
produced in the previous step. This generates a file called
NewUlps which is the new sorted version of libm-test-ulps."
The same information is listed in math/README.libm-test, and is a
lot of manual work that you often want to run over-and-over again
while working on a particular test.
The `regen-ulps' convenience target does this automatically for
developers.
We strictly assume the source tree is readonly and add a
new --output-dir option to libm-test.inc to allow for writing
out ULPs to $(objpfx).
When run the new target does the following:
* Starts with the baseline ULPs file.
* Runs each of the libm math tests with -u.
* Adds new changes seen with -u to the baseline.
* Sorts and prepares the test output with gen-libm-test.pl.
* Leaves math/NewUlps in your build tree to copy to your source
tree, cleanup, and checkin.
The math test documentation in math/README.libm-test is updated
document the new Makefile target.
---
2013-04-06 Carlos O'Donell <carlos@redhat.com>
* Makefile.in (regen-ulps): New target.
* math/Makefile [ifneq (no,$(PERL)]: Declare regen-ulps with .PHONY.
[ifneq (no,$(PERL)] (run-regen-ulps): New variable.
[ifneq (no,$(PERL)] (regen-ulps): New target.
[ifeq (no,$(PERL)] (regen-ulps): New target.
* math/libm-test.inc (ulps_file_name): Define.
(output_dir): New variable.
(options): Add "output-dir" option.
(parse_opt): Handle 'o' case.
(main): If output_dir is non-NULL use it as a prefix
otherwise use "".
* math/README.libm-test: Update `How can I generate "libm-test-ulps"?'
Carlos O'Donell [Sat, 6 Apr 2013 16:00:35 +0000 (12:00 -0400)]
i386: Fail at configure time for i386 builds.
This change does two things:
* Treats a target i386-* as if it were i686.
* Fails configure if the user is generating code
for i386.
We no longer support i386 code-generation because the i386
lacks the atomic operations we need in glibc.
You can still configure for i386-*, but you get i686 code.
You can't build with --march=i386, --mtune=i386 or a compiler
that defaults to i386 code-generation.
I've added two i386 entries in the master todo list to discuss
merging and renaming:
http://sourceware.org/glibc/wiki/Development_Todo/Master#i386
The failure modes are fail-safe here. You compile for i386,
get i686, and try to run on i386 and it fails. The configure
log has a warning saying we elided to i686. There is no situation
that I can see where we run into any serious problems.
The patch makes the current state better in that we get less
confused users and we build successfully in more default
configurations.
The next enhancement would be to add --march=i?86
as suggested in #c20 of BZ#10062 for any i?86-* builds, which
would solve the problem of a 32-bit compiler that defaults to
i386 code-gen and glibc configured for i686-* target. Which
previously failed at build time, and now will fail at configure
time (requires adding --march=i686).
Updated NEWS with BZ #10060 and #10062.
No regressions.
---
2013-04-06 Carlos O'Donell <carlos@redhat.com>
[BZ #10060, #10062]
* aclocal.m4 (LIBC_COMPILER_BUILTIN_INLINED): New macro.
* sysdeps/i386/configure.in: Use LIBC_COMPILER_BUILTIN_INLINED and
fail configure if __sync_val_compare_and_swap is not inlined.
* sysdeps/i386/configure: Regenerate.
* configure.in: Build for i686 when configured for i386.
* configure: Regenerate.
* README: Remove i386 reference.
Carlos O'Donell [Sat, 6 Apr 2013 15:41:44 +0000 (11:41 -0400)]
Update ChangeLog.
Update ChangeLog for commit:
24116fcdbe55d58aa35fc77444ae71a9dec9fff6
Carlos O'Donell [Sat, 6 Apr 2013 14:53:54 +0000 (10:53 -0400)]
s390/s390x: Undef PSEUDO before redef.
The s390 and s390x sysdep.h files include the more generic sysdep.h.
The more generic sysdep.h defines PSEUDO. This causes an annoying
CPP warning saying the PSEUDO was redefined. This patch removes the
warning by undefining PSEUDO before the redefinition. This is in line
with what all the other machines do.
---
2013-04-06 Carlos O'Donell <carlos@redhat.com>
* sysdeps/s390/s390-32/sysdep.h: Undefine PSEUDO before redefinition.
* sysdeps/s390/s390-64/sysdep.h: Likewise.
Thomas Schwinge [Fri, 5 Apr 2013 18:28:47 +0000 (20:28 +0200)]
More tests for external charater sequences representing NaNs.
Thomas Schwinge [Fri, 5 Apr 2013 13:58:27 +0000 (15:58 +0200)]
Properly collect individual tests' results.
Fixup for commit
003c9895a89e71767ad64bafac1ca99622be2eb7.
Thomas Schwinge [Thu, 4 Apr 2013 15:35:12 +0000 (17:35 +0200)]
[BZ #14686, #15336] Fix standard compliance. Don't use hard-coded qNaN values.
Thomas Schwinge [Wed, 3 Apr 2013 20:00:21 +0000 (22:00 +0200)]
[BZ #15335, #15342] Fix standard compliance. Don't use hard-coded qNaN values.
Thomas Schwinge [Wed, 3 Apr 2013 19:10:02 +0000 (21:10 +0200)]
Remove unreachable code.
The case of y == 0 is handled at the beginning of the function.
Thomas Schwinge [Wed, 3 Apr 2013 20:17:47 +0000 (22:17 +0200)]
Remove unused hard-coded qNaN definition.
Siddhesh Poyarekar [Thu, 4 Apr 2013 14:17:41 +0000 (19:47 +0530)]
Add BZ #15337 to NEWS
Siddhesh Poyarekar [Thu, 4 Apr 2013 14:13:56 +0000 (19:43 +0530)]
Fix static build when configured with --disable-hidden-plt
Fixes BZ #15337.
Static builds fail with the following warning:
/home/tools/glibc/glibc/nptl/../nptl/sysdeps/unix/sysv/linux/x86_64/cancellation.S:80:
undefined reference to `__GI___pthread_unwind'
When the source is configured with --disable-hidden-plt. This is
because the preprocessor conditional in cancellation.S only checks if
the build is for SHARED, whereas hidden_def is defined appropriately
only for a SHARED build that will have symbol versioning *and* hidden
defs are enabled. The last case is false here.
Joseph Myers [Wed, 3 Apr 2013 16:51:46 +0000 (16:51 +0000)]
Fix missing underflow from cexp (bug 14478).
Andreas Schwab [Wed, 3 Apr 2013 15:53:57 +0000 (17:53 +0200)]
Update NEWS
Andreas Schwab [Thu, 21 Mar 2013 14:50:27 +0000 (15:50 +0100)]
Fix stack overflow in getaddrinfo with many results
Thomas Schwinge [Wed, 3 Apr 2013 12:13:44 +0000 (14:13 +0200)]
Refer to two GCC PRs.
Siddhesh Poyarekar [Wed, 3 Apr 2013 08:50:56 +0000 (14:20 +0530)]
Update bench.out and bench.out.old only upon completion
Write output from the currently running benchmark into a temporary
file and move files around only once the current run is complete.
That way we don't lose data from the last two runs due to an
incomplete run.
Siddhesh Poyarekar [Wed, 3 Apr 2013 08:02:37 +0000 (13:32 +0530)]
Echo benchmark that is currently running
This will be useful when the benchmark has many functions.
Siddhesh Poyarekar [Wed, 3 Apr 2013 08:08:39 +0000 (13:38 +0530)]
Add benchmark inputs for atan
Add separate inputs for slow and fast paths of atan
Siddhesh Poyarekar [Wed, 3 Apr 2013 05:44:39 +0000 (11:14 +0530)]
Remove TWO
Minor cleanup to remove the macro TWO and use the value directly
instead.
Siddhesh Poyarekar [Wed, 3 Apr 2013 05:26:45 +0000 (10:56 +0530)]
Preserve errno across _PC_CHOWN_RESTRICTED call on XFS
Fix BZ #15305.
On kernel versions earlier than 2.6.29, the Linux kernel exported a
sysctl called restrict_chown for xfs, which could be used to allow
chown to users other than the owner. 2.6.29 removed this support,
causing the open_not_cancel_2 to fail and thus modify errno. The fix
is to save and restore errno so that the caller sees it as unmodified.
Additionally, since the code to check the sysctl is not useful on
newer kernels, we add an ifdef so that in future the code block gets
rmeoved completely.
Joseph Myers [Tue, 2 Apr 2013 22:54:00 +0000 (22:54 +0000)]
Fix cacosh inaccuracy and spurious exceptions (bug 15327).
Siddhesh Poyarekar [Tue, 2 Apr 2013 12:23:09 +0000 (17:53 +0530)]
Use mantissa_t in mpexp
Siddhesh Poyarekar [Mon, 1 Apr 2013 09:15:54 +0000 (14:45 +0530)]
Add benchmark inputs for sin
Siddhesh Poyarekar [Tue, 2 Apr 2013 05:06:01 +0000 (10:36 +0530)]
Add benchmark tests for slowpow and slowexp
Separate benchmarks for the fast and slow implementations of pow and
exp since measuring both together doesn't make sense. Adjust the
iterations for pow and exp accordingly so that they run long enough
for the measurements to be meaningful.
Adhemerval Zanella [Tue, 2 Apr 2013 12:08:09 +0000 (07:08 -0500)]
Thomas Schwinge [Tue, 2 Apr 2013 11:51:02 +0000 (13:51 +0200)]
New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
It is based on draft TS 18661 and currently enabled as a GNU extension.
Adhemerval Zanella [Fri, 29 Mar 2013 23:15:28 +0000 (18:15 -0500)]
PowerPC: remove branch prediction from rint implementation
The branch prediction hints is actually hurts performance in this case.
The assembly implementation make two assumptions: 1. 'fabs (x) < 2^52'
is unlikely and 2. 'x > 0.0' is unlike (if 1. is true). Since it a
general floating point function, expected input is not bounded and then
it is better to let the hardware handle the branches.
David S. Miller [Sat, 30 Mar 2013 20:58:52 +0000 (16:58 -0400)]
Update German translations.
* po/de.po: Update from translation team.
Joseph Myers [Sat, 30 Mar 2013 13:31:53 +0000 (13:31 +0000)]
Fix casinh inaccuracy for imaginary part < 1.0, real part small (bug 10357).
Siddhesh Poyarekar [Fri, 29 Mar 2013 11:23:05 +0000 (16:53 +0530)]
Remove usage of ONE macro
I missed this instance, which caused a build failure in powerpc.
Siddhesh Poyarekar [Fri, 29 Mar 2013 11:10:36 +0000 (16:40 +0530)]
Remove ONE and MONE
Siddhesh Poyarekar [Fri, 29 Mar 2013 11:08:27 +0000 (16:38 +0530)]
Format s_tan.c
Siddhesh Poyarekar [Fri, 29 Mar 2013 11:07:26 +0000 (16:37 +0530)]
Remove ZERO and MZERO macros
Siddhesh Poyarekar [Fri, 29 Mar 2013 11:04:28 +0000 (16:34 +0530)]
Format s_atan.c
Siddhesh Poyarekar [Fri, 29 Mar 2013 11:01:52 +0000 (16:31 +0530)]
Format e_log.c
Roland McGrath [Thu, 28 Mar 2013 23:52:57 +0000 (16:52 -0700)]
Avoid unconditional __call_tls_dtors calls in static linking.
Roland McGrath [Thu, 28 Mar 2013 23:15:48 +0000 (16:15 -0700)]
Use __ehdr_start, if available, as fallback for AT_PHDR.
Roland McGrath [Thu, 28 Mar 2013 22:39:32 +0000 (15:39 -0700)]
Make _dl_phdr pointer to const.
Roland McGrath [Thu, 28 Mar 2013 22:33:57 +0000 (15:33 -0700)]
Consolidate declarations of _dl_phdr, _dl_phnum.
Joseph Myers [Thu, 28 Mar 2013 21:43:56 +0000 (21:43 +0000)]
Fix typo in bug number in NEWS.
Roland McGrath [Thu, 28 Mar 2013 17:38:37 +0000 (10:38 -0700)]
Never call syslog in __libc_message.
Alan Modra [Thu, 28 Mar 2013 17:16:28 +0000 (12:16 -0500)]
PowerPC: .eh_frame info in crt1.o isn't useful and triggers gold bug 14675.
The .eh_frame info in crt1.o isn't useful and this patch prevents it from
being generated on PowerPC. It triggers the following gold bug:
http://sourceware.org/bugzilla/show_bug.cgi?id=14675
Adhemerval Zanella [Thu, 28 Mar 2013 12:52:48 +0000 (09:52 -0300)]
Fix e_logl (128ibm) spurious underflow
Siddhesh Poyarekar [Thu, 28 Mar 2013 06:15:47 +0000 (11:45 +0530)]
Don't add input group during initgroups_dyn in hesiod
Fixes BZ #15304.
The *initgroups_dyn functions are called with a group argument. This
group gid is usually skipped while populating the grouplist since the
caller adds that group id in advance.
The hesiod initgroups_dyn implementation however adds the group gid to
the list if it does not already exist. While it works fine for the
usual initgroups, it breaks nscd since it calls initgroups_dyn with -1
as the gid (to have all groups included).
Siddhesh Poyarekar [Thu, 28 Mar 2013 05:26:06 +0000 (10:56 +0530)]
Format and clean up s_atan2.c
Joseph Myers [Wed, 27 Mar 2013 14:38:44 +0000 (14:38 +0000)]
Fix casinh inaccuracy near i, imaginary part > 1 (bug 15307).
Mans Rullgard [Tue, 26 Mar 2013 20:53:16 +0000 (20:53 +0000)]
ARM: fix preconfigure.
Siddhesh Poyarekar [Tue, 26 Mar 2013 14:54:04 +0000 (20:24 +0530)]
Use integral constants
The compiler is smart enough to convert those into double for powerpc,
but if we put them as doubles, it adds overhead by performing those
operations in floating point mode.
Siddhesh Poyarekar [Tue, 26 Mar 2013 14:44:18 +0000 (20:14 +0530)]
Removed commented code
Siddhesh Poyarekar [Tue, 26 Mar 2013 13:58:50 +0000 (19:28 +0530)]
Make mantissa type of mp_no configurable
The mantissa of mp_no is intended to take only integral values. This
is a relatively good choice for powerpc due to its 4 fpus, but not for
other architectures, which suffer due to this choice. This change
makes the default mantissa a long integer and allows powerpc to
override it. Additionally, some operations have been optimized for
integer manipulation, resulting in a significant improvement in
performance.
Adhemerval Zanella [Tue, 26 Mar 2013 13:01:57 +0000 (10:01 -0300)]
PowerPC: fix libm ABI issue for llroundl
Mark H Weaver [Sun, 24 Mar 2013 23:52:10 +0000 (19:52 -0400)]
Fix docs for scalbn* and scalbl* functions
* manual/arith.texi (Normalization Functions): Fix prototypes
for scalbn, scalbnf, scalbnl, scalbln, scalblnf, and scalblnl.
David S. Miller [Fri, 22 Mar 2013 20:29:31 +0000 (13:29 -0700)]
Update sparc ULPs.
* sysdeps/sparc/fpu/libm-test-ulps: Update.
Adhemerval Zanella [Fri, 22 Mar 2013 15:39:10 +0000 (12:39 -0300)]
BZ#13889: expl (709.75) wrongly overflows for ldbl-128ibm
The patch increase the high value to check if expl overflows. Current
high mark value is not really correct, the algorithm accepts high values.
It also adds a correct wrapper function to check for overflow and underflow.
Dmitry V. Levin [Thu, 21 Mar 2013 23:02:37 +0000 (23:02 +0000)]
BZ#11120: fix x86_64/strcmp.S NOT_IN_libc safeguards
Due to a typo repeated several times, this bug hasn't been fixed yet,
despite being marked as resolved in glibc 2.12.
* sysdeps/x86_64/strcmp.S: Replace all occurrences of NOT_IN_lib
with NOT_IN_libc.
Adhemerval Zanella [Thu, 21 Mar 2013 17:15:45 +0000 (14:15 -0300)]
PowerPC: fix sqrtl ABI issue
This patch fixes a sqrtl ABI issue when building for powerpc64.
Thomas Schwinge [Thu, 21 Mar 2013 15:07:48 +0000 (16:07 +0100)]
libm-test: Properly wrap blocks consisting of several statements.
Thomas Schwinge [Tue, 19 Mar 2013 09:16:49 +0000 (10:16 +0100)]
On 32-bit x86, disable certain tests involving sNaN values.
Follow-up to commit
495ded2c8c1eb8c0ac4b54add2dd397852e19cba.
Joseph Myers [Thu, 21 Mar 2013 13:57:21 +0000 (13:57 +0000)]
Fix Bessel function spurious overflows for ldbl-128 / ldbl-128ibm (bug 15285).
Siddhesh Poyarekar [Thu, 21 Mar 2013 11:05:48 +0000 (16:35 +0530)]
Allow adding of arbitrary code to benchmark tests
This allows us to define custom functions in C code files and
benchmark scenarios rather than just functions. The main current use
of this is to separate the slow and fast path benchmarks for math
functions.
Joseph Myers [Thu, 21 Mar 2013 10:27:10 +0000 (10:27 +0000)]
Fix casinh inaccuracy for argument with imaginary part 1 (bug 15287).
Siddhesh Poyarekar [Thu, 21 Mar 2013 07:37:44 +0000 (13:07 +0530)]
Replace 8388608.0 with HALFRAD in mp code
Minor cleanup
Joseph Myers [Thu, 21 Mar 2013 00:41:56 +0000 (00:41 +0000)]
Use LIBC_CONFIG_VAR for MIPS default-abi setting.
Joseph Myers [Wed, 20 Mar 2013 23:15:42 +0000 (23:15 +0000)]
Use LIBC_CONFIG_VAR for ARM default-abi setting.
Joseph Myers [Wed, 20 Mar 2013 22:37:06 +0000 (22:37 +0000)]
Move system-specific settings out of toplevel configure.in and config.make.in.
Roland McGrath [Wed, 20 Mar 2013 21:26:58 +0000 (14:26 -0700)]
BZ#14812: Add missing N_ markers in localedef.
Joseph Myers [Wed, 20 Mar 2013 20:21:24 +0000 (20:21 +0000)]
Add bug 14176 to NEWS.
Roland McGrath [Wed, 20 Mar 2013 20:11:51 +0000 (13:11 -0700)]
BZ#14812: Mark fixed in NEWS.
Roland McGrath [Wed, 20 Mar 2013 20:11:10 +0000 (13:11 -0700)]
ChangeLog format fix.
Marcus Shawcroft [Wed, 20 Mar 2013 14:23:09 +0000 (14:23 +0000)]
Correct missed use of $(rtlddir).
Ondrej Bilka [Wed, 20 Mar 2013 07:08:27 +0000 (08:08 +0100)]
Do not warn about mblen, mbtowc and wctomb unused result.
Roland McGrath [Wed, 20 Mar 2013 00:07:15 +0000 (17:07 -0700)]
Consolidate Linux and POSIX libc_fatal code.
Joseph Myers [Tue, 19 Mar 2013 22:38:25 +0000 (22:38 +0000)]
Fix types of constants in k_casinh*.c.
Roland McGrath [Tue, 19 Mar 2013 21:57:54 +0000 (14:57 -0700)]
Adjust ChangeLog to give Benno Schulenberg his own header line.
Andreas Schwab [Tue, 19 Mar 2013 09:14:16 +0000 (10:14 +0100)]
aarch64: Move rtld link to /lib
Andreas Schwab [Tue, 19 Mar 2013 09:13:46 +0000 (10:13 +0100)]
s390x: Move rtld link to /lib
Andreas Schwab [Mon, 18 Mar 2013 11:44:47 +0000 (12:44 +0100)]
Add support for rtld directory different from slib directory
Siddhesh Poyarekar [Tue, 19 Mar 2013 09:30:08 +0000 (15:00 +0530)]
Fix up ChangeLog
I forgot to fix up the ChangeLog after renaming __default_attr to
__default_pthread_attr in code.
Siddhesh Poyarekar [Tue, 19 Mar 2013 09:04:13 +0000 (14:34 +0530)]
Move __default_stacksize into __default_pthread_attr
Make __default_pthread_attr object to store default attribute values
for threads.
Siddhesh Poyarekar [Tue, 19 Mar 2013 08:58:03 +0000 (14:28 +0530)]
Rename nptl.texi to threads.texi
The manual and its file names are about interfaces and not the
implementation details.
Roland McGrath [Mon, 18 Mar 2013 22:00:44 +0000 (15:00 -0700)]
ARM: Make dl-tlsdesc.S use sfi_breg, respect ARM_ALWAYS_BX and ARM_NO_INDEX_REGISTER.
Roland McGrath [Mon, 18 Mar 2013 21:18:53 +0000 (14:18 -0700)]
BZ#14812: Add missing translation marker on some argp option argument names in utilities.
Siddhesh Poyarekar [Mon, 18 Mar 2013 08:14:05 +0000 (13:44 +0530)]
Rename some static variables
Rename some static variables to give them unique names.
Ondrej Bilka [Mon, 18 Mar 2013 06:47:45 +0000 (07:47 +0100)]
Add changelog entry.
Ondrej Bilka [Mon, 18 Mar 2013 06:39:12 +0000 (07:39 +0100)]
Faster strlen on x64.
Carlos O'Donell [Sun, 17 Mar 2013 22:39:28 +0000 (18:39 -0400)]
Move BZ#11261 from 2.18 to 2.16 bug list.
BZ#11261 was fixed in the 2.16 release even if we only found out
that it was fixed in the 2.18 release. Testing shows it is fixed
in the 2.16 release so we add it to that NEWS section.
Carlos O'Donell [Sun, 17 Mar 2013 20:03:02 +0000 (16:03 -0400)]
manual: Sort mallopt M_* parameters alphabetically
Sort the mallopt M_* parameters alphabetically and add comments for the
missing paramters.
Carlos O'Donell [Thu, 14 Mar 2013 19:08:39 +0000 (15:08 -0400)]
BZ#11261 fixed by previous commit.
Fixed by
41b81892f11fe1353123e892158b53de73863d62.
Verified fixed by using test case in BZ#11261.
David S. Miller [Sun, 17 Mar 2013 15:38:10 +0000 (08:38 -0700)]
Update Sparc ULPs.
* sysdeps/sparc/fpu/libm-test-ulps: Update.
Joseph Myers [Sat, 16 Mar 2013 17:51:48 +0000 (17:51 +0000)]
Fix y1l spurious overflows for ldbl-96 (bug 15283).
Joseph Myers [Sat, 16 Mar 2013 17:50:28 +0000 (17:50 +0000)]
Fix spurious underflow exceptions for Bessel functions for ldbl-128 / ldbl-128ibm (bug 14155).
Thomas Schwinge [Fri, 15 Mar 2013 16:41:11 +0000 (17:41 +0100)]
Move "-sNaN" value into a separate variable.
Roland McGrath [Fri, 15 Mar 2013 21:35:17 +0000 (14:35 -0700)]
Clean up _dl_pagesize initialization.
Roland McGrath [Fri, 15 Mar 2013 21:32:04 +0000 (14:32 -0700)]
Move _dl_non_dynamic_init, _dl_aux_init declarations.
Thomas Schwinge [Fri, 8 Mar 2013 08:50:38 +0000 (09:50 +0100)]
* math/libm-test.inc (ldexp_test): Add missing START/END markers.
Thomas Schwinge [Thu, 28 Feb 2013 21:38:23 +0000 (22:38 +0100)]
Promote a math test for sNaN handling to the top-level.
Thomas Schwinge [Thu, 28 Feb 2013 21:30:18 +0000 (22:30 +0100)]
Use GCC's builtins for generating NaNs.
Thomas Schwinge [Fri, 1 Mar 2013 13:19:59 +0000 (14:19 +0100)]
Add one test, removed a duplicated one, add a few comments about missing tests.