SuperSize: String Literals missing for Clank under LLD (no ThinLTO) for arm64 |
|||
Issue descriptionWhen running SuperSize for Clank under LLD (no ThinLTO) for arm64, it seems that most string literals are not captured. Verbose output: I 635715 Section .rodata: has 99.9% of 6774114 bytes accounted for from 25463 symbols. 9622 bytes are unaccounted for. I 635719 * 25362 have source paths assigned (99.6%) I 635752 * Padding accounts for 2916447 bytes (43.1%) I 635755 * Contains 29 string literals. Total size=3160, padding=2885442 I 635757 * Contains 2194 aliases, mapped to 543 unique addresses (242258 bytes saved) I 635763 * 744 symbols have shared ownership (761 bytes) So only 29 string literals are found; padding=2885442 is way off. Note that the big timing numbers (e.g., 635715) are due to Bug 899337, which seems independent of this issue.
,
Oct 30
,
Nov 9
It makes more sense to compare arm64 with arm (32-bit) for LLD no ThinLTO, since the generated .o files are ELF files. So llvm-nm output of arm (32-bit) has outputs like: 00000000 r .L.str 00000017 r .L.str.1 00000019 r .L.str.2 0000001e r .L.str.3 00000026 r .L.str.4 , which SuperSize uses to find string literals. These fields are missing for arm64. Worse, the addresses corresponding to 'r' are all '0000000000000000'. Potential causes: - Additional debug info flag needs to be enabled? - llvm-nm needs is not properly dumping data. - LLVM does not store the data we need in .symtab. Meanwhile dumping strings in arm64 .o files do not show ".L.str".
,
Jan 11
This issue has an owner, a component and a priority, but is still listed as untriaged or unconfirmed. By definition, this bug is triaged. Changing status to "assigned". Please reach out to me if you disagree with how I've done this. |
|||
►
Sign in to add a comment |
|||
Comment 1 by huangs@google.com
, Oct 30