http://sourceware.org/bugzilla/show_bug.cgi?id=13364
Bug #: 13364 Summary: ICF may not be as thorough as one would expect Product: binutils Version: 2.23 (HEAD) Status: NEW Severity: normal Priority: P2 Component: gold AssignedTo: i...@airs.com ReportedBy: mh-sourcew...@glandium.org CC: ccout...@google.com Classification: Unclassified When linking Mozilla's libxul.so with GNU gold (GNU Binutils 2.22.51.20111010) 1.11 on ARM, with code built as Thumb-2, with either --icf=safe or --icf=all, a lot of functions one would expect to be folded aren't. I figured this when looking what 2 bytes long functions content could be, and it turns out a lot (if not all) are just doing "bx lr", the ARM/Thumb equivalent to "ret". But not all the functions doing so are folded: $ objdump -t libxul.so | awk '$3=="F" && $5=="00000002" {print $1}'| sort | uniq -c | sort -n 1 00390fc5 1 008545e9 1 0085463d 1 00854655 1 0085467d 1 0085c109 1 0093948d 1 00939cd1 1 0093be95 1 009498e9 1 0095ca4d 1 0095d79d 1 0095d7dd 1 00969ed9 1 0096dffd 1 00992691 1 009b90c9 1 009b90cd 1 009e6781 1 009e9ced 1 009f8649 1 00a18535 1 00a40001 1 00a5e30d 1 00a60f79 1 00a60f7d 1 00a66f35 1 00a680cd 1 00ab97f5 1 00ac57b1 1 00ac57b5 1 00aed3dd 1 00aed3e1 1 00afd821 1 00afd825 1 00b03575 1 00b03579 1 00b0357d 1 00b03581 1 00b089ad 1 00b089b1 2 003102d5 2 00854545 2 00854611 2 0085b105 2 0096bed9 2 009d9129 2 00a05855 2 00afd81d 3 003a6b77 3 00832181 3 00854505 4 00296963 41 00892571 721 001e98a5 (this list is with --icf=all, the --icf=safe list is longer) Corresponding disassembly: 00390fc4 <_ZN14nsMenuBarFrame19LockMenuUntilClosedEb>: 390fc4: 4770 bx lr 008545e8 <_ZN7mozilla6layers29BasicShadowableContainerLayer7AsLayerEv>: 8545e8: 4770 bx lr 0085463c <_ZN7mozilla6layers25BasicShadowableImageLayer7AsLayerEv>: 85463c: 4770 bx lr 00854654 <_ZN7mozilla6layers25BasicShadowableColorLayer7AsLayerEv>: 854654: 4770 bx lr 0085467c <_ZN7mozilla6layers26BasicShadowableCanvasLayer7AsLayerEv>: 85467c: 4770 bx lr 0085c108 <_ZN7mozilla6layers17ContainerLayerOGL8GetLayerEv>: 85c108: 4770 bx lr 00296962 <_ZN13nsGridLayout216CastToGridLayoutEv>: 296962: 4770 bx lr 001e98a4 <JSD_JSContextInUse>: 1e98a4: 4770 bx lr etc. A few disassemble to something like: 0093948c <JS_AnchorPtr>: 93948c: 4770 bx lr 93948e: bf00 nop but still have a size of 2 in the symbols table. -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils