ECEn 324 Review Topics: Chapter 7
ECEn 324 Review Topics: Chapter 7
- Can you explain what each of the tools invoked by a compiler
driver does, including the pre-processor, the compiler proper, the
assembler, and the linker? (What kinds of files does each read and
write?)
- What are the main tasks that any linker must perform?
- What are the three types of object files?
- ELF relocatable object files:
- What types of information are stored in an ELF relocatable object
file?
- What sections are included in the file and why? (Why separate
each from the others?)
- What information exists specifically to allow relocation?
(What information is contained within a relocation entry and
how is relocation handled for PC-relative and absolute addresses?
Which sections are affected by relocation?)
- What kind of symbol information is present?
- How are variables and functions with the "static" attribute
handled differently?
- What are possible outcomes when global symbols are multiply
defined?
- How are static libraries organized and how much of each is
included by the linker?
- What algorithm is used by the linker to resolve symbols for a
list of relocatable object files and archives? (What "baffling
link-time errors" can result?)
- What kind of information is present in an ELF executable object
file? (What are key differences with relocatable object files?)
- What are the actions taken by a loader? (What additional
insight comes from the text's discussion of processes, virtual memory,
and memory mapping?)
- What are the differences between static and dynamic linking?
(Consider memory layout, actions of the linker, actions of the loader,
the use of shared libraries, etc.)
- What functionality is provided to application programs under
Linux to load and link shared libraries at run (not load) time?
- Self test: Can you complete all practice problems in Chapter 7?
Updated for 2nd Edition of CS:APP