
This reverts commit 9083892277
.
Reason for revert: performance regression on android-pixel6-perf-pgo: https://screenshot.googleplex.com/6yxbc7zZDcZbvKw
Original change's description:
> orderfile: Remove the patching step
>
> Remove the 'Patch Orderfile' step from the Orderfile Generator. Replace
> it with a simpler step 'Add dummy functions'. It adds the following
> symbols to the beginning and the end of the orderfile, just like the
> current orderfile patching step does:
> * dummy_function_start_of_ordered_text
> * dummy_function_end_of_ordered_text
>
> The symbol `__cxx_global_var_init` is currently added along with the
> symbols marking begin/end of the ordered address range. While the latter
> symbols are important for correctness at runtime, the former does
> not exist these days. It used to be a large and uninstrumented symbol.
> Remove mentions of it in orderfiles.
>
> Note: This change does _not_ remove generation of the unpatched
> orderfile and uploading it to the cloud storage. Leaving it as TODO for
> a separate change. The only difference remaining between the normal and
> the 'unpatched' orderfile after this change would be the presence of the
> dummy functions mentioned above.
>
> == Observation(s) from running locally
>
> About 900 symbols from the orderfile that cannot be found in the
> uninstrumented binary because of the known problem [1]. The current
> 'patching' step does not fix this problem. There is, however, a
> possibility to mitigate the problem with another style of patching,
> which is not infra-friendly because it requires two builds with
> different configuration on the same builder.
>
> A few dozen symbols from the orderfile appear at 2+ offsets in the
> binary. I think it could be in part because of the DFM splitting, but I
> am not sure. It would be nice to investigate. There is one example of
> such symbol: ReadHuffmanCode. It is defined by brotli and libwebp (both
> in third_party), and they are static symbols only referenced from the
> same file where they are defined.
>
> [1] crbug.com/356360613:
> "Teach orderfile generator to respect suffixed function names
> from LTO"
>
> Bug: 340534475
> Change-Id: Icddd3b84576cfe76bfb652fe856aac3d2701dce6
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5782742
> Reviewed-by: Peter Wen <wnwen@chromium.org>
> Commit-Queue: Peter Wen <wnwen@chromium.org>
> Reviewed-by: Rasika Navarange <rasikan@google.com>
> Cr-Commit-Position: refs/heads/main@{#1341171}
Bug: 340534475
Change-Id: I08d2865a5758c2318bf21730a0232f1465cfcc96
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5796046
Commit-Queue: Egor Pasko <pasko@chromium.org>
Auto-Submit: Egor Pasko <pasko@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1343395}
Chromium
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead,
follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.