On Wed, Dec 18, 2013 at 10:27 AM, harry <volderm...@hotmail.com> wrote:

> Brandon Allbery wrote
> > I don't understand the question. Whether a library is split-objs or not
> > does not affect how you link an executable, only the space/time
> efficiency
> > trade-off of doing so. And while in theory you might see improvements by
> > split-objs-ing an executable, it doesn't make a whole lot of sense to
> > include dead code in an executable in the first place (whereas
> > functionality of a library that you aren't using is dead for *your* use
> > but
> > not for other consumers of the library).
>
> I don't understand the answer :-)
>
> Let's say library A exports functions a1 and a2. I build the library with
> --split-objs, so a1 and a2 go into separate object files. I also have an
> executable B that imports A(a1). When I link B, I would expect that it only
> includes A.a1. However, A.a2 has also got in. (At least that's what's
> happened according to the bug report on Cabal.)
>
> Is this the expected behaviour? Am I doing something wrong?
>

If that happens, then there is some dependency between them so that the
linker found it necessary to include both. (For example, a1 calls a2.)
Alternately, you are using dynamic linking; split-objs only makes sense for
static linking, for dynamic linking the generated .so/.dylib/.dll will
always include all functions, and is shared between all users (so splitting
it up is neither necessary nor desirable).

-- 
brandon s allbery kf8nh                               sine nomine associates
allber...@gmail.com                                  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to