1 |
On Friday 30 May 2008 13:22:15 Diego 'Flameeyes' Pettenò wrote: |
2 |
> The only thing that can be broken by using --as-needed is code that |
3 |
> assumes the order in calling the .init sections of a set of shared |
4 |
> objects. Such an order is not only changed by --as-needed usage but by |
5 |
> any other change in the loading mechanism. It is strictly related to |
6 |
> glibc at this point as far as I can tell. |
7 |
|
8 |
It's not just the order, it also breaks things that rely on the .init section |
9 |
being called at all to register themselves with the core application |
10 |
(with --as-needed, the .so doesn't get loaded in the first place, so it |
11 |
doesn't get a chance to run anything). |
12 |
|
13 |
> It's interesting to note that Microsoft _did_ think of this problem when |
14 |
> designing the .NET framework, and they answer is ensuring just that the |
15 |
> static constructor will be called (right) before any static method or |
16 |
> attribute is referenced and (right) before any object of the given class |
17 |
> is istantiated. They don't get otherwise an absolute order in which |
18 |
> static constructors are called. |
19 |
|
20 |
That's /an/ answer, but it doesn't provide all the functionality that static |
21 |
objects in C++ have. |
22 |
-- |
23 |
gentoo-dev@l.g.o mailing list |