ld.elf_so: Fix ASSERT macro in xmalloc.c.
1. Use #p, not "p", in the expansion of #define ASSERT(p), for C as of
this millennium.
2. Consistently make ASSERT(...) a single expression.
Prompted by enabling MALLOC_DEBUG to track down issues in:
PR lib/59751: dlclose is not MT-safe depending on the libraries
unloaded
ld.elf_so: Fix more races with recursive threaded dlopen/dlclose.
1. When loading an object, keep track of a finer-grained state for
relocation so that a concurrent _rtld_relocate_objects doesn't
relocate an object too early (e.g., while waiting in
_rtld_load_needed_objects for an object that is concurrently being
dlclosed to finish before we can map it afresh) leading to
spurious symbol resolution failures:
- OBJRELOC_NONE (0): object has been created but the rtld state
isn't enough to attempt relocation yet (either not all DT_NEEDED
entries have been resolved, or the dldags lists have not yet
been populated)
- OBJRELOC_READY (1): object has been created and rtld state is
ready to relocate (all DT_NEEDED entries have been resolved and
the dldags lists have been populated), but object has not yet
been relocated.
[44 lines not shown]
Make swap encryption truly optional, rather than just able to be
default-disabled
- New option VMSWAP_ENCRYPTION (enabled by default in conf/std along with
VMSWAP)
- Remove the "aes" attribute from VMSWAP and hand it to VMSWAP_ENCRYPTION.
- Conditionalize all code and data related to swap encryption on the
new VMSWAP_ENCRYPTION option.
While the swap encryption code itself is not that large, it drags in
the AES code if enabled. If a constrained platform doesn't care about
encrypted swap, this lets it not pay the cost for AES.
The "iic" instance does not depend on i2c_bitbang, so it should not
express it as a dependency. That's the responsibility of the back-ends
that do require it.
Don't bother with the "no disk label" message. It's not particularly
useful, and is downright confusing if the disk has some other sort of
partition scheme (such at GPT).