Search results for: “Linkers”
-
Linkers part 5
Shared Libraries Redux Yesterday I talked about how shared libraries work. I realized that I should say something about how linkers implement shared libraries. This discussion will again be ELF specific. When the program linker puts position dependent code into a shared library, it has to copy more of the relocations from the object file…
-
Linkers part 4
Shared Libraries We’ve talked a bit about what object files and executables look like, so what do shared libraries look like? I’m going to focus on ELF shared libraries as used in SVR4 (and GNU/Linux, etc.), as they are the most flexible shared library implementation and the one I know best. Windows shared libraries, known…
-
Linkers part 3
Continuing notes on linkers. Address Spaces An address space is simply a view of memory, in which each byte has an address. The linker deals with three distinct types of address space. Every input object file is a small address space: the contents have addresses, and the symbols and relocations refer to the contents by…
-
Linkers part 2
I’m back, and I’m still doing the linker technical introduction. Shared libraries were invented as an optimization for virtual memory systems running many processes simultaneously. People noticed that there is a set of basic functions which appear in almost every program. Before shared libraries, in a system which runs multiple processes simultaneously, that meant that…
-
Linkers part 1
I’ve been working on and off on a new linker. To my surprise, I’ve discovered in talking about this that some people, even some computer programmers, are unfamiliar with the details of the linking process. I’ve decided to write some notes about linkers, with the goal of producing an essay similar to my existing one…