Relocations - careful with that debugging flag

I received an application from a customer the other day. It's quite a big sucker, consisting of the application and over 70 shared objects (that's besides the system objects that also get used). % size -x main \*.so main: 2df35c + 2675a4 + 80918f8 = 0x85d81f8 libxxx.so: 64d4d9c + 9af9f6 + 19604ba = 0x87e4c4c libyyy.so: 4db7aeb + 76aa4c + 32cc16c = 0x87ee6a3 libzzz.so: 3f347ce + d8ebb1 + 4642a3b = 0x9305dba .... The customer has complained that it...

Monday, August 30, 2004 | Technologies | Read More

Dynamic Object Versioning

For some time now, we've been versioning core system libraries. You can display version definitions, and version requirements with pvs(1). For example, the latest version of libelf.so.1 from Solaris 10, provides the following versions: % pvs -d /lib/libelf.so.1 libelf.so.1; SUNW_1.5; SUNW_1.4; .... SUNWprivate_1.1; So, what do these versions provide? Shared object versioning has often been established with various conventions of...

Sunday, August 22, 2004 | Technologies | Read More

Lazy Loading - there's even a fall back

In a previous posting I described the use of lazy loading. Of course, when we initially played with an implementation of this technology, a couple of applications immediately fell over. It turns out that a fall back was necessary. Let's say an application developer creates an application with two dependencies. The developer wishes to employ lazy loading for both dependencies. % ldd main foo.so => ./foo.so bar.so => ./bar.so ... The...

Sunday, August 1, 2004 | Technologies | Read More

Dependencies - perhaps they can be lazily loaded

In a previous posting I stated that you should only record those dependencies you need, and nothing else. There's another step you can take to reduce start-up processing overhead. Dynamic objects need to resolve symbolic references from each other. Function calls are typically implemented through an indirection that allows the function binding to be deferred until the function call is first made. Because of this deferral, it is also possible to cause the defining dependency to...

Tuesday, July 27, 2004 | Technologies | Read More

Linker Alien Spotting

Excellent, Mike has decided to join the party.

Thursday, July 22, 2004 | Technologies | Read More

Dependencies - define what you need, and nothing else

I recently attended Usenix, where Bryan explained how DTrace had been used to uncover some excessive system load brought on by the behavior of one application. A member of the audience asked whether the application was uncovering a poorly implemented part of< the system. Bryan responded that in such cases the system will always be analyzed to determine whether it could do better. But there comes a point, that if an application requests an expensive service, that's what it...

Thursday, July 15, 2004 | Technologies | Read More