On 16/09/2010, at 9:56 AM, Manuel M T Chakravarty wrote:
>> I don't know what the difference between "relocatable contents" and "the
>> whole .o file" is, or how many sections we're using. In my build tree from
>> Sept 9th the resulting file is 44MB and it made that ok.
>
> For details on the file format:
>
> * ABI reference:
> http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/MachORuntime/Reference/reference.html
> * Background info:
> http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/MachOTopics/0-Introduction/introduction.html
Alright, so a section is a fixed purpose region of a segment. They're all
predefined, so we can't work around the problem by making more.
Using otool, the sizes of the sections in HSghc-6.13.20100909.o for my working
build of Sept 9th are:
Segment section size (hex) size (dec)
__TEXT __text ebed60 15,461,728
__TEXT __string 0
__TEXT __picsymbol_stub 0
__TEXT __symbol_stub 0
__TEXT __const 8e3c0
__TEXT __literal4 0
__TEXT __literal8 0
__DATA __data 92130
__DATA __la_symbol_ptr 0
__DATA __nl_symbol_ptr 90
__DATA __dyld 0
__DATA __const 54bb0
__DATA __mod_init_func 0
__DATA __mod_term_func 0
__DATA __bss 0
__DATA __common 0
__IMPORT __jump_table 0
__IMPORT __pointers 4
The size of each section can only be 0xffffff (16 MiB). That means we'd already
used 92% of the available space in the text section before the recent changes.
We can also look at the sizes of the individual .o files we're trying to link
together. This is with the unneeded NCGs already removed:
broken working
Total size of .o files 98.024 MB 88.896 MB
Total size of text in .o files 16.084 MB 14.317 MB
The size of the text section in HSghc is larger than the text of all the .o
files by about 8%. Maybe this is padding, not sure.
(15.461 MB / 14.317 MB) - 1) * 100 = 8%
Using this figure, if we were to link together all the .o files in the broken
version, then the size of the text section would need to be:
16.084 MB * 1.08 = 17.370 MB
So I reckon we need to cut out at least (17.370 MB - 16.777 MB = 0.593 MB) of
bloat for this to link.
For interests sake, I also looked at the total size of the text sections for
the .o files belonging to each NCG:
Alpha: 1k (it's already commented out)
SPARC: 250k
PPC: 260k
x86: 378k
I'll try rolling back the changes to the containers library, but we may want to
break up HSghc and hack GHCi as a contingency plan. If we don't break it up
we'll still be close to the size limit, and might encounter problems trying to
patch the 7.0 stable branch.
Ben.
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc