[profile] Make {__start_,__stop_}__llvm_prf_* symbols undefined weak
authorFangrui Song <i@maskray.me>
Thu, 18 Feb 2021 07:33:13 +0000 (23:33 -0800)
committerFangrui Song <i@maskray.me>
Thu, 18 Feb 2021 07:33:13 +0000 (23:33 -0800)
commit833d4d8e89e93636e904c3aa52a6c9c8d2ca098f
tree6243e6bbfe9e289b092feb19d73f798917fe6304
parent018a484cd26d72fb4c9e7fd75e5f5bc7838dfc73
[profile] Make {__start_,__stop_}__llvm_prf_* symbols undefined weak

To make a kind of metadata section usage work, we want to drop the
`__start_/__stop_ references retain C identifier name sections` rule from LLD (see D96914).

If an application has no `__llvm_prf_data` input section surviving --gc-sections,
LLD will error for undefined hidden `{__start_,__stop_}__llvm_prf_*` from `libclang_rt.profile-*`.
Other `__llvm_prf_*` sections have similar issues.

Making the references weak can address the problem.
This probably enables the opportunity to drop zero size dummy sections in `InstrProfilingPlatformLinux.c`.

Reviewed By: davidxl

Differential Revision: https://reviews.llvm.org/D96936
compiler-rt/lib/profile/InstrProfilingPlatformLinux.c