2010/4/23 ольга крыжановская <olga.kryzhanov...@gmail.com>:
> Nicolas, Roland can state the exact reason for the design choice but
> as far as I know it was an explicit choice *not* to use interposers.
> There are a couple of warnings in his notes to verify for each update
> that no interposing *must* happen.

AFAIK I can bring some light into the story.
Interposition has some serious side effects:
1. Interposition only works reliable for executables but *NOT* for
shared libraries. It can't be used if we want to use AST stdio or sfio
in libperl, libfreetype2 or X11. The implementation in ON allows that
a single application or shared library can mix different types of
stdio and other function packages without trouble.
2. Interposition is very slow. I helped Roland looking at the time
needed to load the libraries and reducing the overhead of loading
them. Using interposition destroys this advantage and affects the
start up time of every application which uses libast.
3. Interposition requires that the ABI of shared libraries must match
100% the API it replaces. This would be a disaster in many cases like
stdio because the change in ABI is actually what fixed so many
problems, i.e. stdio, regex, fnmatch, ... are all great examples where
the Solaris API is broken beyond repair. Unfortunately Sun was never
willing to fix those problems and added kludges on top of the existing
problems instead. The actual *bold* step of replacing the
implementation (and keep the old available via ELF version) was sadly
never done.

Irek
_______________________________________________
ksh93-integration-discuss mailing list
ksh93-integration-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss

Reply via email to