[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Dmitry Bely <dbely@m...> |
| Subject: | Re: [Caml-list] No unused code linking? |
malc <malc@pulsesoft.com> writes: >> I am thinking of reducing the size of ocamlopt-generated executables that >> easily grows to 1Mb and above. The problem as I see it is that any module is >> linked as a single whole (as all its functions are placed into the single >> object file), no matter what is actually used. So almost all >> stdlib/otherlibs become quickly linked into even not very complex project. >> >> In C world there is a solution that lets the linker to do its job smartly >> for monolitic object files: place each function into the separate section >> (gcc's "-ffunction-sections" or msvc's "-Gy" options) and then ask linker >> to eliminate unused sections during the link stage. Can anything similar be >> done with Ocamlopt compiler? >> >> Of course, placing each function into the separate section is not a problem - >> modifications of the code generator would be minimal. The real problem are >> the frame tables - the single table references all functions in the >> module. Maybe they can be split and linked separately? What Ocaml >> developers think of that? > > I have played with this idea myself, the problem is not only frametables > but also the module header (which more or less contains pointers to all > externally visible(don't take my word on it, been a while, might as well > be ALL) symbols. IMHO, each header item can be placed into the separate DATA section, so it's not the real problem (the frame table is). > All in all this would require quite an effort in restructuring almost > everything. I wouldn't count on it. Probably you are right, but I still hope for a miracle :-) - Dmitry Bely