[PATCH] D54369: [llvm-size][libobject] Add explicit "inTextSegment" methods similar to "isText" section methods to calculate size correctly.
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 10 13:26:01 PST 2018
MaskRay added inline comments.
================
Comment at: include/llvm/Object/ELFObjectFile.h:767
+ (getSection(Sec)->sh_flags & ELF::SHF_EXECINSTR ||
+ (!(getSection(Sec)->sh_flags & ELF::SHF_WRITE)));
+}
----------------
The parentheses outside of `!` are redundant.
`GNU size` uses Berkeley format by default (`static int berkeley_format = BSD_DEFAULT;`)
I'd say it uses a weird counting https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob;f=binutils/size.c;h=3c72e484752d0272a24ac628f497f89ecf36d547;hb=refs/heads/master#l459
459 if ((flags & SEC_CODE) != 0 || (flags & SEC_READONLY) != 0)
460 textsize += size;
461 else if ((flags & SEC_HAS_CONTENTS) != 0)
462 datasize += size;
463 else
464 bsssize += size;
Basically `SHF_EXECINSTR` sections (`.text`) + `!SHF_WRITE` sections (`.rodata .eh_frame` ...).
I feel the name `inTextSegment` is a bit misleading. How about `isBerkeleyText`?
`inDataSegment` may be renamed to `isBerkeleyData`.
Repository:
rL LLVM
https://reviews.llvm.org/D54369
More information about the llvm-commits
mailing list