roll: pigweed, pw_toolchain: pw_libcxx: Add alwayslink=True to pw_libcxx

libc++ has weak definitions for the operator new/delete functions that
depend on symbols included in __lcxx_override. That sections has all
libc++'s weak definitions for these operator new/delete symbols. The
bazel build though places this section right after boot2 which should
not happen since the vector table should come immediately after boot2. I
belive this is legal from the linker perspective since boot2 and
__lcxx_override have the same flags but we don't also want to edit the
linker script upstream to move the section elsewhere.

The alternative we can do is have __lcxx_override gc'd. pw_libcxx
provides its own strong definitions for operator new/delete but those
don't win at link time due to linking order. Wrapping it with
-[no-]whole-archive
allows the strong definitions pw_libcxx provides to win, allowing
--gc-sections to remove the section. Note this only fixes this issue for
pw users for rp.

Original-Bug: 358109466
Original-Reviewed-on: https://pigweed-internal-review.git.corp.google.com/c/pigweed/pigweed/+/74450

https://pigweed-internal.googlesource.com/pigweed/pigweed
pigweed, pw_toolchain Rolled-Commits: 676d754f6f1a87a..093010b2e645ba6
Roller-URL: https://ci.chromium.org/b/8740202386489570641
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: Ie969ebc15cce1bd5df9071a82ccda98b1078d7ff
Reviewed-on: https://pigweed-internal-review.git.corp.google.com/c/pigweed/showcase/rp2/+/74437
Commit-Queue: Pigweed-Internal-Roller <pigweed-internal-roller@pw-internal-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Pigweed-Internal-Roller <pigweed-internal-roller@pw-internal-service-accounts.iam.gserviceaccount.com>
1 file changed
tree: df5737537321b0b07f922fe9ae5718018febfafc
  1. .github/
  2. .vscode/
  3. apps/
  4. device/
  5. modules/
  6. system/
  7. targets/
  8. tools/
  9. web_app/
  10. .bazelignore
  11. .bazelrc
  12. .bazelversion
  13. .buildifier.json
  14. .clang-format
  15. .clangd.shared
  16. .gitignore
  17. .pw_console.yaml
  18. AUTHORS
  19. BUILD.bazel
  20. CONTRIBUTING.md
  21. LICENSE
  22. MODULE.bazel
  23. OWNERS
  24. pigweed.json
  25. README.md
README.md

Sense

git clone https://pigweed.googlesource.com/pigweed/showcase/sense

Welcome to Pigweed Sense, a tour of key Pigweed components experienced through an imagined air quality product.

Please visit the tutorial to get started: https://pigweed.dev/docs/showcase/sense/tutorial/