-
Go Linkage Names
All Go code lives in a package. Every Go source file starts with a package declaration which names the package that it lives in. A package name is a simple identifier; besides appearing in a package clause, package names are also used when referring to names imported from another package. That poses the problem of…
-
Protected Symbols
Now for something really controversial: what’s wrong with protected symbols? In an ELF shared library, an ordinary global symbol may be overridden if a symbol of the same name is defined in the executable or in a shared library which appears earlier in the runtime search path. This is called symbol interposition. It is often…
-
Transition
I’ll read anything which Iain Banks writes, but, frankly, his recent novel Transition was rather weak. I think he was a bit low on the idea bank for this one. This is one of the novels where he sets up surprises, but unfortunately they were not surprising. The ideas which were meant to be challenging…
-
The Argent Age
The dramatic growth of income inequality in the U.S. over the last 30 to 40 years may mark the end of a long experiment in U.S. society, starting with Teddy Roosevelt and ending with Richard Nixon (things were already changing under Jimmy Carter). Teddy Roosevelt was the first of the progressive presidents, and was a…
-
Version Scripts
I recently spent some time sorting through linker version script issues, so I’m going to document what I discovered. Linker symbol versioning was invented at Sun. The Solaris linker lets you use a version script when you create a shared library. This script assigns versions to specific named symbols, and defines a version hierarchy. When…