The most common of the full relink messages is the internal free space exhausted message:
$ cat test1.c
int main() { return 0; }
$ rm a.out
# This creates test1.o
$ cc -xildon -c -g test1.c
# This creates a.out with minimal debugging information.
$ cc -xildon -z i_verbose -g test1.o
# A one-line compile and link puts all debugging information into a.out.
$ cc -xildon -z i_verbose -g test1.c
ild: (Performing full relink) internal free space in output file exhausted (sections)
$
These commands show that going from a one-line compile to a two-line compile causes debugging information to grow in the executable. This growth causes ild to run out of space and do an full relink.