commit | adadec6b761b6d23803f2fd94b0573b4efad4b5d | [log] [tgz] |
---|---|---|
author | Samuel Huang <huangs@chromium.org> | Tue Mar 05 05:48:02 2019 |
committer | Commit Bot <commit-bot@chromium.org> | Tue Mar 05 05:48:02 2019 |
tree | ca7ed9c7c2b5defcec36f77170b1ff7b8e73ab17 | |
parent | 71444095d24b5435c03be63ad4765a94a9f3a26d [diff] |
[SuperSize] For Thin-LTO, deduce object_path from cache objects for .L.ref.tmp. Thin-LTO builds produce many (~3000 for Chrome) .L.ref.tmp symbols. SuperSize could not find |object_path| for them because: * The linker .map file points to thinlto-cache filenames (|thin_obj|). * ".L.ref.tmp" has high population, so name matching done in later nm step won't help. This CL associates .L.ref.tmp symbols with other symbols that share the same |thin_obj|, and attempts to deduce |object_path| if there is no ambiguity. Details: * In linker_map_parser.py, extract |address| -> |thin_obj|, and return the map. * In demangle.py, pass the map until after nm gets called to assign |object_paths| to regular symbols. * Add DeduceObjectPathsFromThinMap() that takes |address| -> |thin_obj| map, computes |thin_obj| -> |object_paths|, and assigns |object_path| to .L.ref.tmp symbols if no ambiguity arise, i.e., when |thin_obj| is associated with a unique |object_path|. For Chrome, this change causes about 30% of .L.ref.tmp symbols to gain |object_path|. Bug: 923936 Change-Id: I1864e764924d8e45ca5cb44d0ed7d0f73bec13ad Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1500781 Commit-Queue: Samuel Huang <huangs@chromium.org> Reviewed-by: Andrew Grieve <agrieve@chromium.org> Cr-Commit-Position: refs/heads/master@{#637605}
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.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .