Rod Evans: Surfing With a Linker Alien

Surfing with the Linker-Aliens

[31] elfdiff   [ February 01, 2018 ]

The elfdiff(1) utility analyzes two ELF files and reports the significant differences between them. This utility is targeted at diagnosing the underlying changes that occur within an ELF file through a series of development updates.

[30] Symbol Capabilities   [ August 02, 2010 ]

Symbol capabilities are capabilities that are associated with individual functions, or initialized data items, within an object. Symbol capabilities allow for the presence of multiple instances of a function within a single object. The runtime linker selects the best one for the running system. This is how Solaris provides optimized implementations of routines (e.g. memcpy) with a generic fallback.

[29] Direct Binding - the -zdirect/-Bdirect options, and probing   [ July 21, 2008 ]

The difference between the -z direct and -B direct options, and a useful technique for handling the case where the lazy dependency is not present at runtime.

[28] OSNet Direct Binding   [ May 14, 2008 ]

The core Solaris OS is now built with Direct Binding. A discussion of the benefits, and the process used to get there safely.

[27] We've moved - /usr/ccs/bin commands, that is   [ June 25, 2007 ]

The link-editor, and associated utilities, have moved from /usr/ccs/bin utilities to /usr/bin.

[26] '_init'/'_fini' not found - use the compiler drivers   [ December 19, 2006 ]

It's best not to use ld() directly to build any executables or shared objects, let the compiler drivers do it for you.

[25] Displacement Relocation Warnings - what do they mean?   [ October 13, 2006 ]

[24] Dynamic Object Versioning - specifying a version binding   [ October 13, 2006 ]

How to restrict an application to only use the interfaces defined by specific ELF versions.

[23] Changing Search Paths with crle(1) - they are a replacement   [ October 04, 2006 ]

The crle utility replaces the system default library directories, and can easily brick your system if you are not careful. An explanation, and how to recover.

[22] Wrong ELF Class - requires consistent compiler flags   [ April 26, 2006 ]

How "wrong ELFCLASS" errors can be caused by missing or inconsistent compiler flags.

[21] C++ Dynamic Linking - symbol visibility issues   [ March 16, 2006 ]

The challenges of C++ symbol visibility in a dynamic linking environment, and singletons.

[20] Runtime Token Expansion - some clarification   [ December 14, 2005 ]

The limitations of runtime token processing.

[19] A Very Slow Link-Edit - get the latest patch   [ October 13, 2005 ]

[18] Init and Fini Processing - who designed this?   [ September 27, 2005 ]

People often assume far more from runtime .init/.fini processing than is actually provided, and use it far too casually. Such code runs in a limited environment, and with many caveats.

[17] Finding Symbols - reducing dlsym() overhead   [ September 09, 2005 ]

Techniques for avoiding the unexpected costs that can be incurred dlsym() in a lazy loading environment.

[16] The Link-editors - a source tour   [ June 14, 2005 ]

[15] Loading Multiple Files - same name, different directories   [ May 08, 2005 ]

[14] My Relocations Don't Fit - Position Independence   [ April 26, 2005 ]

Relocation "does not fit" usually result from forgetting to create position independent (PIC) code.

[13] Loading Relocatable Objects at Runtime - Very Expensive   [ February 02, 2005 ]

[12] Interface Creation - using the compilers   [ January 02, 2005 ]

The limitations of using mapfiles for interface creation, particularly with languages like C++, and the alternative of using source visibility attributes.

[11] Static Linking - where did it go?   [ December 06, 2004 ]

Starting with Solaris 10 you can no longer build a completely static executable. A discussion of the underlying reasons, and of the resulting benefits.

[10] Shared Object Filters   [ October 22, 2004 ]

Standard and Auxiliary filters

[9] Tracing a link-edit   [ September 29, 2004 ]

How to use the extensive built in linking debug facility to trace what your programs are doing at runtime.

[8] Relocations - careful with that debugging flag   [ August 30, 2004 ]

The potential cost of debug options at runtime can be higher than you realize.

[7] Dynamic Object Versioning   [ August 22, 2004 ]

Examining ELF versioning within the core OS.

[6] Lazy Loading - there's even a fall back   [ August 01, 2004 ]

A discussion of the potentially expensive fall back mechanism that underlies lazy loading.

[5] Dependencies - perhaps they can be lazily loaded   [ July 27, 2004 ]

Consider using lazy loading to make your applications start faster and do less unnecessary work.

[4] Linker Alien Spotting   [ July 22, 2004 ]

[3] Dependencies - define what you need, and nothing else   [ July 15, 2004 ]

The costs of linking against libraries you don't use, and how to detect when you're doing it.

[2] LD_LIBRARY_PATH - just say no   [ July 10, 2004 ]

The many ways in which LD_LIBRARY_PATH will let you down. There are usually better answers.

[1] Hello there   [ July 07, 2004 ]