HomePhabricator

ELF: Move definitions from {Dynamic,ELF}File.h to .cpp files.
Audit RequiredrL234808

Description

ELF: Move definitions from {Dynamic,ELF}File.h to .cpp files.

DynamicFile and ELFFile are instantiated for four different types,
ELF{32,64}{BE,LE}. Because the classes are instantiated in each
compilation unit, including the header file makes object files
10MB larger.

On Windows, issue of excessive template instantiation is critical,
since the regular COFF file supports only up to 65534 sections.
(We could use the extended COFF file format, but generating that
much COMDAT sections is not a good thing in the first place
because it means long compile time and long link time.)

I confirmed that this change makes AArch64TargetHandler.cpp.o
from 21MB to 8.5MB. It feels still too large, but I think it's
a good start.

Details

Auditors
Bigcheese
Committed
ruiuApr 13 2015, 3:52 PM
Parents
rL234807: Allow printing functions with an optional annotationwriter
Branches
Unknown
Tags
Unknown