]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
8 weeks agoecho(1): Add EXAMPLES
Fernando ApesteguĂ­a [Thu, 7 Sep 2023 13:27:49 +0000 (15:27 +0200)]
echo(1): Add EXAMPLES

While here add CAVEAT section and promote the use of printf(1)

Reviewed by: gbe@, imp@
Approved by: manpages (gbe)
Differential Revision: https://reviews.freebsd.org/D43493

8 weeks agonetinet: add a probe point for IP, IP6, ICMP, ICMP6, UDP and TCP stats counters
Kristof Provost [Thu, 18 Jan 2024 19:44:47 +0000 (20:44 +0100)]
netinet: add a probe point for IP, IP6, ICMP, ICMP6, UDP and TCP stats counters

When debugging network issues one common clue is an unexpectedly
incrementing error counter. This is helpful, in that it gives us an
idea of what might be going wrong, but often these counters may be
incremented in different functions.

Add a static probe point for them so that we can use dtrace to get
futher information (e.g. a stack trace).

For example:
dtrace -n 'mib:ip:count: { printf("%d", arg0); stack(); }'

This can be disabled by setting the following kernel option:
options  KDTRACE_NO_MIB_SDT

Reviewed by: gallatin, tuexen (previous version), gnn (previous version)
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D43504

8 weeks agocapsicum.h: Include ktrace.h only in kernel
Jake Freeland [Mon, 8 Apr 2024 13:27:17 +0000 (08:27 -0500)]
capsicum.h: Include ktrace.h only in kernel

Fix cross build failure by including ktrace.h only when _KERNEL is
defined.

Fixes: 9bec84131215
Approved by: markj (mentor)
MFC after: 1 month
Sponsored by: The FreeBSD Foundation

8 weeks agolibvmmapi: add missing capability strings
Rob Norris [Mon, 8 Apr 2024 13:08:20 +0000 (13:08 +0000)]
libvmmapi: add missing capability strings

Signed-off-by: Rob Norris <robn@despairlabs.com>
Reviewed by: markj
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D44642

8 weeks agobhyvectl: generate usage from options table
Rob Norris [Mon, 8 Apr 2024 13:07:32 +0000 (13:07 +0000)]
bhyvectl: generate usage from options table

The usage text had fallen out of sync with the actually available
options. Rather than keep them in sync by hand, just generate usage from
the available options.

Signed-off-by: Rob Norris <robn@despairlabs.com>
Reviewed by: markj
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D44641

8 weeks agoswap_pager: Unbusy readahead pages after an I/O error
Mark Johnston [Mon, 8 Apr 2024 13:02:48 +0000 (09:02 -0400)]
swap_pager: Unbusy readahead pages after an I/O error

The swap pager itself allocates readahead pages, so should take care to
unbusy them after a read error, just as it does in the non-error case.

PR: 277538
Reviewed by: olce, dougm, alc, kib
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D44646

8 weeks agoLinuxKPI: Stub sysfs_remove_link in linux/sysfs.h
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:43 +0000 (09:47 +0300)]
LinuxKPI: Stub sysfs_remove_link in linux/sysfs.h

sysfs_create_link is stubbed already. Stub sysfs_remove_link too to be
feature-complete.

Sponsored by: Serenity Cyber Security, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add want_init_on_free to linux/mm.h
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:43 +0000 (09:47 +0300)]
LinuxKPI: Add want_init_on_free to linux/mm.h

want_init_on_free returns if heap memory zeroing on free is enabled.
FreeBSD does not zeroes heap memory on free().

Sponsored by: Serenity Cyber Security
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add ACPI_ID_LEN const to linux/mod_devicetable.h
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:43 +0000 (09:47 +0300)]
LinuxKPI: Add ACPI_ID_LEN const to linux/mod_devicetable.h

Sponsored by: Serenity Cyber Security, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add pci_dev_id to linux/pci.h
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:43 +0000 (09:47 +0300)]
LinuxKPI: Add pci_dev_id to linux/pci.h

It returns bus/device/function number for given PCI device.
Also add intermediate PCI_DEVID macro used in some drivers.

Sponsored by: Serenity Cyber Security, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add the accelerator PCIe class
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:43 +0000 (09:47 +0300)]
LinuxKPI: Add the accelerator PCIe class

Sponsored by: Serenity Cyber Security, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add PTR_IF macro
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Add PTR_IF macro

Sponsored by: Serenity Cyber Security, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add vm_flags_(clear|set) functions
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Add vm_flags_(clear|set) functions

Sponsored by: Serenity Cyber Security, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Improve timer_shutdown_sync
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Improve timer_shutdown_sync

timer_shutdown_sync not only shutdowns a timer but prevents it rearming.

Sponsored by: Serenity CyberSecurity, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add get_random_u32_below function
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Add get_random_u32_below function

get_random_u32_below returns a random integer in the interval [0, ceil),
with uniform distribution.

Sponsored by: Serenity CyberSecurity, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add VM_ACCESS_FLAGS define to linux/mm.h
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Add VM_ACCESS_FLAGS define to linux/mm.h

VM_ACCESS_FLAGS is a basic access permission flags.

Sponsored by: Serenity CyberSecurity, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Import vanilla linux/overflow.h
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Import vanilla linux/overflow.h

It is dual-licensed (GPLv2 & MIT) and self-contained header file.
No need to reimplement it.

Sponsored by: Serenity CyberSecurity, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Move [SU](8|16|32|64)_(MAX|MIN) defines to linux/limits.h
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Move [SU](8|16|32|64)_(MAX|MIN) defines to linux/limits.h

Some source files get them from linux/limits.h directly rather than from
linux/kernel.h.
While here replace Linux constant values with sys/stdint.h provided ones.

Sponsored by: Serenity Cyber Security, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Add strnchr function
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Add strnchr function

strnchr() finds a character in a length limited string.

Sponsored by: Serenity CyberSecurity, LLC
Reviewed by: emaste
MFC after: 1 month

8 weeks agoLinuxKPI: Add ms_to_ktime
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:42 +0000 (09:47 +0300)]
LinuxKPI: Add ms_to_ktime

Sponsored by: Serenity CyberSecurity, LLC
Reviewed by: emaste
MFC after: 1 week

8 weeks agoLinuxKPI: Set suspend type on syspend/resume cycle enter
Vladimir Kondratyev [Mon, 8 Apr 2024 06:47:41 +0000 (09:47 +0300)]
LinuxKPI: Set suspend type on syspend/resume cycle enter

Recent amdgpu depends on pm_suspend_target_state value to separate
S3 and S0ix support.

Sponsored by: Serenity Cyber Security, LLC
Reviewed by: manu (in bugzilla)
MFC after: 1 week

8 weeks agoRELNOTES: Add entry for updates to ktrace(2)
Jake Freeland [Sat, 6 Apr 2024 18:39:42 +0000 (13:39 -0500)]
RELNOTES: Add entry for updates to ktrace(2)

Approved by: markj (mentor)

8 weeks agotests: Add ktrace capability violation test cases
Jake Freeland [Sat, 6 Apr 2024 18:31:30 +0000 (13:31 -0500)]
tests: Add ktrace capability violation test cases

Introduce regression tests for ktrace(2) that target capability
violations.

These test cases ensure that ktrace(2) records these violations:
- CAPFAIL_NOTCAPABLE
- CAPFAIL_INCREASE
- CAPFAIL_SYSCALL
- CAPFAIL_SIGNAL
- CAPFAIL_PROTO
- CAPFAIL_SOCKADDR
- CAPFAIL_NAMEI
- CAPFAIL_CPUSET

A portion of these test cases create processes that do NOT enter
capability mode, but raise violations. This is intended behavior.
Users may run `ktrace -t p` on non-Capsicumized programs to detect
violations that would occur if the process were in capability mode.

Reviewed by: markj
Approved by: markj (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D40682

8 weeks agoktrace: Record socket violations with KTR_CAPFAIL
Jake Freeland [Sat, 6 Apr 2024 18:31:28 +0000 (13:31 -0500)]
ktrace: Record socket violations with KTR_CAPFAIL

Report restricted access to socket addresses and protocols while
Capsicum violation tracing with CAPFAIL_ADDR and CAPFAIL_PROTO.

Reviewed by: markj
Approved by: markj (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D40681

8 weeks agoktrace: Record namei violations with KTR_CAPFAIL
Jake Freeland [Sat, 6 Apr 2024 18:31:25 +0000 (13:31 -0500)]
ktrace: Record namei violations with KTR_CAPFAIL

Report namei path lookups while Capsicum violation tracing with
CAPFAIL_NAMEI. vfs caching is also ignored when tracing to mimic
capability mode behavior.

Reviewed by: markj
Approved by: markj (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D40680

8 weeks agoktrace: Record signal violations with KTR_CAPFAIL
Jake Freeland [Sat, 6 Apr 2024 18:31:21 +0000 (13:31 -0500)]
ktrace: Record signal violations with KTR_CAPFAIL

Report the delivery of signals to processes other than self while
Capsicum violation tracing with CAPFAIL_SIGNAL.

Reviewed by: markj
Approved by: markj (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D40679

8 weeks agoktrace: Record syscall violations with KTR_CAPFAIL
Jake Freeland [Sat, 6 Apr 2024 18:31:18 +0000 (13:31 -0500)]
ktrace: Record syscall violations with KTR_CAPFAIL

Report syscalls that are not allowed in capability mode with
CAPFAIL_SYSCALL.

Reviewed by: markj
Approved by: markj (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D40678

8 weeks agoktrace: Record cpuset violations with KTR_CAPFAIL
Jake Freeland [Sat, 6 Apr 2024 18:31:14 +0000 (13:31 -0500)]
ktrace: Record cpuset violations with KTR_CAPFAIL

Report Capsicum violations in the cpuset namespace with CAPFAIL_CPUSET.

Reviewed by: markj
Approved by: markj (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D40677

8 weeks agoktrace: Record detailed ECAPMODE violations
Jake Freeland [Sat, 6 Apr 2024 18:29:45 +0000 (13:29 -0500)]
ktrace: Record detailed ECAPMODE violations

When a Capsicum violation occurs in the kernel, ktrace will now record
detailed information pertaining to the violation.

For example:
- When a namei lookup violation occurs, ktrace will record the path.
- When a signal violation occurs, ktrace will record the signal number.
- When a sendto(2) violation occurs, ktrace will record the recipient
  sockaddr.

For all violations, the syscall and ABI is recorded.

kdump is also modified to display this new information to the user.

Reviewed by: oshogbo, markj
Approved by: markj (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D40676

8 weeks agoexports.5: Add RFC number for NFS over TLS
Rick Macklem [Sun, 7 Apr 2024 23:35:55 +0000 (16:35 -0700)]
exports.5: Add RFC number for NFS over TLS

This is a content change.

MFC after: 1 week

8 weeks agoCirrus-CI: switch to llvm18 by default
Ed Maste [Sat, 6 Apr 2024 21:53:17 +0000 (17:53 -0400)]
Cirrus-CI: switch to llvm18 by default

As of commit 439352ac8257 Clang/LLVM 18 is the default in-tree compiler.
Follow suit in with the external toolchain package used by Cirrus-CI.

Sponsored by: The FreeBSD Foundation

8 weeks agotcp: add some debug output
Michael Tuexen [Sun, 7 Apr 2024 20:41:24 +0000 (22:41 +0200)]
tcp: add some debug output

Also log, when dropping text or FIN after having received a FIN.
This is the intended behavior described in RFC 9293.
A follow-up patch will enforce this behavior for the base stack
and the RACK stack.
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44669

8 weeks agolibcompiler_rt Makefile.inc: include bsd.compiler.mk to fix build
Dimitry Andric [Sun, 7 Apr 2024 19:45:51 +0000 (21:45 +0200)]
libcompiler_rt Makefile.inc: include bsd.compiler.mk to fix build

Apparently libgcc_s has always included libcompiler_rt's Makefile.inc
without first including bsd.compiler.mk, even though Makefile.inc used
COMPILER_TYPE already. It looks like we were just lucky that the
expression was not malformed.

PR: 276104
Reported by: Herbert J. Skuhra <herbert@gojira.at>
MFC after: 1 month

8 weeks agolibcompiler_rt Makefile.inc: don't build bfloat16 support for gcc < 13
Dimitry Andric [Sun, 7 Apr 2024 18:21:01 +0000 (20:21 +0200)]
libcompiler_rt Makefile.inc: don't build bfloat16 support for gcc < 13

Older versions of gcc produce "error: unknown type name '__bf16'".

PR: 276104
MFC after: 1 month

8 weeks agolibcompiler_rt Makefile.inc: remove debugging messages
Dimitry Andric [Sun, 7 Apr 2024 18:16:50 +0000 (20:16 +0200)]
libcompiler_rt Makefile.inc: remove debugging messages

PR: 276104
MFC after: 1 month

8 weeks agoFix GENERIC-KASAN kernel build for amd64
Dimitry Andric [Sun, 7 Apr 2024 17:56:03 +0000 (19:56 +0200)]
Fix GENERIC-KASAN kernel build for amd64

Work around https://github.com/llvm/llvm-project/issues/87923, which
leads to an assertion failure compiling several kernel source files with
asan enabled.

PR: 276104
MFC after: 1 month

8 weeks agovm_reserv: Add vm_reserv_is_populated
Doug Moore [Sun, 7 Apr 2024 17:19:41 +0000 (12:19 -0500)]
vm_reserv: Add vm_reserv_is_populated

Add a function to check whether an aligned block of vm pages are
allocated, for use with impending changes to arm64 superpage
managment.

Reviewed by: alc
Differential Revision: http://reviews.freebsd.org/D44575

2 months agoFix arm64 build after llvm 18.1.3 upgrade (take 2)
Dimitry Andric [Sun, 7 Apr 2024 09:23:06 +0000 (11:23 +0200)]
Fix arm64 build after llvm 18.1.3 upgrade (take 2)

Instead of compiling the whole sys/arm64/arm64/vfp.c file without
-mgeneral-regs-only, which might have unwanted side effects, add
".arch_extension fp" / ".arch_extension nofp" pairs to the inline
assembly.

PR: 276104
Suggested by: andrew
MFC after: 1 month

2 months agoFix arm64 build after llvm 18.1.3 upgrade
Dimitry Andric [Sun, 7 Apr 2024 00:07:38 +0000 (02:07 +0200)]
Fix arm64 build after llvm 18.1.3 upgrade

Apparently clang 18 has become more strict about using floating point
registers in inline assembly when -mgeneral-regs-only is used. This
causes sys/arm64/arm64/vfp.c to fail to compile, with "error:
instruction requires: fp-armv8", and "error: expected readable system
register".

To fix it, similar to other files compiled for arm64, disable
-mgeneral-regs-only for this particular file.

PR: 276104
MFC after: 1 month

2 months agoBump __FreeBSD_version for llvm 18.1.3 merge
Dimitry Andric [Sat, 6 Apr 2024 20:15:21 +0000 (22:15 +0200)]
Bump __FreeBSD_version for llvm 18.1.3 merge

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project release/18.x llvmorg-18.1.3-0-gc13b7485b879
Dimitry Andric [Fri, 5 Apr 2024 22:02:56 +0000 (00:02 +0200)]
Merge llvm-project release/18.x llvmorg-18.1.3-0-gc13b7485b879

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project release/18.x llvmorg-18.1.3-0-gc13b7485b879.

PR: 276104
MFC after: 1 month

2 months agoMerge commit f5f3d5d6534f from llvm-project (by Qizhi Hu):
Dimitry Andric [Thu, 21 Mar 2024 20:50:26 +0000 (21:50 +0100)]
Merge commit f5f3d5d6534f from llvm-project (by Qizhi Hu):

  [Clang][Sema] Fix a crash in lambda instantiation (#85565)

  Fix https://github.com/llvm/llvm-project/issues/85343
  When build lambda expression in lambda instantiation, `ThisType` is
  required in `Sema::CheckCXXThisCapture` to build `this` capture. Set
  `this` type by import `Sema::CXXThisScopeRAII` and it will be used later
  in lambda expression transformation.

Co-authored-by: huqizhi <836744285@qq.com>
This fixes 'Assertion failed: (!isNull() && "Cannot retrieve a NULL type
pointer"), function getCommonPtr" when building the x11-wm/wayfire port.

PR: 276104
MFC after: 1 month

2 months agoRevert commit 6255157d24e2 from llvm-project (by Dimitry Andric):
Dimitry Andric [Tue, 19 Mar 2024 13:07:27 +0000 (14:07 +0100)]
Revert commit 6255157d24e2 from llvm-project (by Dimitry Andric):

  [libc++] Re-enable std::pair trivial copy constructor for FreeBSD >= 14

  After many years of using the really old std::pair ABI which did not yet
  have a trivial copy constructor, FreeBSD 14 and later will finally get
  rid of it. Only use the old ABI for FreeBSD 13 and earlier.

  Note: on the FreeBSD side, we will bump our libc++.so version for this,
  and keep an old compatibility library in a separate package.

  Differential Revision: https://reviews.llvm.org/D126462

This ABI change can cause crashes when binaries compiled against older
libc++ versions are run against binaries compiled against this libc++
version.

For example, lang/ldc uses a precompiled bootstrap ldc2 binary that was
compiled against the old libc++, but also links against libLLVM-15.so.
If libLLVM-15.so is compiled against the new libc++ version, the ABI
mismatch results in segfaults or even stack overflows.

Note: we can only re-enable the std::pair trivial copy constructors
again when the official libc++ ABI version is bumped to 2.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project release/18.x llvmorg-18.1.1-0-gdba2a75e9c7e
Dimitry Andric [Sun, 10 Mar 2024 12:37:50 +0000 (13:37 +0100)]
Merge llvm-project release/18.x llvmorg-18.1.1-0-gdba2a75e9c7e

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project release/18.x llvmorg-18.1.1-0-gdba2a75e9c7e.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project release/18.x llvmorg-18.1.0-rc3-0-g6c90f8dd5463
Dimitry Andric [Wed, 21 Feb 2024 10:24:23 +0000 (11:24 +0100)]
Merge llvm-project release/18.x llvmorg-18.1.0-rc3-0-g6c90f8dd5463

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project release/18.x llvmorg-18.1.0-rc3-0-g6c90f8dd5463.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project release/18.x llvmorg-18.1.0-rc2-53-gc7b0a6ecd442
Dimitry Andric [Tue, 20 Feb 2024 18:57:23 +0000 (19:57 +0100)]
Merge llvm-project release/18.x llvmorg-18.1.0-rc2-53-gc7b0a6ecd442

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project release/18.x llvmorg-18.1.0-rc2-53-gc7b0a6ecd442.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project release/18.x llvmorg-18.1.0-rc2-0-gc6c86965d967
Dimitry Andric [Wed, 7 Feb 2024 14:58:02 +0000 (15:58 +0100)]
Merge llvm-project release/18.x llvmorg-18.1.0-rc2-0-gc6c86965d967

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project release/18.x llvmorg-18.1.0-rc2-0-gc6c86965d967.

PR: 276104
MFC after: 1 month

2 months ago[libc++] Rename __bit_reference template parameter to avoid conflict
Dimitry Andric [Mon, 5 Feb 2024 11:41:51 +0000 (12:41 +0100)]
[libc++] Rename __bit_reference template parameter to avoid conflict

As of 4d20cfcf4eb08217ed37c4d4c38dc395d7a66d26, `__bit_reference`
contains a template `__fill_n` with a bool `_FillValue` parameter.

Unfortunately there is a relatively widely used piece of scientific
software called NetCDF, which exposes a (C) macro `_FillValue` in its
public headers.

When building the NetCDF C++ bindings, this quickly leads to compilation
errors when the macro interferes with the template in `__bit_reference`.

Rename the parameter to `_FillVal` to avoid the conflict.

PR: 276104
MFC after: 1 month

2 months agoMerge commit 5f4ee5a2dfa9 from llvm-project (by Shanzhi):
Dimitry Andric [Mon, 5 Feb 2024 09:16:17 +0000 (10:16 +0100)]
Merge commit 5f4ee5a2dfa9 from llvm-project (by Shanzhi):

  [Clang][AST] Fix a crash on attaching doc comments (#78716)

  This crash is basically caused by calling
  `ASTContext::getRawCommentForDeclNoCacheImp` with its input arguments
  `RepresentativeLocForDecl` and `CommentsInTheFile` refering to different
  files. A reduced reproducer is provided in this patch.

  After the source locations for instantiations of funtion template are
  corrected in the commit 256a0b298c68b89688b80350b034daf2f7785b67, the
  variable `CommitsInThisFile` in the function
  `ASTContext::attachCommentsToJustParsedDecls` would refer to the source
  file rather than the header file for implicit function template
  instantiation. Therefore, in the first loop in
  `ASTContext::attachCommentsToJustParsedDecls`, `D` should also be
  adjusted for relevant scenarios like the second loop.

  Fixes #67979
  Fixes #68524
  Fixes #70550

This should fix a segfault when compiling graphics/gdal.

PR: 276104
MFC after: 1 month

2 months agoMerge commit 6e4930c67508 from llvm-project (by Alexander Kornienko):
Dimitry Andric [Sun, 28 Jan 2024 20:34:42 +0000 (21:34 +0100)]
Merge commit 6e4930c67508 from llvm-project (by Alexander Kornienko):

  Revert "[SemaCXX] Implement CWG2137 (list-initialization from objects of the same type) (#77768)"

  This reverts commit 924701311aa79180e86ad8ce43d253f27d25ec7d. Causes compilation
  errors on valid code, see
  https://github.com/llvm/llvm-project/pull/77768#issuecomment-1908062472.

In particular, this fixes bogus "call to constructor of 'SomeType' is
ambiguous" errors.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project release/18.x llvmorg-18-init-18361-g22683463740e
Dimitry Andric [Fri, 26 Jan 2024 15:04:14 +0000 (16:04 +0100)]
Merge llvm-project release/18.x llvmorg-18-init-18361-g22683463740e

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project release/18.x llvmorg-18-init-18361-g22683463740e.

PR: 276104
MFC after: 1 month

2 months agoTentatively apply https://github.com/libcxxrt/libcxxrt/pull/27
Dimitry Andric [Fri, 26 Jan 2024 15:03:20 +0000 (16:03 +0100)]
Tentatively apply https://github.com/libcxxrt/libcxxrt/pull/27

This marks __cxa_allocate_exception, __cxa_free_exception and
__cxa_init_primary_exception noexcept, to ensure compatibility with
libc++'s declarations.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project main llvmorg-18-init-18359-g93248729cfae
Dimitry Andric [Wed, 24 Jan 2024 19:17:23 +0000 (20:17 +0100)]
Merge llvm-project main llvmorg-18-init-18359-g93248729cfae

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-18359-g93248729cfae, the
last commit before the upstream release/18.x branch was created.

PR: 276104
MFC after: 1 month

2 months agoRedo libc++ customizations
Dimitry Andric [Sun, 14 Jan 2024 13:20:42 +0000 (14:20 +0100)]
Redo libc++ customizations

* Remove osreldate include because _LIBCPP_HAS_NO_GETS has disappeared
* Instead, add direct major __FreeBSD__ check for using ::gets declaration
* Mark EINTEGRITY values as FreeBSD customization
* Reformat _LIBCPP_TYPE_VISIBILITY_DEFAULT customization

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project main llvmorg-18-init-16864-g3b3ee1f53424
Dimitry Andric [Thu, 11 Jan 2024 18:29:01 +0000 (19:29 +0100)]
Merge llvm-project main llvmorg-18-init-16864-g3b3ee1f53424

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-16864-g3b3ee1f53424.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project main llvmorg-18-init-16595-g7c00a5be5cde
Dimitry Andric [Tue, 9 Jan 2024 20:00:28 +0000 (21:00 +0100)]
Merge llvm-project main llvmorg-18-init-16595-g7c00a5be5cde

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-16595-g7c00a5be5cde.

PR: 276104
MFC after: 1 month

2 months agoAdd two FreeBSD customizations to libc++
Dimitry Andric [Sun, 7 Jan 2024 11:32:29 +0000 (12:32 +0100)]
Add two FreeBSD customizations to libc++

This is intended to better support ports usage of older clang versions:
* Add _LIBCPP_ENABLE_COMPILER_VERSION_CHECKS block around compiler
  version checks, to avoid any warnings about support. This makes some
  ports that use -Werror fall over.
* When using clang < 15.0, avoid using a type visibility attribute on
  the std namespace, as older versions of clang do not support this.

PR: 276104
MFC after: 1 month

2 months agoTentatively merge https://github.com/llvm/llvm-project/pull/77242
Dimitry Andric [Sun, 7 Jan 2024 16:03:13 +0000 (17:03 +0100)]
Tentatively merge https://github.com/llvm/llvm-project/pull/77242

  [libcxx] Re-include <osreldate.h> in __config for FreeBSD

  In 0a97720d0197 some changes were made to `__config` for assuming that
  `__BYTE_ORDER__` is always present.

  However, this deleted a `<osreldate.h>` include for FreeBSD, which is
  required to get the value of `__FreeBSD_version`, and that is used later
  in the file to determine whether `_LIBCPP_C_HAS_NO_GETS` needs to be
  enabled.

  Include `<osreldate.h>` just after the other includes used for feature
  detection, to fix this.

  Note that when FreeBSD 13 is EOLed, this can be removed, as then all
  supported FreeBSD versions will no longer have `gets()`.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project main llvmorg-18-init-16003-gfc5f51cf5af4
Dimitry Andric [Wed, 3 Jan 2024 18:04:11 +0000 (19:04 +0100)]
Merge llvm-project main llvmorg-18-init-16003-gfc5f51cf5af4

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-16003-gfc5f51cf5af4.

PR: 276104
MFC after: 1 month

2 months agoRevert commit 0e46b49de433 from llvm-project (by Matt Arsenault):
Dimitry Andric [Tue, 2 Jan 2024 16:07:31 +0000 (17:07 +0100)]
Revert commit 0e46b49de433 from llvm-project (by Matt Arsenault):

  Reapply "RegisterCoalescer: Add implicit-def of super register when coalescing SUBREG_TO_REG"

  This reverts commit c398fa009a47eb24f88383d5e911e59e70f8db86.

  PPC backend was fixed in 2f82662ce901c6666fceb9c6c5e0de216a1c9667

Since it causes an assertion failure building /sys/dev/fb/vga.c:
https://github.com/llvm/llvm-project/issues/76416

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project main llvmorg-18-init-15692-g007ed0dccd6a
Dimitry Andric [Mon, 25 Dec 2023 17:35:41 +0000 (18:35 +0100)]
Merge llvm-project main llvmorg-18-init-15692-g007ed0dccd6a

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-15692-g007ed0dccd6a.

PR: 276104
MFC after: 1 month

2 months agoTentatively apply https://github.com/llvm/llvm-project/pull/76175
Dimitry Andric [Thu, 21 Dec 2023 22:30:02 +0000 (23:30 +0100)]
Tentatively apply https://github.com/llvm/llvm-project/pull/76175

This fixes libsa including compiler-rt builtins.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project main llvmorg-18-init-15088-gd14ee76181fb
Dimitry Andric [Mon, 18 Dec 2023 20:30:12 +0000 (21:30 +0100)]
Merge llvm-project main llvmorg-18-init-15088-gd14ee76181fb

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-15088-gd14ee76181fb.

PR: 276104
MFC after: 1 month

2 months agotcp: improve consistency
Michael Tuexen [Sat, 6 Apr 2024 08:02:06 +0000 (10:02 +0200)]
tcp: improve consistency

No functional change intended.

Reported by: Coverity Scan
CID: 1523781
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44645

2 months agotcp rack: fix memory corruption
Michael Tuexen [Sat, 6 Apr 2024 07:55:46 +0000 (09:55 +0200)]
tcp rack: fix memory corruption

When in rack_output() jumping to the label out, don't write errno into
the log buffer, since the pointer is not initialized.

Reported by: Coverity Scan
CID: 1523773
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44647

2 months agodevmatch: Convert command line flags to bools
Warner Losh [Fri, 5 Apr 2024 22:34:03 +0000 (16:34 -0600)]
devmatch: Convert command line flags to bools

These are bools, and should have been bools from the start. Make them
bools.

Sponsored by: Netflix

2 months agodevmatch: Make -a work for all devices
Warner Losh [Fri, 5 Apr 2024 22:31:55 +0000 (16:31 -0600)]
devmatch: Make -a work for all devices

devmatch -a should produce output for all attached devices, but doesn't.

Noticed by: cperciva
Sponsored by: Netflix

2 months agostand: Install gptboot.efi(8)
Warner Losh [Thu, 4 Apr 2024 15:42:06 +0000 (09:42 -0600)]
stand: Install gptboot.efi(8)

We need to include bsd.init.mk first when we have man pages in the boot
loader.

Sponsored by: Netflix

2 months agonvme: Add my copyright to logpage.c
Warner Losh [Wed, 3 Apr 2024 18:10:08 +0000 (12:10 -0600)]
nvme: Add my copyright to logpage.c

Reflect the command line refactoring I did, and other changes. git blame
says I'm to blame for ~1/4 of this file.

Sponsored by: Netflix

2 months agonvme: Add LPA bits
Warner Losh [Wed, 3 Apr 2024 17:26:17 +0000 (11:26 -0600)]
nvme: Add LPA bits

Add all the bits from the NVMe 2.0 base specification: CMD_EFFECTS to
indicate the commands and effects log page is supported, TELEMETRY to
indicate that the telemetry log pages and protocols are supported,
PERSISTENT_EVENTS to indicate the persistent event log is supported,
LOG_PAGES_PAGE to indicate that various log pages related to log page
and command support are supported: L0, L5, L12, and L13. and
DA4_TELEMETRY to indicate that the DA4 area is supported for telemetry
data.

Sponsored by: Netflix

2 months agoarm64: Add a CPU reset hook instead of expecting PSCI
Stephen J. Kiernan [Fri, 5 Apr 2024 21:37:15 +0000 (17:37 -0400)]
arm64: Add a CPU reset hook instead of expecting PSCI

Some SoCs do not include a PSCI for power management and defer it to
something else instead. Add a CPU reset hook to account for this, and
use it in the psci driver.

Reviewed by: andrew
Obtained from: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D44535

2 months agoVendor import of llvm-project branch release/18.x llvmorg-18.1.3-0-gc13b7485b879.
Dimitry Andric [Fri, 5 Apr 2024 20:29:32 +0000 (22:29 +0200)]
Vendor import of llvm-project branch release/18.x llvmorg-18.1.3-0-gc13b7485b879.

2 months agoarm64: Separate serror handler to EL1H and EL0 versions.
Stephen J. Kiernan [Wed, 3 Apr 2024 23:38:56 +0000 (19:38 -0400)]
arm64: Separate serror handler to EL1H and EL0 versions.

In order to ensure the registers are saved and restored properly for
the exception level, we need separate handlers serror at each of
EL1H and EL0.

Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D44630

2 months agowhich: Use size_t instead of ssize_t for pathlen
Collin Funk [Sun, 11 Feb 2024 04:26:38 +0000 (20:26 -0800)]
which: Use size_t instead of ssize_t for pathlen

The "pathlen" variable is the return value of strlen(3) and is then
passed as an argument to malloc(3) and memcpy(3). The size_t type
matches the prototype for these functions. The size_t type is unsigned
so it can fit larger $PATH values than ssize_t. However, in practice
ssize_t should be larger enough so this change is just for clarity.

Signed-off-by: Collin Funk <collin.funk1@gmail.com>
MFC after: 1 week
Pull Request: https://github.com/freebsd/freebsd-src/pull/1113

2 months agoarm64: add CPU part identifiers for Apple M1 and M2
Lexi Winter [Sat, 23 Mar 2024 16:18:24 +0000 (16:18 +0000)]
arm64: add CPU part identifiers for Apple M1 and M2

Part numbers are sourced from Linux (arch/arm64/include/asm/cputype.h).

MFC after: 2 weeks
Pull Request: https://github.com/freebsd/freebsd-src/pull/1144

2 months agoLinuxKPI: Remove the temporary variable fileid from the macro request_module
Zhenlei Huang [Fri, 5 Apr 2024 16:26:09 +0000 (00:26 +0800)]
LinuxKPI: Remove the temporary variable fileid from the macro request_module

The variable fileid stores the result from kern_kldload() but never gets
used. Since the third parameter `*fileid` of kern_kldload() can be NULL,
this unused variable can be safely removed.

No functional change intended.

Reviewed by: emaste, bz, #linuxkpi
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D44583

2 months agouipc_socket: handle socket buffer locks in sopeeloff
Michael Tuexen [Fri, 5 Apr 2024 16:14:54 +0000 (18:14 +0200)]
uipc_socket: handle socket buffer locks in sopeeloff

PR: 278171
Reviewed by: markj
Fixes: a4fc41423f7d ("sockets: enable protocol specific socket buffers")
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D44640

2 months agotcp rack: fix sending
Michael Tuexen [Fri, 5 Apr 2024 15:47:03 +0000 (17:47 +0200)]
tcp rack: fix sending

In rack_output(), idle is used as a boolean variable. So don't use it
as an int and don't clear it afterwards.
This avoids setting idle to false, when it is not intended.

Reported by: olivier
Reviewed by: rrs, rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44610

2 months agoMerge commit eb8f379567e8 from llvm-project (by Florian Hahn):
Dimitry Andric [Fri, 5 Apr 2024 13:00:12 +0000 (15:00 +0200)]
Merge commit eb8f379567e8 from llvm-project (by Florian Hahn):

  [DSE] Remove malloc from EarliestEscapeInfo before removing. (#84157)

  Not removing the malloc from earliest escape info leaves stale entries
  in the cache.

  Fixes https://github.com/llvm/llvm-project/issues/84051.

  PR: https://github.com/llvm/llvm-project/pull/84157

This fixes a crash in clang (usually a bus error, but can also be
another memory error) when compiling the science/siconos port.

PR: 278174
Reported by: yuri
MFC after: 3 days

2 months agotarfs.5: Provide some guidance on zstd frame sizes
Mark Johnston [Fri, 5 Apr 2024 15:28:55 +0000 (11:28 -0400)]
tarfs.5: Provide some guidance on zstd frame sizes

Reviewed by: des, emaste
MFC after: 2 weeks
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D44636

2 months agotcp bblog: cleanup
Michael Tuexen [Fri, 5 Apr 2024 15:36:40 +0000 (17:36 +0200)]
tcp bblog: cleanup

Remove redundant checks and improve error checking.

Reported by: Coverity Scan
CID: 1523780
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44616

2 months agotcp hpts: initialize variable
Michael Tuexen [Fri, 5 Apr 2024 15:30:31 +0000 (17:30 +0200)]
tcp hpts: initialize variable

Ensure that  tv.tv_sec is zero in all code paths.

Reported by: Coverity Scan
CID: 1527724
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44584

2 months agoacpidump: add Foundation copyright
Konstantin Belousov [Fri, 5 Apr 2024 14:57:19 +0000 (17:57 +0300)]
acpidump: add Foundation copyright

Sponsored by: The FreeBSD Foundation
MFC after: 1 week

2 months agoacpidump: dump AMD IVRS table describing IOMMU layout
Konstantin Belousov [Sun, 31 Mar 2024 23:30:37 +0000 (02:30 +0300)]
acpidump: dump AMD IVRS table describing IOMMU layout

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agoacpidump: add printfield() helper
Konstantin Belousov [Thu, 4 Apr 2024 04:49:21 +0000 (07:49 +0300)]
acpidump: add printfield() helper

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agoacpidump: bump WARNS to 6
Konstantin Belousov [Wed, 3 Apr 2024 03:00:25 +0000 (06:00 +0300)]
acpidump: bump WARNS to 6

and disable warnings about unused function args coming from the vendor
acpi headers.

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agoacpidump: the acpi_get_fadt_revision() argument is unused
Konstantin Belousov [Thu, 4 Apr 2024 15:42:36 +0000 (18:42 +0300)]
acpidump: the acpi_get_fadt_revision() argument is unused

everywhere except i386.

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agoacpidump: silent the warning about unaligned uuid
Konstantin Belousov [Wed, 3 Apr 2024 02:58:28 +0000 (05:58 +0300)]
acpidump: silent the warning about unaligned uuid

The field comes from the ACPI NFIT table and must be already properly
aligned by BIOS (at least so is written in the spec).

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agotarfs: Implement VOP_BMAP
Mark Johnston [Fri, 5 Apr 2024 15:14:36 +0000 (11:14 -0400)]
tarfs: Implement VOP_BMAP

This lets tarfs provide readahead/behind hints to the VFS, which helps
memory-mapped I/O performance, important when running faulting in
executables out of a tarfs mount as one might if tarfs is used to back
the root filesystem, for example.  The improvement is particularly
noticeable when the backing tarball is zstd-compressed.

The implementation simply returns the extent of the virtual block
containing the target offset, clamped by the maximum I/O size.  This is
perhaps simplistic; it effectively just chooses values that would
correspond to a single VOP_READ call in tarfs_read_file().

Reviewed by: des, kib
MFC after: 1 month
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D44626

2 months agoVOP_BMAP.9: Typo
Mark Johnston [Fri, 5 Apr 2024 15:14:28 +0000 (11:14 -0400)]
VOP_BMAP.9: Typo

MFC after: 1 week
Sponsored by: Klara, Inc.

2 months agostop_all_proc(): skip traced or signal-stoped processes
Konstantin Belousov [Thu, 4 Apr 2024 19:24:32 +0000 (22:24 +0300)]
stop_all_proc(): skip traced or signal-stoped processes

Since thread_single(SINGLE_ALLPROC) ignores them since 9241ebc796c,
and there is not much we can do for the debugger-controlled process.

Noted by: olce
Reviewed by: markj, olce
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44638

2 months agoAdd OpenBSD 7.5 to bsd-family-tree
Juraj Lutter [Fri, 5 Apr 2024 06:27:12 +0000 (08:27 +0200)]
Add OpenBSD 7.5 to bsd-family-tree

Summary: Add OpenBSD 7.5 to bsd-family-tree

Subscribers: imp

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

2 months agoRevert "sound: Get rid of snd_clone and use DEVFS_CDEVPRIV(9)"
Christos Margiolis [Fri, 5 Apr 2024 10:32:32 +0000 (12:32 +0200)]
Revert "sound: Get rid of snd_clone and use DEVFS_CDEVPRIV(9)"

This reverts commit dc831e93bad63f9faea09f1806a7733a40bff316.

After several reports in the mailing lists, this commit breaks
pulseaudio. Revert until the issue is resolved.

2 months agoRevert "sound: Implement asynchronous device detach"
Christos Margiolis [Fri, 5 Apr 2024 10:27:47 +0000 (12:27 +0200)]
Revert "sound: Implement asynchronous device detach"

This reverts commit 9eff58c6d52b66eb8abe7f724dabcd804a566df4.

We are reverting dc831e93bad6 ("sound: Get rid of snd_clone and use
DEVFS_CDEVPRIV(9)"), so revert this commit as well since it depends
dc831e93bad6.

2 months agoBackport export of lzma_mt_block_size symbol.
Xin LI [Fri, 5 Apr 2024 06:39:33 +0000 (23:39 -0700)]
Backport export of lzma_mt_block_size symbol.

This restores binary compatibility against liblzma 5.6.0 library.

PR: 278127
MFC after: 3 days

2 months agoRevert "MFV: xz 5.6.0"
Xin LI [Fri, 5 Apr 2024 06:39:23 +0000 (23:39 -0700)]
Revert "MFV: xz 5.6.0"

This commit reverts 8db56defa766eacdbaf89a37f25b11a57fd9787a,
rolling back the vendor import of xz 5.6.0 and restoring the
package to version 5.4.5.

The revert was not directly due to the attack (CVE-2024-3094):
our import process have removed the test cases and build scripts
that would have enabled the attack. However, reverting would
help to reduce potential confusion and false positives from
security scanners that assess risk based solely on version
numbers.

Another commit will follow to restore binary compatibility with
the liblzma 5.6.0 library by making the previously private
symbol (lzma_mt_block_size) public.

PR: 278127
MFC after: 3 days

2 months agopowerpc/booke: Reserve KVA for minidump working area
Justin Hibbits [Thu, 4 Apr 2024 22:23:39 +0000 (18:23 -0400)]
powerpc/booke: Reserve KVA for minidump working area

This was already handled for the AIM64 pmaps, so add the same to
Book-E64 pmap.

2 months agotmpfs tests: Remove an xfail annotation
Mark Johnston [Thu, 4 Apr 2024 21:04:30 +0000 (17:04 -0400)]
tmpfs tests: Remove an xfail annotation

This test passes after commit 08f3d5b60cdf ("copy_file_range: Call
vn_rdwr() at least once").

PR: 274615
MFC after: 1 month

2 months agocopy_file_range: Call vn_rdwr() at least once
Mark Johnston [Thu, 4 Apr 2024 15:18:03 +0000 (11:18 -0400)]
copy_file_range: Call vn_rdwr() at least once

This ensures that we invoke VOP_READ on the input file even if it's
empty, which in turn helps ensure that filesystems update the atime of
the file.

PR: 274615
Reviewed by: olce, rmacklem, kib
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D43524

2 months agofusefs: correct a comment
Alan Somers [Thu, 4 Apr 2024 20:18:56 +0000 (14:18 -0600)]
fusefs: correct a comment

[skip ci]

MFC after: 1 week
Sponsored by: Axcient