[lldb] Support dynamically loading ScriptInterpreter plugins (#189718)
Add support for building the script interpreter plugins as shared
libraries, controlled by the `LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS`
CMake variable. This allows the plugins, rather than `liblldb`, to link
against their respective dependencies such as Python and Lua, which has
several benefits:
1. It makes it possible to gracefully handle the Python or Lua
dependencies not being present, instead of crashing.
2. It enables programmatically deciding which Python or Lua library to
load.
3. Combined with (2), this opens up a path towards not statically
linking with Python at all, which is required in order to load the LLDB
module in a different Python interpreter (at least this is a hard
requirement on Darwin due to two-level namespaces and install names).
This PR completes #183791
jail: open the fstab files with fopen("re")
This protects against accidentally leaking them past fork()+exec()
in future refactorings.
PR: 295052
Reviewed by: kevans
jail: avoid leaking jail config fds to exec.* hooks
The jail(8) command must not leave parsed configuration files open
since the file descriptors will be leaked to child processes
including the untrusted exec.start or exec.stop hooks.
While fopen() doesn't provide direct access to O_CLOEXEC, it does
provide access to FD_CLOEXEC via "e" in the mode string which
provides the desired defense in depth against leaking file descriptors
into exec.* hooks since those always execve() into a shell.
Jail configuration is potentially sensitive and some hooks execute from
within the jail context, leaving some opening for the jail to exfiltrate
information about the host environment.
(Commit message wordsmithed by kevans)
PR: 295052
Reviewed by: kevans
MFC after: 3 days
mail/archiveopteryx: Update to latest git
archiveopteryx has not received an official release in many years and
many fixes have been accumulating. I have traditionally published the
git version under the mail/archiveopteryhx-devel port, but many
improvements have happened that aox users should be getting by default.
I'm working with upstream to get a new release finally made.
While here, correct the LICENSE which is actually PostgreSQL, not MIT.
Unskip test sys.netinet6.frag6.frag6_07.frag6_07
This is now consistently passing with 100+ consecutive runs.
Signed-off-by: Siva Mahadevan <me at svmhdvn.name>
PR: 244170
MFC after: 3 days
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 681e9d3e391f30a512c523514f69a63c9782a901)
Make it clear that log enable's output file is per channel not per category (#196178)
It is natural to try:
```
log enable -f file1 lldb step
log enable -f file2 lldb process
```
or whatever, and then be surprised that all the logs end up in
`file2`... The help on `log enable`'s `-f` option didn't specify what
you were setting the file for. This PR just changes the help text to be
clear about the current state of things.
tests/if_lagg_test: unskip 'witness' testcase
This testcase passes consistently (in 100+ runs) now.
Signed-off-by: Siva Mahadevan <me at svmhdvn.name>
PR: 244163, 251726
MFC after: 3 days
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 7a83fedc116d827cc9c6d8e049b785f1d7b68dcd)
[lldb] Fix misconstructed FromErrorStringWithFormatv format strings (#196189)
Fix mistakes in `FromErrorStringWithFormatv` format strings. Uses
https://github.com/llvm/llvm-project/pull/195974
---------
Co-authored-by: Jonas Devlieghere <jonas at devlieghere.com>
[clang][SYCL] Emit "sycl-module-id" function attribute (#195965)
Attach the "sycl-module-id" LLVM function attribute to SYCL device
functions that are candidates for entry points in device-code splitting.
The attribute value is the module identifier (translation unit name),
which clang-sycl-linker uses to group kernels by translation unit when
splitting device code.
The attribute is emitted at two sites:
1. SYCL kernel caller functions (spir_kernel) are synthesized by
EmitSYCLKernelCaller and do not go through EmitFunction, so the
attribute is set directly after SetSYCLKernelAttributes.
2. sycl_external function definitions go through
SetLLVMFunctionAttributesForDefinition; the attribute is added there
when SYCLIsDevice and SYCLExternalAttr are present.
Both sites call the new CodeGenModule::addSYCLModuleIdAttr helper.
Co-authored-by: Claude
[AMDGPU] Validate forced lit64() on VOP3 instructions (#196171)
Lit64 cannot be used with VOP3* but we did not validate it
in case it can be encoded as lit32, but forced with the
operand modifier.
[RFC][Docs] Clarify brace omission for single-line bodies
Update the Coding Standards brace guidance to emphasize that braces should be
omitted only for simple bodies that do not wrap across multiple physical lines.
Revert "[DenseMap] Add memory barrier for sanitizers in getInlineBuckets/getLargeRep (#183457)" (#196143)
Revert #183457 and fixup #193695 as they are not needed after #194208.
Related issue #182720.
This reverts commit b5ac484470b9ceda96addcbc946f9ded4c5ef972.
This reverts commit 8d5b74db2d8f54da2609d18040504153c1afe5df.
[lldb] Add LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS option (#196110)
Add a CMake option that will gate building the script interpreter
plugins as separate shared libraries, and expose it to C++ via
lldb/Host/Config.h.
The option defaults to OFF and currently has no consumers; subsequent
patches wire up the plugin, binding, and test build to use it.
Because dynamic plugins resolve lldb_private symbols against liblldb at
runtime, enabling this option implies LLDB_EXPORT_ALL_SYMBOLS. The
default for LLDB_EXPORT_ALL_SYMBOLS now follows
LLDB_ENABLE_DYNAMIC_SCRIPTINTERPRETERS, and a FATAL_ERROR is raised if
the user explicitly disables symbol export while requesting dynamic
plugins.
Extracted from #189718 for easier reviewing.
[lldb] Partially support ConstantPtrAuth in IRForTarget::UnfoldConstant (#195899)
IRForTarget aims to make generated LLVM IR relocatable. This is because
LLDB JITs and executes code in an environment where the location/value
of something may not be known ahead of runtime.
My motivation here is ObjC constant strings. They are generally emitted
as global variables with a constant global initializer. On arm64e, these
global initializers may have a ptrauth constant as the address
discriminator. These can be safely skipped because address
discriminators encode information about the signed value, they don't
actually need to be unfolded.
In this commit I explicitly do not handle the non-address discriminator
scenario. As I work through the arm64e test suite, I may come back to
implement this if I find it is needed.
[ValueTracking] Extend computeConstantRange for add/sub, sext/zext/trunc
Recursively compute operand ranges for add/sub and propagate ranges
through sext/zext/trunc.
For add/sub, the computed range is intersected with any existing range
from setLimitsForBinOp, and NSW/NUW flags are used via
addWithNoWrap/subWithNoWrap to tighten bounds.
The motivation is to enable further folding of reduce.add expressions
in comparisons, where the result range can be bounded by the input
element ranges.
[AMDGPU] Fix some links in the GFX950 documentation (#195951)
Some links in the GFX950 documentation are incorrect. For example all
the links for the operand 'simm16' in SOPK. This patch fixes those
problems. As part of the fix, an entry fo simm16 was added to
AMDGPUOperandSyntax.rst.