Chapter 13.Debugging Programs That Use OverlaysIf your program is too large to fit completely in your target system’s memory, you can sometimes useoverlays to work around this problem. gdb provides some support for debugging programs that useoverlays.13.1. How Overlays WorkSuppose you have a computer whose instruction address space is only 64 kilobytes long, but which hasmuch more memory which can be accessed by other means: special instructions, segment registers,or memory management hardware, for example. Suppose further that you want to adapt a programwhich is larger than 64 kilobytes to run on this system.One solution is to identify modules of your program which are relatively independent, and need notcall each other directly; call these modules overlays. Separate the overlays from the main program,and place their machine code in the larger memory. Place your main program in instruction memory,but leave at least enough space there to hold the largest overlay as well.Now, to call a function located in an overlay, you must first copy that overlay’s machine code fromthe large memory into the space set aside for it in the instruction memory, and then jump to its entrypoint there.Data Instruction LargerAddress Space Address Space Address Space+-----------+ +-----------+ +-----------+| | | | | |+-----------+ +-----------+ +-----------+* -- overlay 1| program | | main | .----| overlay 1 | load address| variables | | program | | +-----------+| and heap | | | | | |+-----------+ | | | +-----------+* -- overlay 2| | +-----------+ | | | load address+-----------+ | | | .-| overlay 2 || | | | | |mapped ---+ +-----------+ | | +-----------+address | | | | | || overlay | * -’ | | || area | * ---’ +-----------+* -- overlay 3| | * ---. | | load address+-----------+ ‘--| overlay 3 || | | |+-----------+ | |+-----------+| |+-----------+A code overlayThe diagram above shows a system with separate data and instruction address spaces. To map anoverlay, the program copies its code from the larger address space to the instruction address space.Since the overlays shown here all use the same mapped address, only one may be mapped at a time.For a system with a single address space for data and instructions, the diagram would be similar,