pw_preprocessor: Add PW_PLACE_IN_SECTION

Adds the PW_PLACE_IN_SECTION macro which unlike PW_KEEP_IN_SECTION
does not mark the symbol as used, meaning it is still eligble for
linker garbage collection.

Change-Id: I6c83b0d1af8a6540355a9915ee8b842deeed8189
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/67237
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Paul Mathieu <paulmathieu@google.com>
4 files changed
tree: a58a6207975cdc01e9be7668a43174fd46643c14
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_android_toolchain/
  7. pw_arduino_build/
  8. pw_assert/
  9. pw_assert_basic/
  10. pw_assert_log/
  11. pw_base64/
  12. pw_bloat/
  13. pw_blob_store/
  14. pw_bluetooth_hci/
  15. pw_boot/
  16. pw_boot_cortex_m/
  17. pw_build/
  18. pw_build_info/
  19. pw_build_mcuxpresso/
  20. pw_bytes/
  21. pw_checksum/
  22. pw_chrono/
  23. pw_chrono_embos/
  24. pw_chrono_freertos/
  25. pw_chrono_stl/
  26. pw_chrono_threadx/
  27. pw_cli/
  28. pw_console/
  29. pw_containers/
  30. pw_cpu_exception/
  31. pw_cpu_exception_cortex_m/
  32. pw_crypto/
  33. pw_docgen/
  34. pw_doctor/
  35. pw_env_setup/
  36. pw_file/
  37. pw_function/
  38. pw_fuzzer/
  39. pw_hdlc/
  40. pw_hex_dump/
  41. pw_i2c/
  42. pw_interrupt/
  43. pw_interrupt_cortex_m/
  44. pw_kvs/
  45. pw_libc/
  46. pw_log/
  47. pw_log_basic/
  48. pw_log_null/
  49. pw_log_rpc/
  50. pw_log_tokenized/
  51. pw_malloc/
  52. pw_malloc_freelist/
  53. pw_metric/
  54. pw_minimal_cpp_stdlib/
  55. pw_module/
  56. pw_multisink/
  57. pw_package/
  58. pw_persistent_ram/
  59. pw_polyfill/
  60. pw_preprocessor/
  61. pw_presubmit/
  62. pw_protobuf/
  63. pw_protobuf_compiler/
  64. pw_random/
  65. pw_result/
  66. pw_ring_buffer/
  67. pw_router/
  68. pw_rpc/
  69. pw_snapshot/
  70. pw_software_update/
  71. pw_span/
  72. pw_status/
  73. pw_stm32cube_build/
  74. pw_stream/
  75. pw_string/
  76. pw_symbolizer/
  77. pw_sync/
  78. pw_sync_baremetal/
  79. pw_sync_embos/
  80. pw_sync_freertos/
  81. pw_sync_stl/
  82. pw_sync_threadx/
  83. pw_sys_io/
  84. pw_sys_io_arduino/
  85. pw_sys_io_baremetal_lm3s6965evb/
  86. pw_sys_io_baremetal_stm32f429/
  87. pw_sys_io_mcuxpresso/
  88. pw_sys_io_stdio/
  89. pw_target_runner/
  90. pw_thread/
  91. pw_thread_embos/
  92. pw_thread_freertos/
  93. pw_thread_stl/
  94. pw_thread_threadx/
  95. pw_tls_client/
  96. pw_tls_client_boringssl/
  97. pw_tls_client_mbedtls/
  98. pw_tokenizer/
  99. pw_tool/
  100. pw_toolchain/
  101. pw_trace/
  102. pw_trace_tokenized/
  103. pw_transfer/
  104. pw_unit_test/
  105. pw_varint/
  106. pw_watch/
  107. pw_web_ui/
  108. pw_work_queue/
  109. targets/
  110. third_party/
  111. .bazelignore
  112. .bazelrc
  113. .clang-format
  114. .clang-tidy
  115. .eslintrc.json
  116. .gitattributes
  117. .gitignore
  118. .gn
  119. .prettierrc.js
  120. .pylintrc
  121. activate.bat
  122. AUTHORS
  123. bootstrap.bat
  124. bootstrap.sh
  125. BUILD.bazel
  126. BUILD.gn
  127. BUILDCONFIG.gn
  128. CMakeLists.txt
  129. LICENSE
  130. modules.gni
  131. OWNERS
  132. package.json
  133. PW_PLUGINS
  134. README.md
  135. tsconfig.json
  136. WORKSPACE
  137. yarn.lock
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/

Links