Reland #104404.
In addition to #104404 it raises required
verbosity for stack tracing on global
registration. It confuses a symbolizer test on
Darwin.
This reverts commit 6a8f73803a32db75d22490d341bf8744722a9025.
that change still breaks
SanitizerCommon-asan-x86_64-Darwin :: Darwin/print-stack-trace-in-code-loaded-after-fork.cpp
> This reverts commit 2704b804bec50c2b016bf678bd534c330ec655b6
> and relands #104404.
>
> The Darwin should not fail after #105599.
This reverts commit 8c6f8c29e90666b747fc4b4612647554206a2be5.
This caused
SanitizerCommon-asan-x86_64-Darwin :: Darwin/print-stack-trace-in-code-loaded-after-fork.cpp
to fail, see comment on the PR.
> Printing globals registration is internal debug
> tracing and should be controlled with verbosity.
This reverts commit 68f6e7467651f38e0b97343bfbc49e0ce69eaedf and
follow-up commit ef6760116fa2fa21f78e7a3b499f77e1a3eb7b92.
The pair `__asan_before_dynamic_init` and `__asan_after_dynamic_init` is
executed for each TU. `__asan_after_dynamic_init` unpoisons all globals,
which
makes the time complexity O(N^2), where N is the maximum of the global
count and
the TU count. This is expensive for large binaries.
This patch decreases the time complexity to O(N), when lld and static
runtime is
used on SANITIZER_CAN_USE_PREINIT_ARRAY platforms. This requires:
Enabling incremental poisoning (`__asan_before_dynamic_init` since
https://github.com/llvm/llvm-project/pull/101597). Making most
`__asan_after_dynamic_init` calls do nothing.