Category: Programming

  • Linkers part 14

    Link Time Optimization I’ve already mentioned some optimizations which are peculiar to the linker: relaxation and garbage collection of unwanted sections. There is another class of optimizations which occur at link time, but are really related to the compiler. The general name for these optimizations is link time optimization or whole program optimization. The general…

  • Linkers part 13

    Symbol Versions Redux I’ve talked about symbol versions from the linker’s point of view. I think it’s worth discussing them a bit from the user’s point of view. As I’ve discussed before, symbol versions are an ELF extension designed to solve a specific problem: making it possible to upgrade a shared library without changing existing…

  • Linkers part 12

    I apologize for the pause in posts. We moved over the weekend. Last Friday at&t told me that the new DSL was working at our new house. However, it did not actually start working outside the house until Wednesday. Then a problem with the internal wiring meant that it was not working inside the house…

  • Linkers part 11

    Archives Archives are a traditional Unix package format. They are created by the ar program, and they are normally named with a .a extension. Archives are passed to a Unix linker with the -l option. Although the ar program is capable of creating an archive from any type of file, it is normally used to…

  • Linkers part 10

    Parallel Linking It is possible to parallelize the linking process somewhat. This can help hide I/O latency and can take better advantage of modern multi-core systems. My intention with gold is to use these ideas to speed up the linking process. The first area which can be parallelized is reading the symbols and relocation entries…