The IL linker operates over the IL code (typically C# produced, but we are working now on adding also F#) and produces the minimal set needed to run.
Then we compile the resulting linked IL to ARM code, and then we run the result using the C linker (so the same removal of unused code takes place, this time for the C bits of Mono).