Commit graph

21412 commits

Author SHA1 Message Date
Kristof Provost
1398367b3a libpfctl: Fix u_* counters
struct pf_rule had a few counter_u64_t counters. Those couldn't be
usefully comminicated with userspace, so the fields were doubled up in
uint64_t u_* versions.

Now that we use struct pfctl_rule (i.e. a fully userspace version) we
can safely change the structure and remove this wart.

Reviewed by:	glebius
MFC after:	4 weeks
Sponsored by:	Rubicon Communications, LLC ("Netgate")
Differential Revision:	https://reviews.freebsd.org/D29645

(cherry picked from commit ab5707a5cf)
2021-05-07 10:15:42 +02:00
Kristof Provost
6fd48efd8d libpfctl: Switch to pfctl_rule
Stop using the kernel's struct pf_rule, switch to libpfctl's pfctl_rule.
Now that we use nvlists to communicate with the kernel these structures
can be fully decoupled.

Reviewed by:	glebius
MFC after:	4 weeks
Sponsored by:	Rubicon Communications, LLC ("Netgate")
Differential Revision:	https://reviews.freebsd.org/D29644

(cherry picked from commit e9eb09414a)
2021-05-07 10:15:42 +02:00
Kristof Provost
0da554e4b6 pfctl: Move ioctl abstraction functions into libpfctl
Introduce a library to wrap the pf ioctl interface.

MFC after:	4 weeks
Sponsored by:	Rubicon Communications, LLC ("Netgate")
Differential Revision:	https://reviews.freebsd.org/D29562

(cherry picked from commit 0d71f9f36e)
2021-05-07 10:15:42 +02:00
Kristof Provost
259e52433f libnv: Build PIC
Build libnv as position independent code so we can use it from shared
libraries.

MFC after:	4 weeks
Sponsored by:	Rubicon Communications, LLC ("Netgate")
Differential Revision:	https://reviews.freebsd.org/D29561

(cherry picked from commit 0dd13c7743)
2021-05-07 10:15:41 +02:00
Mark Johnston
11af9a9cf9 cap_sysctl.3: Fix bugs in the example
- Correct the type of the sysctl value.
- Initialize the oldsize parameter to cap_sysctlbyname()

Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 44bbda649d)
2021-05-05 11:01:56 -04:00
Piotr Pawel Stefaniak
c69775749f getdirentries.2: remove unnecessary space
(cherry picked from commit 1fdd6934d5)
2021-05-05 13:04:58 +02:00
Piotr Pawel Stefaniak
21b2920724 sh(1): autocomplete commands
(cherry picked from commit b315a7296d)
2021-05-05 13:04:57 +02:00
Konstantin Belousov
46ec1227e7 connectat(2): clarify that the s argument is socket
(cherry picked from commit 07f229d20c)
2021-05-03 04:26:50 +03:00
Mitchell Horne
e0ae2b39aa pmc_allocate(3): document the count argument
This was added in b2ca2e50b9, and serves to provide an initial value
to the PMC, eliminating the need for a second syscall via pmc_set(3).

Reviewed by:	gnn, 0mp (manpages)
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D29885

(cherry picked from commit 50f6c13997)
2021-04-29 10:13:57 -03:00
Renato Botelho
d7682961d3 libfetch: Retry with proxy auth when server returns 407
PR:		220468
Submitted by:	Egil Hasting <egil.hasting@higen.org> (based on)
Reviewed by:	kevans, kp
Approved by:	kp
MFC after:	2 weeks
Sponsored by:	Rubicon Communications, LLC ("Netgate")
Differential Revision:	https://reviews.freebsd.org/D29533

(cherry picked from commit 345c30a94f)
2021-04-28 16:21:26 -03:00
Ed Maste
e3bbb369c4 libkiconv: address memory leak in not-found cases
Found in "Understanding and Detecting Disordered Error Handling with
Precise Function Pairing" by Qiushi Wu et al.

Reviewed by:	imp, jhb
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D29896

(cherry picked from commit 3cfd08c1c7)
2021-04-27 20:10:12 -04:00
Alexander Motin
2f2a081e5c Fix race in case of device destruction.
During device destruction it is possible that open() succeed, but
fdevname() return NULL, that can't be assigned to string variable.
Fix that by adding explicit NULL check.

Also while there switch from fdevname() to fdevname_r().

Sponsored by:	iXsystems, Inc.
MFC after:	2 weeks

(cherry picked from commit e49d3eb403)
2021-04-27 08:47:39 -04:00
Konstantin Belousov
f1d1021fde O_PATH: allow vnode kevent filter on such files
(cherry picked from commit bbf7a4e878)
2021-04-23 14:14:10 +03:00
Konstantin Belousov
7a24523086 Make files opened with O_PATH to not block non-forced unmount
(cherry picked from commit a5970a529c)
2021-04-23 14:14:10 +03:00
Konstantin Belousov
b0c1b3827e open(2): Implement O_PATH
(cherry picked from commit 8d9ed174f3)
2021-04-23 14:14:10 +03:00
Konstantin Belousov
73a642c479 Add AT_EMPTY_PATH for several *at(2) syscalls
(cherry picked from commit 509124b626)
2021-04-23 14:14:10 +03:00
Konstantin Belousov
8bffc9b492 link(2): correct descriptor name in AT_RESOLVE_BENEATH description
(cherry picked from commit c78e124535)
2021-04-23 14:14:09 +03:00
Konstantin Belousov
7bbfb5d959 rtld: make dlerror() thread-local
(cherry picked from commit 4d9128da54)
2021-04-23 14:14:08 +03:00
Konstantin Belousov
b75aa0eaf3 rtld: workaround for broken ABI
(cherry picked from commit 08bfbd4359)
2021-04-23 14:14:08 +03:00
Konstantin Belousov
17ef58221c libc dl_iterate_phdr(): dlpi_tls_data is wrong
(cherry picked from commit dbd2053026)
2021-04-23 14:14:07 +03:00
Konstantin Belousov
4959d4f3ea libc: implement __tls_get_addr() for static binaries
(cherry picked from commit ca46b5698e)
2021-04-23 14:14:07 +03:00
Konstantin Belousov
41331ef7f6 libc: add _get_tp() private function
(cherry picked from commit 06d8a116bd)
2021-04-23 14:14:07 +03:00
Konstantin Belousov
166b390bc5 libc: include rtld.h into static implementations of rtld interface
(cherry picked from commit 7f7489eba3)
2021-04-23 14:14:07 +03:00
Konstantin Belousov
083df155ef libc: constify dummy error message string for dlfcn
(cherry picked from commit 93c14c55ec)
2021-04-23 14:14:07 +03:00
Konstantin Belousov
c3f97dd75a rtld dl_iterate_phdr(): dlpi_tls_data is wrong
(cherry picked from commit d36d681615)
2021-04-23 14:14:06 +03:00
Andrew Walker
8845eea6e2 Fix leak in libc NFSv4 ACL flags parsing
Free memory allocated by strdup() in parse_flags_verbose().

Submitted by:	Andrew Walker <walker.aj325_gmail.com>
Reported by:	valgrind
Reviewed by:	allanjude, freqlabs, rpokala
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D29871

(cherry picked from commit dd559118ab)
2021-04-23 06:41:23 -04:00
Alex Richardson
b8beded343 Allow lib/msun/logarithm_test to pass on ld128 platforms
For some reason the ld128 log1pl() implementation is less accurate than
logl(), but does at least guarantee precision >= the ld80 implementation.
Mark log1p_accuracy_tests as XFAIL for ld128 and increase the log1p tolerance
to the ld80 equivalent in accuracy_tests to avoid losing test coverage for
the other functions.

PR:		253984
Reviewed By:	ngie, dim
Differential Revision: https://reviews.freebsd.org/D29039

(cherry picked from commit 1ad83445fc)
2021-04-22 10:44:55 +01:00
Alex Richardson
d08c4d80ab Remove XFAIL from tests/lib/msun/lround_test:main
This test no longer fails after 3b00222f15.

PR:		205451
MFC after:	1 week

(cherry picked from commit 062293c2c4)
2021-04-22 10:44:55 +01:00
Alex Richardson
959cda8efc Remove amd64 XFAIL from tests/lib/msun/fma_test:infinities
This test no longer fails after 3b00222f15.

PR:		205448
MFC after:	1 week

(cherry picked from commit 3f01d8c2fe)
2021-04-22 10:44:54 +01:00
Alex Richardson
a6898ea04e lib/msun: Exclude ignored-pragmas from -Werror
This avoids build failures due to the clang 12 warning:
    '#pragma FENV_ACCESS' is not supported on this target - ignored

Clang 12 currently emits this warning for all non-x86 architectures.
While this can result in incorrect code generation (e.g. on AArch64 some
exceptions are not raised as expected), this is a pre-existing issue and
we should not fail the build due to this warning.

Reviewed By:	dim, emaste
MFC after:	1 week
Differential Revision: https://reviews.freebsd.org/D29743

(cherry picked from commit 168234fa67)
2021-04-22 10:44:53 +01:00
Alex Richardson
a18882ec97 lib/msun/tests: Drop WARNS=6
This is the default already, so there is no need to override it.

Reported by:	kevans

(cherry picked from commit f33b4fa2f0)
2021-04-22 10:44:53 +01:00
Alex Richardson
d72052dd5e lib/msun/tests: Re-enable csqrt_test on AArch64
The LLVM bug was fixed a long time ago and with D29076 this test actually
passes now.

Reviewed By:	andrew
Differential Revision: https://reviews.freebsd.org/D29092

(cherry picked from commit dbb2d6f5e1)
2021-04-22 10:44:52 +01:00
Alex Richardson
47950e427c Fix lib/msun/tests/csqrt_test on platforms with 128-bit long double
If long double has more than 64 mantissa bits, using uint64_t to hold the
mantissa bits will truncate the value and result in test failures. To fix
this problem use __uint128_t since all platforms that have
__LDBL_MANT_DIG__ > 64 also have compiler support for 128-bit integers.

Reviewed By:	rlibby
Differential Revision: https://reviews.freebsd.org/D29076

(cherry picked from commit ce88eb476b)
2021-04-22 10:44:52 +01:00
Alex Richardson
549e8b821f Fix unused functions in invtrig_test.c
I only tested the WARNS=6 change on AArch64 and AMD64, but this file has
unused functions for architectures with LDBL_PREC == 53.

While touching this file change the LDBL_PREC == 53 checks to i386 checks.
The long double tests should only be disabled for i386 (due to the rather
odd rounding mode that it uses) not all architectures where long double
is the same as double.

PR:		205449
Fixes:		87d65c747a ("lib/msun: Allow building tests with WARNS=6")
Reported by:	Jenkins

(cherry picked from commit 7f5693d053)
2021-04-22 10:44:51 +01:00
Alex Richardson
f323095645 Don't add -Winline for WARNS=6
This warning is very rarely useful (inline is a hint and not mandatory).
This flag results in many warnings being printed when compiling C++
code that uses the standard library with GCC.

This flag was originally added in back in r94332 but the flag is a no-op
in Clang ("This diagnostic flag exists for GCC compatibility, and has no
effect in Clang"). Removing it should make the GCC build output slightly
more readable.

Reviewed By:	jrtc27, imp
Differential Revision: https://reviews.freebsd.org/D29235

(cherry picked from commit c8c62548bf)
2021-04-22 10:44:51 +01:00
Alex Richardson
78fa908b1e lib/msun/tests: Add more debug output to fenv_test.c
Output a hex dump of the current fenv and the expected value to allow
comparing them without having to resort to interactive use of GDB.

(cherry picked from commit 6ccdee8ab5)
2021-04-22 10:44:51 +01:00
Alex Richardson
1f7e87f2d3 lib/msun/tests: Skip fenv_test:masking if exceptions can't be trapped
Some CPUs (e.g. AArch64 QEMU) cannot trap on floating point exceptions and
therefore ignore the writes to the floating point control register inside
feenableexcept(). If no exceptions are enabled after
feenableexcept(FE_ALL_EXCEPT), we can assume that the CPU does not
support exceptions and we can then skip the test.

Reviewed By:	dim
Differential Revision: https://reviews.freebsd.org/D29095

(cherry picked from commit 2b9dbcd390)
2021-04-22 10:44:50 +01:00
Alex Richardson
b38293b480 lib/msun: Allow building tests with WARNS=6
The only change needed is to mark a few variables as static.

(cherry picked from commit 87d65c747a)
2021-04-22 10:43:24 +01:00
Alex Richardson
bc04f427f5 Improve test messages for msun tests
Also print the mismatched values when numbers compare not equal.

Reviewed By:	dim
Differential Revision: https://reviews.freebsd.org/D29091

(cherry picked from commit b424e0038a)
2021-04-22 10:43:19 +01:00
Alex Richardson
5ba5ebf92b Remove XFAILs from fmaxmin test
These appears to have been resolved by compiling the test with -fno-builtin
and/or using a newer compiler.

PR:		208703
Reviewed By:	ngie
Differential Revision: https://reviews.freebsd.org/D28884

(cherry picked from commit b358534ab1)
2021-04-22 10:43:13 +01:00
Alex Richardson
b69904b891 Convert the msun tests to ATF
This provides better error messages that just an assertion failure and
also makes it easier to mark individual tests as XFAIL.
It was also helpful when coming up with D28786 and D28787.

Differential Revision: https://reviews.freebsd.org/D28798

(cherry picked from commit 133bc64507)
2021-04-22 10:43:06 +01:00
Alex Richardson
6dd6c03efb lib/msun: Fix x86 GCC6 build after 221622ec0c
Apparently GCC only supports arithmetic expressions that use static
const variables in initializers starting with GCC8. To keep older
versions happy use a macro instead.

Fixes:		221622ec0c ("lib/msun: Avoid FE_INEXACT for x86 log2l/log10l")
Reported by:	Jenkins
Reviewed By:	imp
Differential Revision: https://reviews.freebsd.org/D29233

(cherry picked from commit 05eac56a04)
2021-04-22 10:42:54 +01:00
Alex Richardson
fe173c91b0 lib/msun: Avoid FE_INEXACT for x86 log2l/log10l
This fixes tests/lib/msun/logarithm_test after compiling the test with
-fno-builtin (D28577). Adding invln10_lo + invln10_10 results in
FE_INEXACT (for all inputs) and the same for the log2l invln2_lo + invln2_hi.
This patch avoids FE_INEXACT (for exact results such as 0) by defining a
constant and using that.

Reviewed By:	dim
Differential Revision: https://reviews.freebsd.org/D28786

(cherry picked from commit 221622ec0c)
2021-04-22 10:42:48 +01:00
Alex Richardson
770517d41a s_scalbn.c: Add missing float.h include
This caused LDBL_MANT_DIG to not be defined and therefore the scalbnl
alias was not being emitted for double==long double platforms.

Fixes:		760b2ffc ("Update scalbn* functions to the musl versions")
Reported by:	Jenkins

(cherry picked from commit f5542795b9)
2021-04-22 10:42:28 +01:00
Alex Richardson
85e5714ec7 Also use the musl scalbn code for ldexp()
Instead of copying the code as 00646ca204
did, include the implementation with the function name re-defined.

(cherry picked from commit aac21e66f9)
2021-04-22 10:42:19 +01:00
Alex Richardson
dd7dbb8021 Update scalbn* functions to the musl versions
The only diff compared to musl is a minor change to scalbnl() to replace
musl's union ldshape with union IEEEl2bits.
This fixes the scalbn tests on non-x86 (since x86 has an assembly version
that is used instead).

Musl commit messages:
commit 8c44a060243f04283ca68dad199aab90336141db
Author: Szabolcs Nagy <nsz@port70.net>
Date:   Mon Apr 3 02:38:13 2017 +0200

    fix scalbn when result is in the subnormal range

    in nearest rounding mode scalbn could introduce double rounding error
    when an intermediate value and the final result were both in the
    subnormal range e.g.

      scalbn(0x1.7ffffffffffffp-1, -1073)

    returned 0x1p-1073 instead of 0x1p-1074, because the intermediate
    computation got rounded to 0x1.8p-1023.

    with the fix an intermediate value can only be in the subnormal range
    if the final result is 0 which is correct even after double rounding.
    (there still can be two roundings so signals may be raised twice, but
    that's only observable with trapping exceptions which is not supported.)

commit 2eaed464e2080d8321d3903b71086a1ecfc4ee4a
Author: Szabolcs Nagy <nsz@port70.net>
Date:   Wed Sep 4 15:52:54 2013 +0000

    math: use float_t and double_t in scalbnf and scalbn

    remove STRICT_ASSIGN (c99 semantics is assumed) and use the conventional
    union to prepare the scaling factor (so libm.h is no longer needed)

commit 1b77b9072f374bd26eb0574b83a0d5f18d75ec60
Author: Szabolcs Nagy <nsz@port70.net>
Date:   Thu Aug 15 10:07:46 2013 +0000

    math: minor scalbn*.c simplification

commit c4359e01303da2755fe7e8033826b132eb3659b1
Author: Szabolcs Nagy <nsz@port70.net>
Date:   Tue Nov 13 10:55:35 2012 +0100

    math: excess precision fix modf, modff, scalbn, scalbnf

    old code was correct only if the result was stored (without the
    excess precision) or musl was compiled with -ffloat-store.
    now we use STRICT_ASSIGN to work around the issue.
    (see note 160 in c11 section 6.8.6.4)

commit 666271c105e4137bdfa195e217799d74143370d4
Author: Szabolcs Nagy <nsz@port70.net>
Date:   Tue Nov 13 10:30:40 2012 +0100

    math: fix scalbn and scalbnf on overflow/underflow

    old code was correct only if the result was stored (without the
    excess precision) or musl was compiled with -ffloat-store.
    (see note 160 in n1570.pdf section 6.8.6.4)

commit 8051e08e10d2b739fcfcbc6bc7466e8d77fa49f1
Author: nsz <nsz@port70.net>
Date:   Mon Mar 19 10:54:07 2012 +0100

    simplify scalbn*.c implementations

    The old scalbn.c was wrong and slow, the new one is just slow.
    (scalbn(0x1p+1023,-2097) should give 0x1p-1074, but the old code gave 0)

Reviewed By:	dim
Differential Revision: https://reviews.freebsd.org/D28872

(cherry picked from commit 760b2ffc55)
2021-04-22 10:42:12 +01:00
Alex Richardson
04b1a333b7 lib/msun/ctrig_test: Print the mismatched values on failure
This test fails on aarch64 but debugging it is difficult without the
results being printed.

Now the failing AArch64 test prints:
root@freebsd-aarch64:/nfsroot/usr/tests/lib/msun # kyua debug ctrig_test:test_nan_inputs
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:211: (ctan)(_d) (0 + -1 I) != expected (-0 + -1 I)
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:211: ctan fetestexcept((0x00000002 | 0x00000010 | 0x00000001 | 0x00000004 | 0x00000008)) (0x10) != 0
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:211: (ctan)(_d) (0 + 1 I) != expected (-0 + 1 I)
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:211: ctan fetestexcept((0x00000002 | 0x00000010 | 0x00000001 | 0x00000004 | 0x00000008)) (0x10) != 0
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:211: (ctanf)(_d) (0 + -1 I) != expected (-0 + -1 I)
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:211: ctanf fetestexcept((0x00000002 | 0x00000010 | 0x00000001 | 0x00000004 | 0x00000008)) (0x10) != 0
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:211: (ctanf)(_d) (0 + 1 I) != expected (-0 + 1 I)
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:211: ctanf fetestexcept((0x00000002 | 0x00000010 | 0x00000001 | 0x00000004 | 0x00000008)) (0x10) != 0
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:217: (ctanh)(_d) (1 + 0 I) != expected (1 + -0 I)
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:217: ctanh fetestexcept((0x00000002 | 0x00000010 | 0x00000001 | 0x00000004 | 0x00000008)) (0x10) != 0
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:217: (ctanhf)(_d) (1 + 0 I) != expected (1 + -0 I)
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:217: ctanhf fetestexcept((0x00000002 | 0x00000010 | 0x00000001 | 0x00000004 | 0x00000008)) (0x10) != 0
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:217: (ctanh)(_d) (-1 + 0 I) != expected (-1 + -0 I)
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:217: ctanh fetestexcept((0x00000002 | 0x00000010 | 0x00000001 | 0x00000004 | 0x00000008)) (0x10) != 0
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:217: (ctanhf)(_d) (-1 + 0 I) != expected (-1 + -0 I)
*** Check failed: /local/scratch/alr48/cheri/freebsd/lib/msun/tests/ctrig_test.c:217: ctanhf fetestexcept((0x00000002 | 0x00000010 | 0x00000001 | 0x00000004 | 0x00000008)) (0x10) != 0
ctrig_test:test_nan_inputs  ->  failed: 16 checks failed; see output for more details

Reviewed By:	ngie
Differential Revision: https://reviews.freebsd.org/D28788

(cherry picked from commit f3f7b0dc06)
2021-04-22 10:42:06 +01:00
Alex Richardson
f6742fbfb5 Update libm tests from NetBSD
I did this without a full vendor update since that would cause too many
conflicts. Since these files now almost match the NetBSD sources the
next git subtree merge should work just fine.

Reviewed By:	lwhsu
Differential Revision: https://reviews.freebsd.org/D28797

(cherry picked from commit 1ec3feb648)
2021-04-22 10:41:45 +01:00
Alex Richardson
76713be0f5 Avoid double output in fenv_test
This tests fork()s, so if there is still data in the stdout buffer on fork
it will print it again in the child process. This was happening in the
CheriBSD CI and caused the test to complain about malformed TAP output.

Reviewed By:	ngie
Differential Revision: https://reviews.freebsd.org/D28397

(cherry picked from commit 892a05ee3a)
2021-04-22 10:40:42 +01:00
Michael Reifenberger
70a2e9a3d4 Improve size readability.
Preserve more space for swap devise names.
Prevent line overflow with long devise name.
Don't draw a bar when swap is not used at all.
Simplify and optimize code.
Change the label to end at end of 100%.
PR:		251655
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D27496

(cherry picked from commit 8d06c3e7a4)
2021-04-21 21:11:36 +02:00