Definitely more work on linker functionality.

Advanced linker technology is a great part of what makes C great for systems programming in user-land:

  - weak symbols
  - explicit interposition (the INTERPOSE flag
    on Solaris/Illumos, LD_PRELOAD generally)
  - collision avoidance (recording dependencies where
    they are needed, rather than globally)
  - direct binding (Solaris/Illumos) /
    versioned symols (Linux)
  - libdl / dlopen() and friends, including dladdr()
    (LoadLibraryEx() and friends on Windows)
  - filters and auxilliary filters (Solaris/Illumos)
  - audit objects
Static linking could have a lot of the above, and, really really ought to, but static linking technology for C is stuck in 1980. This need not be so for Rust! Please, please, if you build static linking for any language, make sure to build ELF-style semantics, not C static linking semantics!