-
crt0.o
- This initialization file is for programs executing in standalone mode,
without the use of any bootloader or debugging stub. The file populates the
reset, interrupt, exception, and hardware exception vectors and invokes the
second stage startup routine
_crtinit. On
returning from _crtinit, it ends the program by
infinitely looping in the _exit label.
-
crt1.o
- This initialization file is for application debugging in a
software-intrusive manner. It populates all the vectors except the breakpoint
and reset vectors and transfers control to the second-stage
_crtinit startup routine.
-
crt2.o
- This initialization file is for executable loading using a bootloader. It
populates all the vectors except the reset vector and transfers control to the
second-stage
_crtinit startup routine. On
returning from _crtinit, it ends the program by
infinitely looping at the _exit label. Because
the reset vector is not populated, on a processor reset, control is transferred
to the bootloader. The bootloader can reload and restart the program.
-
crt3.o
- This initialization file is for the circumstance when the executable does
not use any vectors and wishes to reduce code size. It populates only the reset
vector and transfers control to the second stage
_crtinit startup routine. On returning from _crtinit, it ends the program by infinitely looping
at the _exit label. The GNU linking mechanism
does not pull in any of the interrupt and exception handling related routines
because the other vectors are not populated. This helps save code space.