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.