3/15/72 CORE (V) NAME format of core image SYNOPSIS -- DESCRIPTION Three conditions cause UNIX to write out the core image of an executing program: the program gener- ates an unexpected trap (by a bus error or ille- gal instruction); the user sends a "quit" signal (which has not been turned off by the program); a trap is simulated by the floating point simula- tor. The core image is called "core" and is written in the current working directory (pro- vided it can be; normal access controls apply). The size and structure of the core image file de- pend to some extent on which system is involved. In general there is a 512-byte area at the end which contains the system's per-process data for that process. The remainder represents the ac- tual contents of the user's core area when the core image was written. In the current system, this area is variable in size in that only the locations from user 0 to the program break, plus the stack, is dumped. When any trap which is not an I/O interrupt oc- curs, all the useful registers are stored on the stack. After all the registers have been stored, the contents of sp are placed in the first cell of the user area; this cell is called u.sp. Therefore, within the core image proper, there is an area which contains the following registers in the following order (increasing addresses): (u.sp)->sc mq ac r5 r4 r3 r2 r1 r0 pc (at time of fault) processor status (at time of fault) The last two are stored by the hardware. it fol- lows that the contents of sp at the time of the faul were (u.sp) plus 22(10). The actual location of this data depends on which system is being used. In the current system, which has relocation and protection hardware, the stack discussed above is the system stack, and is kept in the per-user area; in older systems, there is only one stack, and it is located in the user's core area. In general the debugger db(I) should be used to deal with core images. FILES -- SEE ALSO -- DIAGNOSTICS -- BUGS -- OWNER ken, dmr